写点什么

Linux Lab 进阶: 自动化测试

用户头像
贾献华
关注
发布于: 2021 年 02 月 08 日

以 aarch64/virt 作为演示的开发板:


$ make BOARD=virt
复制代码

为测试做准备,在 src/system/ 目录下安装必要的文件/脚本:


$ make rootdir$ make root-install$ make root-rebuild
复制代码

直接引导启动:


$ make test
复制代码

测试完毕后不要关机:


$ make test TEST_FINISH=echo
复制代码

运行一下客户机的测试用例:


$ make test TEST_CASE=/tools/ftrace/trace.sh
复制代码

运行客户机的测试用例(COMMAND_LINE_SIZE 必须足够大,譬如,4096,查看下文的 cmdline_size 特性 )


$ make test TEST_BEGIN=date TEST_END=date TEST_CASE='ls /root,echo hello world'
复制代码

进行重启压力测试:


$ make test TEST_REBOOT=2
复制代码

注意: reboot 可以有以下几种结果 1) 挂起, 2) 继续; 3) 超时后被杀死, TEST_TIMEOUT=30; 4) 超时终止后不报错继续其他测试, TIMEOUT_CONTINUE=1


在一个特定的开发板上测试一个特定 Linux 版本的某个功能(cmdline_size 特性用于增加 COMMAND_LINE_SIZE 为 4096):


$ make test f=kft LINUX=v2.6.36 b=malta TEST_PREPARE=board-init,kernel-cleanup
复制代码

注意board-init 和 kernel-cleanup 用于确保测试自动运行,但是 kernel-cleanup 不安全,请在使用前保存代码!


测试一个内核模块:


$ make test m=hello
复制代码

测试多个内核模块:


$ make test m=exception,hello
复制代码

基于指定的 ROOTDEV 测试模块,缺省使用 nfs 引导方式,但注意有些开发板可能不支持网络:


$ make test m=hello,exception TEST_RD=/dev/ram0
复制代码

在测试内核模块时运行测试用例(在 insmod 和 rmmod 命令之间运行测试用例):


$ make test m=exception TEST_BEGIN=date TEST_END=date TEST_CASE='ls /root,echo hello world' TEST_PREPARE=board-init,kernel-cleanup f=cmdline_size
复制代码

在测试内部内核模块时运行测试用例:


$ make test m=lkdtm TEST_BEGIN='mount -t debugfs debugfs /mnt' TEST_CASE='echo EXCEPTION ">" /mnt/provoke-crash/DIRECT'
复制代码

在测试内部内核模块时运行测试用例,传入内核参数:


$ make test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
复制代码

测试时不使用 feature-init (若非必须可以节省时间)


$ make test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION' TEST_INIT=0$ make raw-test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
复制代码

测试模块以及模块的依赖(使用 make kernel-menuconfig 进行检查):


$ make test m=lkdtm y=runtime_testing_menu,debug_fs lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
复制代码

测试时不使用 feature-init,boot-init,boot-finish 以及不带 TEST_PREPARE


$ make boot-test m=lkdtm lkdtm_args='cpoint_name=DIRECT cpoint_type=EXCEPTION'
复制代码

测试一个内核模块并且在测试前执行某些 make 目标:


$ make test m=exception TEST=kernel-checkout,kernel-patch,kernel-defconfig
复制代码

使用一条命令测试所有功能(从下载到关机,如果关机后挂起,请参考 6.2.2):


$ make test TEST=kernel,root TEST_PREPARE=board-init,kernel-cleanup,root-cleanup
复制代码

使用一条命令测试所有功能(带 uboot,如果支持的话,譬如:vexpress-a9):


$ make test TEST=kernel,root,uboot TEST_PREPARE=board-init,kernel-cleanup,root-cleanup,uboot-cleanup
复制代码

测试引导过程中内核挂起,允许指定超时时间,系统挂起时将发生超时:


$ make test TEST_TIMEOUT=30s
复制代码

测试过程中如果超时,继续执行后续测试,而不是直接终止:


$ make test TEST_TIMEOUT=30s TIMEOUT_CONTINUE=1
复制代码

测试内核调试:


$ make test DEBUG=1
复制代码


发布于: 2021 年 02 月 08 日阅读数: 13
用户头像

贾献华

关注

及时当勉励 岁月不待人 2018.06.04 加入

https://2020.iosdevlog.com

评论

发布
暂无评论
Linux Lab 进阶: 自动化测试