作为一个专注于嵌入式底层开发的码农,我经常在项目的初期需要测试各种 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: $1"
return 2
}
function do_test1
{
echo "Test 1"
ret=0
return $ret
}
function do_test2
{
echo "Test 2"
ret=0
return $ret
}
function do_test3
{
echo "Test 1"
ret=0
return $ret
}
这里的每一个 test handler 函数就代表一个测试项目。
只要将 memetester、iperf 等具体地测试命令填充进行就可以执行真实的测试了。
调度代码
function validate_system()
{
for i in "${!fct_table[@]}"; do
echo "Test : $i"
${fct_table[$i]}
res=$?
__update_result_table $res "$i" res_table
done
}
# Main entry point
validate_system
print_result
遍历 fct_table,取出每一个 test handler 并调用,然后用 __update_result_table() 将测试的结果填充到 res_table 中。
到这里,这个测试框架就完成。
运行效果
wwd@think:~/Desktop$ ./board_test.sh
Test : Test 1
Test 1
>>>>> SUCCESS
Test : Test 3
Test 1
>>>>> SUCCESS
Test : Test 2
Test 2
>>>>> SUCCESS
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
总结
这个简单的测试框架非常轻巧且易于扩展,但功能强大。
在我的实际工作中被大量地使用,并且进行了一些必要的扩展,实实在在地降低了我的工作负担。
它完全可以作为第一次“冒烟测试”集成到更大的自动化系统中。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !