如何在智能告警平台CA触发测试告警
804
2022-11-30
软件测试之测试循环结构踩坑
对于很多小伙伴来说,循环结构是一个既简单又复杂的测试内容。因为,在测试过程中,多次重复循环可能导致内存泄漏,甚至存在边界错误。
因此,在做循环结构测试时,我们一定要重点关注循环过程的正确性。换句话说,就是关注在循环的边界和运行界限内,对循环体的执行过程的正确性。因为只有这样,才能有效地提升测试工作效率,避免浪费时间。
1、循环结构的分类
在说如何编写相关测试用例前,我们先来回忆一下,究竟一共有几种循环结构。
一般来说,循环结构主要包括3类:串联、嵌套和非结构化。如下图。
在串联情况下,如图(b),由其判定节点2和3可以分别形成的两个循环结构。若这两个循环结构存在相互关联的变量,那么,它将对循环次数产生影响。
但,若串联情况如图(c),其判定节点为2和4,由他们分别形成的两个循环体,但如果从3号节点,存在直接跳入4号节点处循环结构内部的情况,那么,这个是不符合结构化程序设计思想的。
由此可见,在不同的状况下,一个判定节点所形成的循环结构,能否成为决定循环次数的指标,还要看它是否存在相互关联的变量。
2、测试难点
那么,对于循环结构类测试,存在哪些测试难点呢?别急,这边给大家整理了一份可能存在问题的清单。如下:
1)对于单个循环节点,如何结合循环次数的边界进行测试;
2)对于单个循环节点,如何设计测试用例来保证循环的完整性;
3)对于串联的循环节点,如何保证测试的全面性;
4)对于非结构化的循环,如何进行测试。
3、针对单个循环节点循环次数的测试
下面,我们就先来给大家回忆一下,针对单个循环节点循环次数,我们应该如何测试。
对于单个循环节点而言,循环次数的边界应该为1或最大次数(假设是n次)。那么,针对如下循环次数,我们应该这样设计测试用例:
1)循环0次(即不执行循环体);
2)循环1次;
3)循环2次;
4)循环正常次数(通常为最大次数的一半);
5)循环n-1次;
6)循环n次。
4.针对单个循环节点循环过程的测试
下面,我们一起来说说,在结构化设计循环结构的循环执行过程。主要包括如下3个步骤:
1)循环的初始化
对于循环的初始化而言,应考虑循环变量的初值设置是否正确。如果初值设置错误,那么循环总次数必然受到影响。
2)循环的迭代
这里需要注意的比较多,比如:
①测试在循环体内部包含的语句执行过程中,循环变量的增量是否正确;
②重复多次循环是否导致误差累积;
③多次循环是否对内存造成压力;
④每次循环中涉及的重要变量的取值是否按预期规律发生变化;
⑤是否存在continue、break等语句,从而导致在某些循环过程中强制跳过部分语句不执行等。
3)循环的终止
另外,我们还要注意循环的终止条件是否存在边界错误。
对于SampleFunc4函数来说,同样需根据iteration的取值大小,分情况来做测试。测试情况包括两种:不执行循环体和多次执行循环体。这里,我们也根据循环变量i、其增量1、最大值iteration和退出条件等内容来做测试。
事实上,针对循环的测试并非一个完整的动态测试的过程,而是一个类似静态检查和调试的过程。
5、针对多个循环结构的测试
下面,我们来说说针对多个循环结构的测试应该怎么做。当循环节点存在不同形式的组合时,我们对循环的测试需要考虑更多内容。比如:
1)循环节点的串联
当各循环节点为串联形式时,若各个判定节点相互独立,那就根据单个循环体的测试原则进行测试即可;
当串联的各循环节点存在相互关联时,循环次数和循环过程存在一定的不确定性,此时,我们不能孤立地测试每个循环节点,而应在参照单个循环节点的原则来测试,并结合对数据变量,来做补充测试。
2)循环节点的嵌套
当循环节点为嵌套,且判定节点相互独立时,我们可以按照由内向外的次序,先测试最内层循环体,然后逐步外推,直至测试到最外层的循环体。4种特殊组合如下:
① 内层最小循环次数,外层最小循环次数;
② 内层最小循环次数,外层最大循环次数;
③ 内层最大循环次数,外层最小循环次数;
④ 内层最大循环次数,外层最大循环次数。
3)非结构化的循环
最后,如果是非结构化循环结构,那么对程序员来说,就比较困难了。因为这样的循环结构通常无法测试,需重新设计成结构化的程序再进行测试。
当然啦,如果是这样,最好就是程序员来测,因为他们能修改代码。而一般的测试人员无法做到这一点,因此,只能通过参照单个循环体的测试原则,来设计测试用例,并兼顾循环嵌套条件,对循环次数多种特殊组合情况,来进行测试。
发表评论
暂时没有评论,来抢沙发吧~