邢台企业网站建设价格,石狮网站建设价格,巴中网站建设培训班,外贸网络营销服务大家好#xff0c;转发我朋友老吴的一篇文章#xff0c;我们在做测试框架的时候用的是python#xff0c;但是一些理论基础和用shell是一样的#xff0c;在这里#xff0c;语言并不是关键。希望对大家有帮助。哈喽#xff0c;我是老吴。作为一个嵌入式底层码农#xff0c… 大家好转发我朋友老吴的一篇文章我们在做测试框架的时候用的是python但是一些理论基础和用shell是一样的在这里语言并不是关键。希望对大家有帮助。哈喽我是老吴。作为一个嵌入式底层码农在项目初期我经常需要测试各种 Linux 单板的稳定性和性能。例如用 memtester 测试内存的稳定性。用 glmark-es2 测试 GPU 的性能。用 iperf 测试网卡设备的带宽。等一大堆、杂七杂八的测试项目。这些测试都不难但是比较碎片化一般都是基于简单的测试脚本。为了节省我的时间和精力我写了一个简单的测试框架。它的服务对象是像我这样的嵌入式底层开发人员。我对它的要求是能扩展以适应不同的单板;能自由地组合测试项;能对每个测试项进行单独地定制;能复用和积累各种测试脚本;下面是实现这个测试框架的关键点。查找表declare -gA fct_table([Test 1]do_test1[Test 2]do_test2[Test 3]do_test3[Test 4]do_empty_handler[Test 5]do_empty_handler[Test6]do_empty_handler)declare -gA res_table([Test 1]N/A[Test 2]N/A[Test 3]N/A[Test 4]N/A[Test 5]N/A[Test 6]N/A)这里通过 Shell 的关联数组定义了两个查找表。fct_table 是测试函数表。res_table 是测试结果表。测试函数function do_empty_handler()
{echo Test Not Implemented: $1return 2}function do_test1
{echo Test 1ret0return $ret}function do_test2
{echo Test 2ret0return $ret
}function do_test3
{echo Test 1ret0return $ret}这里的每一个 test handler 函数就代表一个测试项目。只要将 memetester、iperf 等具体地测试命令填充进行就可以执行真实的测试了。调度代码function validate_system()
{for i in ${!fct_table[]}; doecho Test : $i${fct_table[$i]}res$?__update_result_table $res $i res_tabledone}# Main entry point
validate_system
print_result遍历 fct_table取出每一个 test handler 并调用然后用 __update_result_table() 将测试的结果填充到 res_table 中。到这里这个测试框架就完成。运行效果wwdthink:~/Desktop$ ./board_test.sh
Test : Test 1
Test 1SUCCESS
Test : Test 3
Test 1SUCCESS
Test : Test 2
Test 2SUCCESS
Test : Test 5
Test Not Implemented: N/A
Test : Test 4
Test Not Implemented: N/A
Test : Test6
Test Not Implemented: N/A
TEST RESULTS:Test: Test 1 Result: PASS
Test: Test 3 Result: PASS
Test: Test 2 Result: PASS
Test: Test 5 Result: N/A
Test: Test 4 Result: N/A
Test: Test 6 Result: N/A
Test: Test6 Result: N/A总结这个简单的测试框架非常轻巧且易于扩展但功能强大。在我的实际工作中被大量地使用并且进行了一些必要的扩展实实在在地降低了我的工作负担。它完全可以作为第一次“冒烟测试”集成到更大的自动化系统中。—— The End ——