code coverage tools

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的环境下存在软件对应的源代码,且路径与编译环境下的代码路径相同

你可能感兴趣的:(code coverage tools)