1. 环境准备
- 该脚本适用于软件的编译环境与测试环境不同的情况
- 编译环境下,安装lcov和gcov
- 测试环境下,准备好测试需要的资源
2. 编译
- 需要测试的代码,makefile中添加flag,-ftest-coverage、-fprofile-arcs
- CFLAGS_append = "-ftest-coverage -fprofile-arcs"
- LDFLAGS += "-O0 -ftest-coverage -fprofile-arcs"
- 编译生成软件
- 查看是否有 .gcno 和 .o 文件生成,并确认路径
3. 测试
- 连接设备,push coverage-test.sh 到设备测试目录下(adb push coverage-test.sh /data/test/)
- 编辑一个文本文档用来放置要测试的命令行,格式如test.txt(adb push test.txt /data/test/)
- 执行 coverage-test.sh (adb shell;cd /data/test/;coverage-test.sh test.txt ./)
- 结束后会生成lcov的文件夹,检查gcda文件是否正常生成
4. 生成报告
- 回到编译环境,新建一个目录用来存放coverage-collect.sh(mkdir /coveragetest)
- 将生成的lcov文件夹拿到本地(adb pull /data/test/lcov/coveragetest/)
- 执行coverage-collect.sh, 生成result(cd /coveragetest; coverage-collect.sh <.gcno files path>)
Tips
- 请确保运行coverage-collect.sh的环境下,gcov的版本与编译环境下的gcov版本相同,或者是使用coverage-collect.sh <> -t XXX 指定对应的gcov工具
- 请确保运行coverage-collect.sh的环境下存在软件对应的源代码,且路径与编译环境下的代码路径相同