测试循环结构经常踩坑?那些测试老司机们都这样处理~

对于很多小伙伴来说,循环结构是一个既简单又复杂的测试内容。因为,在测试过程中,多次重复循环可能导致内存泄漏,甚至存在边界错误。

因此,在做循环结构测试时,我们一定要重点关注循环过程的正确性。换句话说,就是关注在循环的边界和运行界限内,对循环体的执行过程的正确性。因为只有这样,才能有效地提升测试工作效率,避免浪费时间。

为了让大家更清楚的了解在循环结构测试过程中,我们怎样编写用例能有效避雷,故撰写本文。希望能给经常做循环结构测试的小伙伴一点帮助。

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次。

我们都知道,当被测循环体的循环次数固定时,我们只要参照以上原则设计测试用例即可。但是,假如设计变得比较复杂,我们又应该如何处理呢?

例如,在如下的函数SampleFunc4中,输入参数为interation,函数内部的for循环中,i为循环变量,初值为1, iteration是变量i的终止条件。那么,循环册数应该是对少呢?

其实很简单,即iteration和i的初值的大小关系,最终决定该循环体的循环次数。

          void SampleFunc4( int iteration )

          {// iteration决定循环的次数

          1  for(int i=1; i<iteration; i++)

          2   printf(“i=%d\n”, i);

          }

下面分情况来说:

l 当iteration=1时,i的初值等于iteration,程序不执行循环体;

l 当iteration<1时,比如:iteration=0时,i的初值比iteration还大,因此,程序不会执行循环体。这种情况下,我们只需要测试循环0次的情况;

l 当iteration>1时,i将进入循环体,执行循环。在这个时候,我们应该尽量测试关于循环次数的所有典型情况。

(例如:我们取iteration=10,对应最大循环次数为9。根据前面的分析,我们对该函数的测试应从如下各方面展开。)

4针对单个循环节点循环过程的测试

下面,我们一起来说说,在结构化设计循环结构的循环执行过程。主要包括如下3个步骤:

1)循环的初始化

对于循环的初始化而言,应考虑循环变量的初值设置是否正确。如果初值设置错误,那么循环总次数必然受到影响。

2)循环的迭代

这里需要注意的比较多,比如:

①测试在循环体内部包含的语句执行过程中,循环变量的增量是否正确;

②重复多次循环是否导致误差累积;

③多次循环是否对内存造成压力;

④每次循环中涉及的重要变量的取值是否按预期规律发生变化;

⑤是否存在continue、break等语句,从而导致在某些循环过程中强制跳过部分语句不执行等。

3)循环的终止

另外,我们还要注意循环的终止条件是否存在边界错误。

对于SampleFunc4函数来说,同样需根据iteration的取值大小,分情况来做测试。测试情况包括两种:不执行循环体和多次执行循环体。这里,我们也根据循环变量i、其增量1、最大值iteration和退出条件等内容来做测试。

事实上,针对循环的测试并非一个完整的动态测试的过程,而是一个类似静态检查和调试的过程。

5针对多个循环结构的测试

下面,我们来说说针对多个循环结构的测试应该怎么做。当循环节点存在不同形式的组合时,我们对循环的测试需要考虑更多内容。比如:

1)循环节点的串联

当各循环节点为串联形式时,若各个判定节点相互独立,那就根据单个循环体的测试原则进行测试即可;

当串联的各循环节点存在相互关联时,循环次数和循环过程存在一定的不确定性,此时,我们不能孤立地测试每个循环节点,而应在参照单个循环节点的原则来测试,并结合对数据变量,来做补充测试。

2)循环节点的嵌套

当循环节点为嵌套,且判定节点相互独立时,我们可以按照由内向外的次序,先测试最内层循环体,然后逐步外推,直至测试到最外层的循环体。4种特殊组合如下:

① 内层最小循环次数,外层最小循环次数;

② 内层最小循环次数,外层最大循环次数;

③ 内层最大循环次数,外层最小循环次数;

④ 内层最大循环次数,外层最大循环次数。

3)非结构化的循环

最后,如果是非结构化循环结构,那么对程序员来说,就比较困难了。因为这样的循环结构通常无法测试,需重新设计成结构化的程序再进行测试。

当然啦,如果是这样,最好就是程序员来测,因为他们能修改代码。而一般的测试人员无法做到这一点,因此,只能通过参照单个循环体的测试原则,来设计测试用例,并兼顾循环嵌套条件,对循环次数多种特殊组合情况,来进行测试。

希望上述内容能帮助大家,减少在循环结构测试中踩雷的次数。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,444评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,421评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,036评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,363评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,460评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,502评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,511评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,280评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,736评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,014评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,190评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,848评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,531评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,159评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,411评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,067评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,078评论 2 352

推荐阅读更多精彩内容