在Linux系統中,測試硬碟的性能一般使用fio工具實現,fio是Flexible I/O Tester的縮寫。是一個常受歡迎的、用於測試存儲性能的工具,而且還可以模擬多種不同的I/O模式和工作負載。 一般我們要測試一塊硬碟的性能,一般需要進行隨機寫入測試、隨機讀取測試、順序寫入測試、順序讀取測試和 ...
1 簡介
Yocto 項目是一個開源協作項目,它提供模板、工具和方法,幫助您為嵌入式產品創建基於Linux的定製系統,而無需考慮硬體架構。QA團隊負責驗證一些可用的工具和組件,以及支持的不同平臺的image完整性和功能性。
2 目標和任務
測試過程主要側重於跟蹤和審查Yocto項目及其參考系統和內部項目的質量和性能。該計劃還包括識別和跟蹤需要改進的領域、回歸、驗證增強功能和錯誤、開發測試方法(重點是自動測試)。除非另有說明,例如作為驗證新功能過程的一部分,否則文檔和許可狀態不包括在測試過程的範圍內。
2.1 測試目標
Yocto 項目 X.X 周期的整體測試計劃旨在驗證當前開發中的整體增強功能,並檢測可能出現的回歸。
- Bug和功能驗證
- 運行回歸測試
- 對所需領域(如 Toaster)進行探索性測試
- 改進和擴展整體自動化
2.2 任務
下麵列出了本測試計劃確定的所有任務。
- 一般組件測試
- 錯誤和功能報告
- 錯誤和功能驗證
- 測試自動化
- 探索性測試
- 為所需領域創建測試計劃
- 與開發人員一起審查測試方法
- 為主要功能指派QA負責人
3 測試範圍
概述了測試流程,如測試領域、類型、周期和報告,以及每項驗證活動的摘要和目標。各部分可鏈接到包含更多細節或相關信息的其他文章。請註意,本文或此處鏈接的文章中提供的信息可能會根據需要進行修改,以反映當前版本的Yocto項目所開展的實際活動。
4 測試策略
4.1 測試內容
Yocto項目下的每個內部項目都是需要測試的領域。測試區域按其功能性質分組如下:
- 構建系統
- 運行時測試
- 開發工具
- Distro 測試
4.1.1 構建系統
構建引擎及其周邊組件,為構建映像或烘焙軟體提供手段。在這一區域將執行構建時測試。目前oe-selftest涵蓋所有Bitbake、oe-core和Metadata自動測試。
- BitBake
對BitBake進行功能測試,BitBake是一個構建引擎,它的所有功能和組件都能在各種配置和場景下運行。
- Toaster
Toaster是Bitbake構建系統和Yocto項目內Poky發行版的網路介面。該項目原名為Web Hob/Webhob/webhob,你可能仍會在文檔中找到對舊名的引用。Toaster測試計劃維基涵蓋了針對Toaster的所有驗證。測試過程主要集中在驗證從構建過程中收集到的數據,以及驗證Toaster GUI的正確功能,例如
-
用戶界面
-
與bitbake進行的後臺交互
-
後臺與資料庫的交互,用於存儲和訪問構建信息
-
測試目標只涉及Toaster現有功能的正面測試。
-
執行探索性測試,重點關註更新的功能;這有時會產生新的測試用例。
-
元數據(Metadata)
對Yocto項目核心元數據的測試主要是通過上述BitBake和Toaster 等其他測進行的。我們還在meta-yocto測試運行模板中設置了涵蓋元數據的特定測試,並定期在Full Pass上運行。
- 發行版測試
發行版測試旨在使用yocto-autobuilder捕捉發行版特有的bug。所有測試都在相同的硬體上運行,並更新了所有操作系統。使用的發行版包括Fedora、Ubuntu、CentOS、OpenSuse及其最新更新版本。如果發行版在發佈期間有測試版,則 n+1(測試版)也將進行驗證。
更多詳情,請參閱 "發行版測試計劃"。
4.1.2 運行時測試
主要針對目標操作系統或其附帶的應用程式,作為構建過程的輸出。
我們使用映像測試來運行自動測試。
- 冒煙測試
冒煙測試由公共AutoBuilder 執行,所有BSP構件均在此構建,並檢查構建是否正確。在公共AutoBuilder中,還對QEMU映像運行映像測試。
- 每周測試
包括運行所有自動BSP測試,這些測試的目標是每周針對每周構建運行一次。鏡像測試維基頁面介紹了測試的啟用和運行。測試適用於QEMU BSP和安裝在真實硬體上的BSP。
- 全量測試
全量測試旨在運行非自動化的BSP測試用例。它們擴展了每周測試的覆蓋範圍,包含更複雜的場景,如更改運行級別或音頻測試。
- 壓力測試
壓力測試在Beagleboard和genericx86-64 BSP上運行。詳情如下:
-
Beaglebone core-image-sato-sdk映像使用LTP和Crashme壓力測試進行測試
-
genericx86-64 core-image-lsb-sdk映像使用Helltest和Crashme壓力測試進行測試
-
系統性能(未實施)
目標:跟蹤目標系統的運行時性能;跟蹤帶有gcc安全標記的目標系統的運行時性能;
指標:systemd 和 sysvinit 的啟動時間;從Buildhistory跟蹤回歸的image大小;Piglit測試套件結果;可集成的其他基準,如openbenchmarking網站上列出的基準。
4.1.3 開發人員工具
-
應用程式開發工具包(Application Development Toolkit):ADT測試包括meta-toolchain-sdk和用戶構建sd 測試。它將在每周測試和全量測試中涉及。
- 交叉工具鏈安裝和編譯測試
- 可重置SDK
- 可擴展 SDK (eSDK)
- 工具鏈壓縮包
- yocto 構建樹
-
Eclipse IDE插件:Eclipse 插件測試將涵蓋基本功能。這包括安裝、配置Yocto項目ADT設置、Yocto BSP、Bitbake 項目以及項目編譯和部署到目標。根據將要實現的功能,將添加新的測試用例,以支持Windows和Mac。這將在"功能"部分詳細介紹。
- 無頭構建
- 創建 C/C++工程
- 調試/部署
- 用戶空間工具
- Bitbake工程
根據SDK的新功能(如 MacOS 和 Windows 支持),將運行其他測試以驗證新功能。
有關eclipse測試自動化,請參閱Eclipse測試框架部分。
- 構建設備
將測試構建設備的基本功能。測試包括成功構建構建設備鏡像。
4.1.4 測試周期
以下是最常用的通用測試周期,但每個Yocto項目的測試版本都可能發生變化。
-
冒煙測試:簡短快速的自動測試,執行時間不超過 10 分鐘。
- 測試範圍:在AutoBuilder上觸發。
- 目標:
- 無錯誤完成構建;
- 檢查QEMU映像的基本功能,如啟動、網路、軟體包管理器等;
- 根據構建類型確定測試周期是否可以繼續。
- 在AB上運行的測試是映像測試。根據目標鏡像類型,其配置存儲在AB配置文件"yocto-autobuilder/buildset-config"中。
-
每周測試
- 測試範圍:每周構建並通過發行團隊發佈的鏡像。
- 目標:
- 用最少的測試集對大部分區域進行功能測試;
- 回歸測試:極有可能發現錯誤。
-
全量測試
- 範圍:作為里程碑或最終版本候選的image;
- 目標:確保所有Yocto項目組件的功能。
-
發佈測試
- 測試範圍:發佈通過全量測試的候選版本
- 目標
- 涵蓋或重新安排所有預定功能;
- 修複並驗證所有相關錯誤。
- 增加覆蓋範圍
- 壓力測試
- 合規性測試
- 分發測試
4.1.4 測試執行
測試執行將按照https://wiki.yoctoproject.org/wiki/QA#QA_Process的QA維基頁面中定義的QA流程進行。
參考資料
- 軟體測試精品書籍文檔下載持續更新 https://github.com/china-testing/python-testing-examples 請點贊,謝謝!
- 本文涉及的python測試開發庫 謝謝點贊! https://github.com/china-testing/python_cn_resouce
- python精品書籍下載 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品書籍下載 https://www.cnblogs.com/testing-/p/17438558.html
- https://wiki.yoctoproject.org/wiki/QA/Master_Test_Plan#Test_Plans
5 測試工具
5.1 AutoBuilder
參見:https://wiki.yoctoproject.org/wiki/The_Yocto_Autobuilder
5.2 oe-selftest
Oe-selftest是用於測試OpenEmbedded構建系統的測試框架。以下是介紹oe-selftest的一些要點:
- 基於Python unittest
- 旨在模擬正常使用模式
- 不包括image運行時測試
- 實現了一個新層,其中包含僅由測試使用的通用/特定元數據
更多參考:Oe-selftest wiki。
5.3 image測試
5.4 合規性測試
用於genericx86-64的合規性測試套件/框架:
- LSB(Linux Standard Base)測試
- POSIX(Portable Operating System Interface for UNIX)測試
- LTP(Linux Test Project)測試
安裝步驟
- 從autobuilder下載lsb映像(與genericx86-64-lsb bsp LSB 每周測試中的映像相同),我們使用 genericx86-64-lsb、core-image-lsb-sdk 在NUC上測試合規性
2.在DUT上安裝鏡像
3.配置網路,使其能聯網工作:編輯/etc/resolv.conf並添加網關IP地址;使用"ifconfig"命令添加IP和掩碼;使用 "route add default gw <ip_address>"添加路由;使用"export http_proxy=<添加代理鏈接>"命令添加代理
- 在DUT上複製 "compliance_test.py"腳本
5.確保網路連接正常
6.像這樣運行腳本:"chmod a+x compliance_local.py" ; "./compliance_test.py <里程碑> <日期>"。等待 "配置完成。必須從機器啟動LSB 腳本。"(約 8-12 小時)
7.通過ssh或手動運行"LSB_test.sh "並等待其完成(約一天)
8.從DUT獲取日誌:result--data.fulllog;result- -data.log;result- -data.fail;posix.log(可在以下位置找到:/opt/ltp/testcases/open_posix_testsuite),其他三個日誌在 /opt/ltp目錄下的 output、temp、result文件夾中。日誌需要發送到[email protected],並指定版本和映像類型
;在/var/opt/lsb/test/manager/results/x86.../x86....tar.gz(您可以使用自動完成(選項卡)輕鬆找到它),它大約有 18 兆位元組,將此文件上傳到硬碟,並將鏈接發送到 [email protected]和[email protected],我還會發送電子郵件。
9.將Testopia - Runtime測試運行中的測試放在已通過的測試中。
腳本可在此處找到: http://git.yoctoproject.org/cgit/cgit.cgi/poky-contrib/log/?h=cagurida/compliance
5.5 pTest
ptest(軟體包測試 package test)是一個概念,用於構建、安裝和運行軟體包本身包含的測試套件,同時產生一致的測試執行輸出格式。有關啟用和安裝的更多詳情,請訪問Ptest。
安裝和運行步驟
- 從autobuilder下載pTest映像(可在pTest目錄中找到core-image-sato-sdk映像)
- 將映像安裝到DUT上(使用傳統啟動方式)
- 啟動映像併在DUT上複製"ptest-runner.sh"腳本
- 在命令行中運行"ptest-runner.sh > ptest.log"並等待完成(約 5 小時)
5.6 Eclipse測試框架
Eclipse測試框架使用Dogtail實現測試自動化。有關安裝和框架的詳細信息,請參閱 contrib 上的 eclipse-framework README。Dogtail是用Python編寫的圖形用戶界面測試工具和自動化框架。Dogtail腳本用Python編寫,並像其他Python程式一樣執行。
5.7 構建性能測試
在多個常用配置中,根據通過構建流程所花費的時間,對構建系統的性能進行跟蹤。
使用的工具:http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/scripts/contrib/build-perf-test.sh
更多詳情,請參閱性能測試wiki。
目前,可在此處以圖表形式查看構建性能結果(從 YP 1.6 開始),點擊此處
5.7 補丁自動測試
[待定] - 未實現
6 測試自動化
- 目標
- 通過自動化當前測試,減少手動測試的工作量;
- 改進運行時測試。
- 改進構建時測試。
- 工具
- Distro 測試
- AutoBuilder
- 在AutoBuilder上運行映像測試。
- 可以使用Oe-selftest。目前oe-selftest 也在公共AutoBuilder上運行。
6.1 測試自動化貢獻庫
- Oe-selftest
- Image tests
- Ptest
- Toaster
- Eclipse測試框架
7 測試時間表
有關項目的總體日程安排,請訪問被測版本測試計劃中的"日程安排"部分
8 進入和退出標準
本節定義了開始和結束測試周期的標準:
8.1 進入標準
- 發佈候選版本併發送"開始QA活動"郵件。
- 自動生成image可用
- 候選版測試運行模板已準備就緒
- 已發送包含使用日期和構建說明的郵件
8.2 退出標準
- 計劃的所有組件均已 100% 完成
- 所有失敗/受阻的測試用例都與有效的錯誤相關聯(未解決也未驗證)
- 重大問題導致組件/構建受阻
還定義了一般標準,請參閱"通過/失敗標準"部分
9 假設和限制
TBD
10 驗證
- 目標
驗證當前版本的Yocto項目中引入的新變更功能是否正確。
-
輸入標準
- 通過填寫 "QA Owner "欄位來跟蹤中+/高增強的變更
- 變更在Bugzilla中被列為優先
- Bugzilla 條目在當前版本中有目標里程碑
- 更改已記錄在案,或在無需記錄時已指出(相應地設置doc標誌)
- 錯誤狀態設置為"已解決"。
-
退出標準
- 變更已為編寫測試用例(如適用)做好文檔記錄
- 計劃測試用例已通過
- 錯誤狀態設置為已驗證
11 測試報告
關於具體的可交付成果,請查看當前測試版本的"測試可交付成果"部分。
12 測試計劃
本節分為兩種類型的測試計劃:發行版和組件。
13 測試執行
有關Yocto項目各版本測試執行的歷史信息,請訪問Releases。
有關當前測試版本的測試執行的具體信息,請訪問最新Test Plans中的"執行歷史"部分
釘釘或微信號: pythontesting 微信公眾號:pythontesting