我是靠谱客的博主 可耐机器猫,最近开发中收集的这篇文章主要介绍软件单元测试要点总结,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

       在整个软件开发过程中,问题发现得越晚,所需付出的代价也越高。单元测试能够深入到软件的具体实施细节,有效地验证代码是否与设计相符合,并尽早地识别出软件设计和实施过程中的问题,从而提高软件开发效率,缩短软件开发周期。

       常见的单元测试方法有:

  • 1. 基于需求的测试:此处的需求是指软件单元层面的需求,是单元测试最基本的方法;
  • 2. 接口测试:测试单元模块的输入输出接口是否与预期一致;
  • 3. 背靠背测试:一般用于基于模型的设计,对比模型和代码在相同仿真条件下的输出,验证模型和代码的一致性;
  • 4. 资源使用测试:用于测试当前单元模块所消耗的时间和内存资源;
  • 5. 故障注入测试:用于检查软件中安全机制的有效性。

      在进行单元测试前,首先需要设计合适的测试用例,一般来说可以通过以下几种方式来生成测试用例:

  • 1. 需求分析:最基本的测试用例设计方法,通过分析需求,寻找合适的测试用例,以便直接的验证功能是否符合要求;
  • 2. 等价类分析:根据需求或设计将输入分成若干区域,并从每个分区中选择代表性的点作为测试用例;
  • 3. 边界值分析:根据需求书找输入接口的边界值,通过测试边界值上的模块功能来反映整个范围内的情况。对于一个边界,一般来说可取三个值,一个边界值,一个较大值以及一个较小值,三个值的间隔取决于数据类型决定的最小增量,对于整型,间隔一般取1。

       为了保证测试的完整性,对需求的覆盖程度,需要评估测试用例的结构覆盖度,一般常见的评价指标如下:

  • 1. 语句覆盖度:衡量是否所有语句都被子执行到;
  • 2. 分支覆盖度:所有分支都应该被执行到;
  • 3. MC/DC覆盖度:对于MC/DC而言每一个能够独立影响分支的条件均应该被测试到。

举例如下:

if( (a||b) && c )     balabala;

对于该段语句,如果要满足语句覆盖率达到100%,则只要给出任意一个能够使( (a||b) && c )的结果为true的测试用例即可。

如果要满足分子覆盖率达到100%,则需要使用两个测试用例,使( (a||b) && c )的结果分别为true和false。

而对于MC/DC而言,如果要达到100%的覆盖率,则需要进行如下分析:

当c为false的时候,取a为true,b为false,这时( (a||b) && c )的结果为false,保持c不变,那么无论怎么改变a和b,结果均不会改变,即此时a和b均不会影响( (a||b) && c )的结果,所以当c为false时,只需要测试一种情况即可。

当c为true时,若a和b同时为true,那么当a和b任意一个发生变化时,( (a||b) && c )的结果仍然为true,即此时a和b均不影响结果,而当a和b至少有一个为false时,另一个的变化都会独立影像测试结果,因此均属于符合MC/DC的有效测试用例。

综上所述,对于已给的示例,满足MC/DC覆盖率达到100%的测试用例可取以下4组:

组号abc
1truefalsefalse
2falsefalsetrue
3truefalsetrue
4falsetruetrue

        需要注意的是,单元测试包括结构性测试和功能测试,结构覆盖率关注的是单元模块的路径是否全部被覆盖,侧重于发现程序的结构缺陷,而对于单元模块本身具体的功能并不能完全覆盖,此时就需要进行功能测试。举例来说,如果该单元模块是用来实现正弦计算的,只需要一个测试用例即可使得所有的覆盖率为100%,但是并不能验证正弦计算本身的正确性,因此需要补充相应的测试用例。

       软件单元测试的环境应该尽可能的和实际环境保持一致。如果不一致,应该分析测试环境的不同对测试结果可能产生的影响。必要时,可以在后续的测试中(集成测试或者需求验证过程)补充部分基于目标环境测试。

      一般来说,软件单元测试的环境有:MIL、SIL、PIL、HIL。

最后

以上就是可耐机器猫为你收集整理的软件单元测试要点总结的全部内容,希望文章能够帮你解决软件单元测试要点总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(49)

评论列表共有 0 条评论

立即
投稿
返回
顶部