伦伦影院久久影视,天天操天天干天天射,ririsao久久精品一区 ,一本大道香蕉大久在红桃,999久久久免费精品国产色夜,色悠悠久久综合88,亚洲国产精品久久无套麻豆,亚洲香蕉毛片久久网站,一本一道久久综合狠狠老

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

VectorCAST/QA如何在LiteOS-A內核上實現系統白盒測試

Vector維克多 ? 來源:Vector維克多 ? 作者:顧健 ? 2021-06-26 16:21 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

本文將通過演示實例介紹VectorCAST/QA如何在LiteOS-A內核上實現系統白盒測試,獲取被測程序的代碼覆蓋信息。具體實現在支持sudo超級用戶模式的Ubuntu 18.04(或以上)版本中,調試目標板是i.MX6ULL開發板(鴻蒙OS官方認可適配)。

VectorCAST/QA介紹

1.1

VectorCAST/QA功能與優勢

VectorCAST工具集包含兩款測試工具:針對單元集成測試的VectorCAST/C++,和實現系統白盒測試的VectorCAST/QA。區別于單元測試的測試對象是函數組件,系統白盒測試的對象則是系統整體編譯后的程序。VectorCAST/QA通過集成被測項目程序的編譯/構建環境和已有的測試基礎架構,獲取系統測試所需的關鍵指標。

VectorCAST/QA具有以下功能和優勢:

自動對項目源代碼添加代碼覆蓋率接口;

沿用項目已有的系統測試框架和測試用例;

獲取在系統測試階段的代碼覆蓋率信息;

測試用例和代碼覆蓋率信息逐一對應。

1.2

VectorCAST/QA工作流

VectorCAST/QA會自動對被測源文件插裝(區別于單元集成測試的Stub插樁,對程序的插樁Instrumentation可以理解為插覆蓋率函數接口)添加覆蓋率測試接口,同時工具會在目標板的RAM 內存中分配出一段內存空間,用以存放一個固定名字的char類型全局數組,該數組實時保存覆蓋率信息,用戶可以通過讀取該數組獲取覆蓋率結果,數組大小可通過工具配置選項進行設置。

VectorCAST/QA測試配置步驟

2.1

創建VCAST工程

在構建VectorCAST/QA系統測試環境之前,需要首先創建VCAST工程;

1.

通過包含全局變量定義等的腳本文件VCAST_LAUNCH.sh啟動VCAST

sudo bash 。/VCAST_LAUNCH.sh 或者 source VCAST_LAUNCH.sh;

2.

在VCSAT打開后,如果需要打開已有測試項目

File-》Open 選擇*vcm文件;

3.

如若需要創建新項目

若是第一次創建項目,切記需首先創建項目保存路徑,File-》Set Working Directory 選擇測試項目保存的路徑;

可選擇創建空項目New-》VectorCAST Project-》Empty Project,同時根據項目需求設定項目名稱和選擇交叉編譯工具鏈;

亦或通過實際的項目選擇配置包中自帶的模板CFG,New-》VectorCAST Project-》From Configuration File。

2.2

配置QA測試環境

創建完VCAST工程,再創建QA測試環境從而完成環境的配置,右鍵Group-》Create System Test Environment-》Interactive。

配置QA測試環境共包含五個步驟,具體配置步驟如下:

1.

選擇編譯器

配置QA 環境的第一步需要結合具體項目配置選擇編譯器,本文項目選擇Clang編譯器,Preprocessor command 需要和目標板適配;

2.

環境命名

在配置環境的第二步驟中,自定義環境名稱,例如本項目中環境命名為123;

3.

加載源文件

配置的第三步加載被測源文件,其中Base Directory指向源碼最上層的父目錄,然后選擇目錄文件中要添加到測試環境中的源文件,本文項目中只包含hello.c源文件;

4.

覆蓋率類型

配置的第四步根據項目測試需求設置覆蓋率測試類型,本項目選擇Statement+Branch即語句分支覆蓋。覆蓋率類型選擇的配置亦可在環境創建后針對具體被測文件的需求進行設置,可參見本文2.3章節,其他配置選項可選擇默認;

5.

編譯

當前述配置步驟執行完畢后,即可點擊配置界面右下角的Build進行環境編譯。

2.3

代碼覆蓋率插裝

當環境編譯成功后,通過雙擊工程視圖中的環境名稱進入到環境視圖,勾選Tools-》Options-》Coverage-》Save data in ASCII format in memory,從而將覆蓋率信息實時保存在RAM中,可通過串口等工具實時獲取覆蓋率信息,存儲覆蓋率信息的數組的大小可通過Maximum size for ASCII buffer調控,不勾選則為工具默認值,配置完成后點擊Apply;

進入環境視圖后可看見被添加的所有測試源文件,通過右鍵示例的hello.c-》Set Coverage Type可以配置要測試的覆蓋率類型;

覆蓋率類型設置完成后,再次選擇被測文件hello.c右鍵-》Instrument 實現插裝;如果出現某些頭文件找不到的錯誤,可以在Tools-》options-》C/C++-》Preprocessor/Compiler-》Include Directories通過+號來添加搜索路徑。(++ 代表遞歸的添加路徑中的子路徑)

執行完上述步驟后,點擊File-》Close Environment關閉QA環境。在工程視圖中右鍵環境,選擇System Testing-》Apply Coverage to Source Tree-》Always,該配置選項將會使得覆蓋接口代碼直接插樁到被測源文件中,同時工具會對被測前的源文件進行備份,我們將在第3章節的測試實例中進行比對,至此完成QA 測試的所有配置步驟。

VectorCAST/QA測試實例

經過第2章節的配置,可以獲得經過插裝且帶有覆蓋率接口的hello.c文件,通過交叉編譯工具鏈進行編譯即可將程序燒錄到目標板中進行系統測試。

3.1

插樁前后源代碼對比

如2.3章節所述,hello.c源文件被插樁前將會被VectorCAST工具自動備份為hello.c.vcast.bak,文件將會保存在被測源文件路徑下參見圖9,圖10和11進行QA覆蓋率接口插樁前后的源文件對比。

下圖為插樁后代碼,當前打開的即是插裝后的hello.c文件,vcast_ascii_coverage_data_pool便是QA工具自動創建的用以存儲代碼覆蓋率信息的數組,其中printf(“%s”,vcast_ascii_coverage_data_pool)及后面的文件存儲代碼為手動添加,目的是支持本次項目調試過程中可以通過串口實時查看目標板打印的覆蓋率信息,同時覆蓋率結果文件存儲在目標板中亦可通過其他調試方法發送給上位機,用戶可以依據目標板的配置選擇不同的獲取覆蓋率信息的方式。

8eff145a-d455-11eb-9e57-12bb97331649.png

插樁后代碼

3.2

編譯可執行文件

1.

通過交叉編譯工具鏈對插樁后的hello.c文件進行交叉編譯,獲得可執行文件hello;

clang -target arm-liteos --sysroot=/home/vector123/book/openharmony/prebuilts/lite/sysroot/ -o hello hello.c;

2.

將hello存入到根目錄rootfs;

cp hello /home/vector123/book/openharmony/kernel/liteos_a/out/imx6ull/rootfs/bin

3.

重新制作rootfs.jffs2,并將rootfs.jffs2燒錄到目標板。

mkfs.jffs2 -s 0x10000 -e 0x10000 -d rootfs -o rootfs.jffs2

3.3

獲取覆蓋率結果

燒錄完rootfs.jffs2文件后,上位機通過MobaXterm工具進行在線調試。

輸入。/bin/hello命令運行hello程序,如圖所示,獲得hello.c源代碼中的打印語句以及覆蓋率結果信息,同時覆蓋率結果存儲在目標板系統中,存儲地址取決于插樁時設定的文件存儲路徑,結果存儲在根目錄下的QA01.DAT文件中,如圖所示;

8f0dda8a-d455-11eb-9e57-12bb97331649.png

打印語句與覆蓋率結果

8f3458fe-d455-11eb-9e57-12bb97331649.png

覆蓋率存儲文件

3.4

生成覆蓋率報告

通過將生成的覆蓋率結果文件QA01.DAT加載至VectorCAST工具進行解析,即可獲得覆蓋度報告,具體步驟如下:

1.

右鍵Environment-》Add Test Results 選擇路徑下的結果文件,選擇QA01.DAT;

2.

添加完成后即可在左側的環境視圖中觀察到覆蓋率結果文件QA01.DAT,勾選該文件即可生成覆蓋率報告,當有多組不同的覆蓋率測試時,可以導入多個不同的測試結果文件,以實現測試和代碼覆蓋率的逐一對應;

3.

通過Environment-》view-》Aggregate Coverage Report即可獲取到覆蓋率報告,報告顯示百分百覆蓋。

編輯:jq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 集成
    +關注

    關注

    1

    文章

    178

    瀏覽量

    30920
  • QA
    QA
    +關注

    關注

    0

    文章

    7

    瀏覽量

    9144
  • 代碼
    +關注

    關注

    30

    文章

    4973

    瀏覽量

    74167
  • 編譯器
    +關注

    關注

    1

    文章

    1672

    瀏覽量

    51771

原文標題:VectorCAST基于華為LiteOS-A內核的代碼測試-2

文章出處:【微信號:VectorChina,微信公眾號:Vector維克多】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    VectorCAST/QA與Bazel集成配置方法

    VectorCAST/QAVectorCAST產品族中用于統計系統測試過程中代碼覆蓋度的軟件工具。
    的頭像 發表于 03-11 17:00 ?500次閱讀
    <b class='flag-5'>VectorCAST</b>/<b class='flag-5'>QA</b>與Bazel集成配置方法

    還在手寫C++測試用例? Parasoft級AI正在接管代碼安全

    深度“內建” 。 今天,我們就來深扒一款被全球頂尖車企和軍工企業悄悄當作“測試永動機”的工具—Parasoft C/C++test。它不是普通的測試插件,而是能深入代碼盒內部,進行自動化手術級掃描的AI驅動
    的頭像 發表于 03-06 10:46 ?196次閱讀
    還在手寫C++<b class='flag-5'>測試</b>用例? Parasoft<b class='flag-5'>白</b><b class='flag-5'>盒</b>級AI正在接管代碼安全

    何在 S32G3 的 M7 和 A53 內核之間建立 IPCF 通信?

    我能夠成功并行啟動 S32G3 的 M7 和 A53 內核。對于 M7 內核,我在 U-Boot 時停止,將固件加載到 SRAM 中,然后手動執行它。我的目標是在兩個內核之間建立 IP
    發表于 03-05 07:28

    何在 VF2 編譯東西?

    了 gcc 的 riscv 版本,但我在這里不知所措。 你們中的一些人設法在 VF2 編譯了該模塊。 你能寫一個簡短的 gnereic 指南,介紹如何在黑板編譯它嗎? 這也可以用作通用編譯指南,我想不僅僅是
    發表于 03-03 07:15

    何在DGX Spark運行NVIDIA Omniverse

    首先感謝 Vigor 同學第一時間的分享,以下是具體如何在 DGX Spark 運行 Omniverse 的方法。
    的頭像 發表于 12-17 10:13 ?746次閱讀
    如<b class='flag-5'>何在</b>DGX Spark<b class='flag-5'>上</b>運行NVIDIA Omniverse

    科技品牌的2026必修課:如何在CES Asia2026北京消費電子展實現預算與效果的最優解?

    科技品牌的2026必修課:如何在CES Asia2026北京消費電子展實現預算與效果的最優解?
    的頭像 發表于 12-02 10:57 ?645次閱讀

    汽車中央控制與線束的自動測試設備

    費思FTS6000線束檢測設備汽車線束與中央控制測試系統覆蓋客戶測試需求,方案成熟。
    的頭像 發表于 11-28 15:23 ?374次閱讀
    汽車中央控制<b class='flag-5'>盒</b>與線束的自動<b class='flag-5'>測試</b>設備

    在qemu上體驗芯來RISC-V處理器運行鴻蒙LiteOS-M內核

    在qemu上體驗芯來RISC-V處理器運行鴻蒙LiteOS-M內核 1.本文概述 2.下載qemu 3.下載鴻蒙LiteOS-M 4.運行與測試 5.gdb調試 1.本文概述
    發表于 10-31 09:04

    如何利用Verilog HDL在FPGA實現SRAM的讀寫測試

    本篇將詳細介紹如何利用Verilog HDL在FPGA實現SRAM的讀寫測試。SRAM是一種非易失性存儲器,具有高速讀取和寫入的特點。在FPGA中實現SRAM讀寫
    的頭像 發表于 10-22 17:21 ?4444次閱讀
    如何利用Verilog HDL在FPGA<b class='flag-5'>上</b><b class='flag-5'>實現</b>SRAM的讀寫<b class='flag-5'>測試</b>

    何在裸機環境中運行KleidiAI微內核

    探索如何在裸機環境中運行 KleidiAI 內核,并通過測試多款 C/C++ 編譯器,以確定如何能更高效地生成代碼。
    的頭像 發表于 08-08 15:16 ?3895次閱讀
    如<b class='flag-5'>何在</b>裸機環境中運行KleidiAI微<b class='flag-5'>內核</b>

    【經驗分享】在Omni3576編譯Redis-8.0.2源碼,并安裝及性能測試

    本文首先介紹Redis是什么,然后介紹如何在Omni3576編譯Redis-8.0.2源碼,以及從源碼編譯、安裝Redis,最后介紹如何在Omni3576運行Redis性能
    的頭像 發表于 06-05 08:05 ?1010次閱讀
    【經驗分享】在Omni3576<b class='flag-5'>上</b>編譯Redis-8.0.2源碼,并安裝及性能<b class='flag-5'>測試</b>

    # quartus ii 9.1對registered adder仿真出錯,但硬件能夠實現,怎么解決?

    核心問題:在硬件能夠實現功能,仿真結果一直出錯,并且只有輸出S的時候出錯。S應該輸出a+b的值,仿真一直都是0,但是在硬件能夠體現正確結果。 代碼如下:module CNT4(
    發表于 04-14 21:35

    S32K311如何在Flash測試ECC?

    我有一些與目標 S32K311 的 Flash ECC 相關的問題 - ERM 是否負責 Code Flash 和 Data Flash ECC 中斷通知? - 我們如何在 Flash
    發表于 04-14 08:47

    何在i.MX 8XDXL EVK的A35運行Yocto Linux,在M4運行FreeRTOS?

    我正在使用i.MX 8XDXL 評估套件并希望在 Cortex-A35 運行 Yocto Linux 映像cores 的Cortex-M4 的 FreeRTOS 映像核心。 實現
    發表于 04-04 06:02

    何在RAKsmart服務器實現企業AI模型部署

    AI模型的訓練與部署需要強大的算力支持、穩定的網絡環境和專業的技術管理。RAKsmart作為全球領先的服務器托管與云計算服務提供商,已成為企業部署AI模型的理想選擇。那么,如何在RAKsmart服務器實現企業AI模型的部署呢?
    的頭像 發表于 03-27 09:46 ?977次閱讀