測試計劃實例:Yocto測試計劃

来源:https://www.cnblogs.com/testing-/archive/2023/10/17/17769661.html
-Advertisement-
Play Games

在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流程進行。

參考資料

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)測試

安裝步驟

  1. 從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=<添加代理鏈接>"命令添加代理

  1. 在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 測試自動化

  • 目標
    • 通過自動化當前測試,減少手動測試的工作量;
    • 改進運行時測試。
    • 改進構建時測試。
  • 工具

6.1 測試自動化貢獻庫

7 測試時間表

有關項目的總體日程安排,請訪問被測版本測試計劃中的"日程安排"部分

8 進入和退出標準

本節定義了開始和結束測試周期的標準:

8.1 進入標準

  • 發佈候選版本併發送"開始QA活動"郵件。
  • 自動生成image可用
  • 候選版測試運行模板已準備就緒
  • 已發送包含使用日期和構建說明的郵件

8.2 退出標準

  • 計劃的所有組件均已 100% 完成
  • 所有失敗/受阻的測試用例都與有效的錯誤相關聯(未解決也未驗證)
  • 重大問題導致組件/構建受阻

還定義了一般標準,請參閱"通過/失敗標準"部分

9 假設和限制

TBD

10 驗證

  • 目標

驗證當前版本的Yocto項目中引入的新變更功能是否正確。

  • 輸入標準

    • 通過填寫 "QA Owner "欄位來跟蹤中+/高增強的變更
    • 變更在Bugzilla中被列為優先
    • Bugzilla 條目在當前版本中有目標里程碑
    • 更改已記錄在案,或在無需記錄時已指出(相應地設置doc標誌)
    • 錯誤狀態設置為"已解決"。
  • 退出標準

    • 變更已為編寫測試用例(如適用)做好文檔記錄
    • 計劃測試用例已通過
    • 錯誤狀態設置為已驗證

11 測試報告

  • 目標
    • 在最新版本中顯示當前測試運行的實時狀態;
    • 在測試周期結束時向Yocto項目郵件列表發送報告電子郵件;
    • 歸檔報告;
    • 使用QA狀態模板進行報告;
    • 在最終版本發佈後更新版本維基

關於具體的可交付成果,請查看當前測試版本的"測試可交付成果"部分。

12 測試計劃

本節分為兩種類型的測試計劃:發行版和組件。

13 測試執行

有關Yocto項目各版本測試執行的歷史信息,請訪問Releases

有關當前測試版本的測試執行的具體信息,請訪問最新Test Plans中的"執行歷史"部分

釘釘或微信號: pythontesting 微信公眾號:pythontesting
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一:背景 1. 講故事 前幾天有位朋友微信上找到我,說他的程式會偶發性崩潰,一直找不到原因,讓我幫忙看一下怎麼回事,對於這種崩潰類的程式,最好的辦法就是丟dump過來看一下便知,話不多說,上windbg說話。 二:WinDbg 分析 1. 到底是哪裡的崩潰 對於一個崩潰類的dump,尋找崩潰點非常重 ...
  • 在 C# 中,null 是一個特殊存在,表示缺少值。Null 可以分配給引用類型和可為 null 的值類型,但不能分配給不可為空的值類型。在 C# 中處理 null 值是編寫可靠且可靠的代碼的一個重要方面。在本文中,我將討論一些在 C# 中處理 null 值的最常用技術。 1 、NULL合併操作符( ...
  • 記錄下在開發中經常用到的類型轉換 /// <summary> /// 轉換擴展類 /// </summary> public static partial class Extensions { #region 轉換為long /// <summary> /// 將object轉換為long,若轉換失 ...
  • 基礎說明 本文根據 RFC4226 和 RFC6238 文檔,詳細的介紹 HOTP 和 TOTP 演算法的原理和實現。 兩步驗證已經被廣泛應用於各種互聯網應用當中,用來提供安全性。對於如何使用兩步驗證,大家並不陌生,無非是開啟兩步驗證,然後出現一個二維碼,使用支持兩步驗證的移動應用比如 Google ...
  • 關於HelixToolkit-這個3D呈現的交互處理推薦使用,因為功能比較強大 一個開源3D庫,根據MIT許可證獲得許可。MIT許可證非常寬鬆,允許在專有軟體中使用。該庫基於 .NET,目前專註於 WPF 平臺。 HelixToolkit是.NET Framework的一個開源3D圖形庫,它主要用於 ...
  • 需求:格式為exp的文件,具有json結構,替換掉其中某些數據 解決方法:讀取excel,用npoi讀取指定內容,在exp中找到特定結構,然後替換 讀取excel文件 讀取其他格式的文件也是用此方法 public void OpenExcel() { Microsoft.Win32.OpenFile ...
  • 我們在調試Web頁面時,期望能使用80埠調試(比如本博客站點的每篇博客,我在發佈之前,均需要在我的Mac電腦進行博客內容和樣式的調試和校驗)。而Mac電腦的80埠預設被系統Apache服務占用,下麵分享我常用的2種使用80埠調試Web站點頁面的辦法…… ...
  • 【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e054 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...