本篇文章给大家谈谈软件测试案例经典方法|单元测试方法案例,以及对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
单元测试又称模块测试,是测试软件设计的最小单元的功能、性能、接口和设计约束的正确性,检查程序是否有语法、格式和逻辑上的错误,验证程序是否符合要求。与规格。发现机组内部可能存在的各种缺陷。
单元测试的对象是软件设计的最小单元,——个模块、函数或类。在传统的结构化编程语言(如C语言)中,单元测试的对象一般是函数或过程。在面向对象的设计语言(如Java和C#)中,单元测试的对象可以是类,也可以是类的成员函数/方法。可见,单元测试与编程、编码密切相关。测试人员需要根据详细的设计说明和源程序清单了解模块的I/O条件和逻辑结构。
本节以风靡全球的“俄罗斯方块游戏排行榜”程序为例,谈谈单元测试的内容。
1. 目的
俄罗斯方块游戏(Tetris)的排名功能编码完成后,需要进行单元测试,测试其功能点的正确性和有效性,然后才能与其他模块集成。以免在后续的集成工作中引入更多的问题。
2. 背景
俄罗斯方块是世界各地流行的视频游戏机和手持游戏机游戏。它是由俄罗斯人阿列克谢·帕吉特诺夫发明的,因此得名。俄罗斯方块的基本规则是移动、旋转和放置游戏自动输出的各种方块,使它们排列成一排或多排完整的行并消除以获得分数。
排行榜功能是俄罗斯方块游戏不可或缺的一部分,用于将当前用户的分数与历史分数记录进行比较和重新排序。
本程序涉及的主要功能点包括历史记录文件的读取、比分排名的计算和排序、新记录文件的保存、新记录的显示等。这些功能将在一场比赛结束并公布比赛比分后被激活。获得。
3.待测试源码
private void gameOver(int Score)//游戏结束{//显示游戏结束string s=’你的分数为:’;string al=’.char[]A={};int i=1;_blockSurface.FontStyle=new Font (FontFace,BigFont);//设置基本格式_blockSurface.FontFormat.Alignment=StringAlignment.Near;_blockSurface.DisplavText=’GAME OVER!string sc=Convert.ToString(score);//获取当前玩家的得分//write into file;string path=’D: test2.txt’;//文件路径try{FileStream fs=newFileStream(path,FileMode.OpenOrCreate,FileAccess.ReadWrite);StreamReader strmreader=new StreamReader(fs);//创建读取文件流String[] str=new String[5];String[] split=new String[5];while(strmreader.Peek()!=-1)for(i=0;i5;i++)strli]=strmreader .ReadLine();//以行为单位读取并赋值给数组//str[i]split[i]split[i]=str[i].split(‘:’)[1];//根据’ :’将文本分开并赋值给数组person1=Convert.ToInt32(split[0]); //splt[0]的值赋给第一个person2=Convert.ToInt32(split[1]); //splt[1] splt[2]的值赋给第一个person3=Convert.ToInt32(split[2]); //splt[2]的值赋给第一个人4=Convert.ToInt32(split[3]); //将splt[3]的值赋值给第一个person5=Convert.ToInt32(split[4]); //将splt[4]的值赋给第一人strmreader.Close(); //关闭流fs.Close();FileStream ffs=newFileStream(path , FileMode.OpenOrCreate,FileAccess.ReadWrite));StreamWriter sw=new StreamWriter(ffs)//建立写文件流if(_score person1)//如果当前分数大于第一名,则排序{person5=person4;人4=人3;人3=人2;人2=人1; person1=score;}else if(_score person2)//如果当前分数大于第二名,则排序{person5=person4;人4=人3;人3=人2; person2=_score;}else if (_score person3)//如果当前分数大于第三名,则排序{person5=person4;人4=人3; person3=_score;else if(_score person4)//如果当前分数大于第四位,则排序{person5=person4; person4=_score;}else if(_score person5)//如果当前分数大于第五位,则排序{person5=_score;//文件字符串中的文件内容ppl=’第一名:”+ Convert.ToString (person1 );string pp2=’第二名:’+ Convert.ToString(person2);string pp3=’第三名:”+ Convert.ToString(person3);string pp4=’第四名:’+ Convert.ToString( person4 );string pp5=’第五名’+ Convert.ToString(person5);stringppR=pp1+’r\n’+ pp2 +’r\n’ + pp3 +’r\n’+ pp4+’r\n’ + pp5 +’r\n’;byte[] info=new UTF8Encoding(true).GetBytes(ppR);sw.Write(ppR); //将内容写入文件sw.Close();ffs.Close() ;}Catch(Exception ex){Console.WriteLine(ex.ToString());}S=s+”+ sC;//绘制用于显示文本的表面;MessageBox.Show(s); //在界面中显示排名列表内容}
02、测试设计
下面将使用相关的静态和动态(白盒测试、黑盒测试)方法对案例进行相应的测试,并得到测试报告和错误列表,可以进一步反馈给开发人员以修复实际项目中的错误。确认并修复。
1. 代码演练
使用代码走查的方法检查本模块的代码,对代码质量进行初步评估。具体实现如表1所示。
表1 代码审查状态记录
从表1分析可以看出,该模块代码的基本情况如下。
(1)代码直观。
(2)规范与设计文件的对应关系。
(3) 删除了无用的代码。
(4)注释过于简单。
2. 基本路径测试方法
基本路径测试方法是通过分析控制结构的循环复杂度并根据程序控制流图推导可执行路径集来设计测试用例的方法。首先需要对程序模块进行简化,绘制出程序模块如图2所示。然后按照模块图的设计路径进行覆盖策略。主要可以分为以下4个步骤。
图2 程序模块图
1)画出程序的控制流程图
基本路径测试方法的第一步是绘制控制流图。根据程序模块图的逻辑关系,得到程序块的控制流图,如图3所示。
图3 程序模块控制流程图
2)计算圈复杂度
其次,根据控制流图计算圈复杂度。环复杂性是一种软件度量,可定量测量程序的逻辑复杂性。该度量将用于计算程序的基本独立路径的数量。确保所有语句执行至少一次测试次数的上限。
V(G)=P+1=5+1=6
根据上式,确定至少必须覆盖6条路径。
3)导出独立路径
根据控制流图可以很容易得到以下6条路径。
路径1:1-2-11。
路径2:1-3-4-11。
路径3:1-3-5-6-11。
路径4:1-3-5-7-8-11。
路径5:1-3-5-7-9-10-11。
路径6:1-3-5-7-9-11。
4)设计测试用例
最后,设置一组初始参数来设计测试用例。制作:
人1=23
人2=20
人3=10
人4=6
人5=4
作为测试输入,测试用例可以设计如表2 所示。
表2 基本路径方法测试用例
3. 边界值分析
边界值分析利用输入变量的最小值、略大于最小值、输入范围内的任意值、略小于最大值、最大值等来设计测试用例。
由于输入只会是数据,并且数据都大于0,所以可以是:
人1=23
人2=20
人3=10
人4=6
人5=4
采用边值法设计的试验实例如表3所示。
表3 边界值法测试用例
03、测试执行
将设计好的测试用例组织并合并为测试用例集合。如有必要,开发相应的驱动模块和存根模块。本次测试需要开发一个驱动模块来初始化相应的参数并调用被测模块来达到测试效果。驱动模块代码如下。
原创文章,作者:小su,如若转载,请注明出处:https://www.sudun.com/ask/182912.html
用户评论
花开丶若相惜
单元测试法确实挺厉害的,可以快速定位问题所在,而且代码量小就好理解!最近在学这个方法,感觉用在这个项目上效率会大增!
有18位网友表示赞同!
幸好是你
这篇文章讲得真不错,入门级软件测试想要了解基本用例设计思路,这个方法一定要学习!实践起来确实能帮我提高编程效率和代码质量。不过对于复杂系统来说,单元测试似乎有些局限性…
有11位网友表示赞同!
?亡梦爱人
虽然单元测试法简单易懂,但有时候要写出完备的测试案例确实不容易啊,需要对代码结构和逻辑理解得透徹。这篇文章的示例还是挺好的,可以参考学习!
有18位网友表示赞同!
盲从于你
我之前也喜欢用单元测试法,感觉能提高代码可维护性和复用性。但是它有时候过度抽象化了程序执行流程,可能会忽略一些业务场景中的边界情况和异常处理…
有19位网友表示赞同!
裸睡の鱼
软件测试用例经典方法里最让我印象深刻的就是单元测试了,因为它可以帮助我快速找到bug所在!这篇案例分析真是太棒了,清晰易懂,强烈推荐给想学习软件测试的新手!
有17位网友表示赞同!
浮殇年华
我感觉这篇文章的编写思路比较浅显,针对性不够强。对有一定经验的软件测试人员来说可能没有什么新意…
有10位网友表示赞同!
枫无痕
确实,单元测试法在快速迭代开发中非常有用,可以实时检测代码变化带来的问题。这篇案例分析写得详细,很有参考价值!
有5位网友表示赞同!
野兽之美
我更偏向于黑盒测试方法,虽然单元测试法能定位bug效率高,但是它局限性很大,很难发现隐藏比较深层的逻辑缺陷…
有8位网友表示赞同!
漫长の人生
学习过一些软件测试的知识,但一直没有实践过。看了这篇文章后感觉单元测试法实惠,可以试试在自己的项目中运用一下!
有7位网友表示赞同!
爱情的过失
我觉得文章中的案例分析太过简单化了,实际应用场景下单元测试需要考虑更多复杂因素…
有10位网友表示赞同!
堕落爱人!
软件测试用例确实很重要,要覆盖所有可能的场景。这篇文章介绍的单元测试法让我明白了这种方法可以用来测试代码逻辑和边界条件、提高测试效率!
有8位网友表示赞同!
发型不乱一切好办
我之前在开发的时候没有关注过软件测试,现在越来越觉得重要了。学习一下单元测试法,希望能提高代码质量,减少出错的概率!
有16位网友表示赞同!
烟雨离殇
这篇文章写的不错,详细介绍了单元测试法的核心原理和实践步骤。希望能有更多的案例分析,深入讲解如何应对复杂项目中的测试挑战…
有8位网友表示赞同!
一纸愁肠。
软件测试很复杂,需要考虑很多因素。但是只要掌握好基本方法,比如单元测试法,就能逐步提高代码质量!这篇文章给我提供了很多启发…!
有7位网友表示赞同!
巷雨优美回忆
我对软件测试用例了解不多,这篇博客让我对单元测试法的概念了解得更加透彻了。希望以后能够多学习一些实践经验!
有8位网友表示赞同!
慑人的傲气
感觉这篇文章比较注重理论讲解,缺乏实际应用实例。想要真正理解并运用单元测试法,还需要结合具体的代码案例进行深入研究…
有16位网友表示赞同!
君临臣
软件测试很重要,这个单元测试法挺管用的,可以帮助我们快速发现bug,提高开发效率! 文章写的不错,推荐大家学习!
有9位网友表示赞同!
桃洛憬
学习了软件测试用例的经典方法后,我明白了单元测试法的重要性。虽然它有些局限性,但对于快速定位问题和提高代码质量还是很有用的。
有16位网友表示赞同!