[quality] 00 - Introduction: code testing methods

相关资源


开源:google/googletest

了解入门:https://www.cnblogs.com/coderzh/archive/2009/04/06/1426755.html

轻松编写 C++ 单元测试:https://www.ibm.com/developerworks/cn/linux/l-cn-cppunittest/index.html

 

 

 

了解测试


Parasoft C/C++test

三分钟告诉你为什么选择自动化测试工具Parasoft C/C++test?【广告贴】

原文:https://blog.csdn.net/feng_ma_niu/article/details/41256471 

软件质量之道:gtest之一 —— UT框架gtest

gtest是基于xUnit架构的测试框架,支持自动发现测试,丰富的断言集,用户定义的断言,death测试,致命与非致命的失败,类型参数化测试,各类运行测试的选项和XML的测试报告。

当然,单纯依赖gtest在某些场合下是不行的,例如说一个复杂的函数,需要定义修改函数内部调用函数的执行,此时就需要另外一些mock工具,例如说google mock,mockcpp等,这个在后续文章中会逐步介绍。(华为在工具集上还是作出了不少努力,例如把gtest和mockcpp做成一体化,并提供作为Visual Studio的一个插件,可以方便快速执行某一用例,无论从快速调试上,或者编写测试代码上,都有一定的效率提升。不过这个工具做的太烂,又没人维护升级,实在是无力吐槽了,出了问题,维护方是各种推脱责任,最后还是要自己解决)

C++ 测试覆盖率统计轻量方案 - gtest+lcov

原文:https://blog.csdn.net/u010312436/article/details/53940309 

lcov代码覆盖率统计工具,是gcov的延伸版本,提供程序实际执行的信息(统计某行代码被执行的次数),其基于HTML的输出通过浏览器以清晰的图表形式呈现覆盖率统计结果。locv相关详细介绍可以参考博文:https://my.oschina.net/alphajay/blog/33725。

catch2:一个好用的C++单元测试框架

原文:https://blog.csdn.net/ithiker/article/details/87909651

简单易用:只需要下载catch.hpp,包含到你的工程就可以了。

轻松编写 C++ 单元测试

原文:https://www.ibm.com/developerworks/cn/linux/l-cn-cppunittest/index.html【有例子】

与 CppUnit 不同的是: googletest 可以自动记录下所有定义好的测试,不需要用户通过列举来指明哪些测试需要运行。

简易教学视频

链接:https://www.youtube.com/playlist?list=PL_dsdStdDXbo-zApdWB5XiF2aWpsqzV55

 

玩转Google开源C++单元测试框架Google Test系列(gtest) (总)

下面是该系列的目录:

额外篇:

 

 

Clang Static Analyzer


神之资源:https://github.com/mre/awesome-static-analysis【推荐】

官网:http://clang-analyzer.llvm.org/

安装:http://clang.llvm.org/get_started.html#build

安装 clang:https://blog.kowalczyk.info/article/k/how-to-install-latest-clang-6.0-on-ubuntu-16.04-xenial-wsl.html

安装 scan-build:http://clang-analyzer.llvm.org/scan-build.html

For other platforms, you must build Clang and LLVM manually. To do so, please follow the instructions for building Clang from source code.

编译时,留足空间,至少20G以上

  • clang 只需要完成词法和语法分析,
  • 代码优化和机器代码的生成工作由 llvm 完成。

 

 

gpeftools


例子:使用使用gpeftools调试程序运行瓶颈

简介:使用 google-perftools 剖析程序性能瓶颈

安装:https://github.com/linux-on-ibm-z/docs/wiki/Building-gperftools

gperftools除了可以用于分析整个程序的运行瓶颈,还可以用于分析局部代码的性能瓶颈。

CPU 性能剖析包括以下几个步骤。

  • 1. 编译目标程序,加入对 google-perftools 库的依赖。
  • 2. 运行目标程序,并用某种方式启动 / 终止剖析函数并产生剖析结果。
  • 3. 运行剖结果转换工具,将不可读的结果数据转化成某种格式的文档(例如 pdf,txt,gv 等)。

 

 

代码覆盖率测试


C++ 测试覆盖率统计轻量方案 - “gtest + lcov”

代码覆盖率浅谈

C++代码覆盖率工具Coverage Validator

C++开源代码覆盖率工具OpenCppCoverage介绍(Windows)

结合单元测试的一个东东。

在做单元测试时,代码覆盖率常常被拿来作为衡量测试好坏的指标,甚至,用代码覆盖率来考核测试任务完成情况,比如,代码覆盖率必须达到80%或 90%。于是乎,测试人员费尽心思设计案例覆盖代码。用代码覆盖率来衡量,有利也有有弊。

总结,覆盖率数据到底有多大意义。我总结了如下几个观点,欢迎大家讨论:

  • a. 覆盖率数据只能代表你测试过哪些代码,不能代表你是否测试好这些代码。(比如上面第一个除零Bug)
  • b. 不要过于相信覆盖率数据。
  • c. 不要只拿语句覆盖率(行覆盖率)来考核你的测试人员。
  • d. 路径覆盖率 > 判定覆盖 > 语句覆盖
  • e. 测试人员不能盲目追求代码覆盖率,而应该想办法设计更多更好的案例,哪怕多设计出来的案例对覆盖率一点影响也没有。

 

 

Test Explorer UI


Link: https://marketplace.visualstudio.com/items?itemName=hbenl.vscode-test-explorer

 

 

End.

posted @ 2019-06-05 13:31  郝壹贰叁  阅读(278)  评论(0)    收藏  举报