Python白盒测试实验报告
- 格式:doc
- 大小:1.04 MB
- 文档页数:6
实验一:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。
熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元1年1月1日是星期一,只要输入年月日,能自动回复当天是星期几;测试环境:Windows vista、Dev C++;说明:本次测试采用插桩测试法,由于程序简单,手动输入测试用例。
程序说明:A程序思路:计算输入日期与公元1年1月1日所相差的天数,具体如下:总天数=公元1年到输入日期上一年年底天数+输入年份的1月到上月月底天数+输入日期的天数B闰年满足条件(year%4==0)&&(year%100!=0)||(year%400==0)(1)分析各种输入情况,结合程序输出结果,并给出详细测试用例;(2)根据(1)所划分的等价类,进行边界值分析,并给出具体的测试用例;(3)决策表测试法;①列出输入变量month、 day、 year的有效等价类;(条件桩)②分析程序的规格说明,给出问题规定的可能采取操作;(动作桩)③画出决策表(简化);④根据决策表,给出详细测试用例。
代码:(被测部分为while循环内部语句)#include <iostream>using namespace std;int main(){int x=1,year, month, day;while(x){1.int i, num=0,total, total1, total2;2.cout<<"请输入年份: ";3.cin>>year;4.cout<<"请输入月份: ";5.cin>>month;6.cout<<"请输入日期: ";7.cin>>day;//求得输入年份之前一年末的总天数8.for(i=1; i<year; i++){9.if((i%4==0)&&(i%100!=0)||(i%400==0))10.num++;}11.total1 = 365*(year-num-1) + 366*num;//求得输入年份的总天数12.if((year%4==0)&&(year%100!=0)||(year%400==0)){//求得输入月份之前一月末的总天数13.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 60;break;case 4:total2 = 91;break;case 5:total2 = 121;break;case 6:total2 = 152;break;case 7:total2 = 182;break;case 8:total2 = 213;break;case 9:total2 = 244;break;case 10:total2 = 274;break;case 11:total2 = 305;break;case 12:total2 = 335;break;}}else{14.switch(month){case 1:total2 = 0;break;case 2:total2 = 31;break;case 3:total2 = 59;break;case 4:total2 = 90;break;case 5:total2 = 120;break;case 6:total2 = 151;break;case 7:total2 = 181;break;case 8:total2 = 212;break;case 9:total2 = 243;break;case 10:total2 = 273;break;case 11:total2 = 304;break;case 12:total2 = 334;break;}}//在加上输入的日,求其总和可得到从公元1年1月1日到输入日期当天的总天数15.total = total1 + total2 + day;16.int week;17. week = total % 7;18.cout<<"您输入的日期是";19.switch(week){case 0:cout<<"星期天"<<endl;break;case 1:cout<<"星期一"<<endl;break;case 2:cout<<"星期二"<<endl;break;case 3:cout<<"星期三"<<endl;break;case 4:cout<<"星期四"<<endl;break;case 5:cout<<"星期五"<<endl;break;case 6:cout<<"星期六"<<endl;break;}cout<<"**********退出程序请输入0,否则任一输入继续**********"<<endl;cin>>x;}}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有六条,故环路复杂度为六。
软件测试基础与实践实验报告实验名称:白盒测试实验三实验地点:机房实验日期:学生姓名:学生学号:一、实验目的(1)巩固白盒测试知识,能应用数据流覆盖方法设计测试用例;(2)学习测试用例的书写。
二、实验背景:在 Web 服务等应用中,CGI(Common Gateway Interface)是用户访问服务器端 Web 页面内容的一种传输标准。
在应用程序开发中,常常需要将 CGI 编码的字符串解码为普通的 ASCII 字符串。
程序 CgiDecode 正实现了此功能。
实验1:数据流测试技术实验运用数据流测试方法,对CgiDecode 程序中的decode()方法进行测试。
要求:(1) 测试要考虑decode()中encoded, decoded, *eptr, eptr, *dptr, dptr, ok, c, digit_high, digit_low 变量;(2) 给出每个变量对应的du-path;(3) 根据变量的du-path 设计测试用例,完成对decode()的测试;decode()函数的语句及其编号如下:1 /** Translate a string from the CGI encoding to plain ascii text.2 * '+' becomes space, %xx becomes byte with hex value xx,3 * other alphanumeric characters map to themselves.4 * Returns 0 for success, positive for erroneous input5 * 1 = bad hexadecimal digit6 */7 int decode(char *encoded, char *decoded)8 {9 char *eptr = encoded;10 char *dptr = decoded;11 int ok=0;12 while (*eptr)13 {14 char c;15 c = *eptr;16 if (c == '+')17 { /* Case 1: '+' maps to blank */19 }20 else if (c == '%')21 { /* Case 2: '%xx' is hex for character xx */22 int digit_high = getHexValue(*(++eptr));23 int digit_low = getHexValue(*(++eptr));24 if ( digit_high == -1 || digit_low==-1) {25 /* *dptr='?'; */26 ok=1; /* Bad return code */27 } else {28 *dptr = 16* digit_high + digit_low;29 }30 } else {/* Case 3: All other characters map to themselves */31 *dptr = *eptr;32 }33 ++dptr;34 ++eptr;36 *dptr = '\0'; /* Null terminator for string */37 return ok;38 }流图如图所示(双击可打开和编辑)79/10/111214/15162022/232426283133/341836/37Encoded可能的路径数为:1×1=1 P:7-9测试用例:Decoded可能的路径数为:1×1=1 P:7-9-10测试用例:*eptr可能的路径数为:4×5=20P1:9-10-11-12P2:9-10-11-12-14-15P3:9-10-11-12-14-15-16-20-31P4:9-10-11-12-14-15-16-20-22P5:9-10-11-12-14-15-16-20-22-23 P6:22-23-24-28-33-34-12P7:22-23-24-28-33-34-12-14-15P8:22-23-24-28-33-34-12-14-15-16-20-31 P9:22P10:22-23P11:23-24-28-33-34-12P12:23-24-28-33-34-12-14-15P13:23-24-28-33-34-12-14-15-16-20-31 P14:23-24-28-33-34-12-14-15-16-20-22 P15:23P16: 34-12P17: 34-12-14-15P18:34-12-14-15-16-20-31P19:34-12-14-15-16-20-22P20:34-12-14-15-16-20-22-23约简后得:P1:9-10-11-12-14-15-16-20-31P2:9-10-11-12-14-15-16-20-22-23P3:22-23-24-28-33-34-12-14-15-16-20-31P4:23-24-28-33-34-12-14-15-16-20-22 测试用例:Eptr可能的路径数为:4×6=24P1:9-10-11-12P2:9-10-11-12-14-15P3:9-10-11-12-14-15-16-20-31P4:9-10-11-12-14-15-16-20-22P5:9-10-11-12-14-15-16-20-22-23P6:9-10-11-12-14-15-16-18-33-34P7:22-23-24-28-33-34-12P8:22-23-24-28-33-34-12-14-15P9:22-23-24-28-33-34-12-14-15-16-20-31 P10:22P11:22-23P12:22-23-24-28-33-34P13:23-24-28-33-34-12P14:23-24-28-33-34-12-14-15P15:23-24-28-33-34-12-14-15-16-20-31 P16:23-24-28-33-34-12-14-15-16-20-22P17:23P18:23-24-28-33-34P19:34-12P20:34-12-14-15P21:34-12-14-15-16-20-31P22:34-12-14-15-16-20-22P23:34-12-14-15-16-20-22-23P24:34约简后:P1:9-10-11-12-14-15-16-20-31P2:9-10-11-12-14-15-16-20-22-23P3:9-10-11-12-14-15-16-18-33-34P4:22-23-24-28-33-34-12-14-15-16-20-31 P5:23-24-28-33-34-12-14-15-16-20-22测试用例:*dptr可能的路径数为:0 测试用例:无Dptr可能的路径数为:2×5=10P1:10-11-12-14-15-16-18P2:10-11-12-14-15-16-20-22-23-24-28P3:10-11-12-14-15-16-20-31 P4:10-11-12-14-15-16-20-31-33-34-12-36 P5:10-11-12-14-15-16-20-31-33P6:33-34-12-14-15-16-18P7:33-34-12-14-15-16-20-22-23-24-28P8:33-34-12-14-15-16-20-31P9:33P10:33-34-12-36约简后:P1:10-11-12-14-15-16-18P2:10-11-12-14-15-16-20-22-23-24-28P3:10-11-12-14-15-16-20-31-33-34-12-36 P4:33-34-12-14-15-16-18P5:33-34-12-14-15-16-20-22-23-24-28P6:33-34-12-14-15-16-20-31测试用例:Ok可能的路径数为:1×2=2 P1:11-12-36-37P2:26-33-34-12-36-37 测试用例:C可能的路径数为:2×2=4P1:14-15-16P2:14-15-16-20 P3:15-16P4:15-16-20约简后:P:14-15-16-20 测试用例:digit_high可能的路径数为: 1×2=2 P1:22-23-24P2:22-23-24-28约简后:P:22-23-24-28测试用例:digit_low可能的路径数为: 1×2=2P1:23-24P2:23-24-28约简后:P: 23-24-28测试用例:三、实验体会在白盒测试中数据流测试是一个很重要的测试方法,通过这次实验,加深了对数据流测试的理解,特别是在有指针的情况下,在指针发生变化的时候,会影响到相应的指针变量的值,这时候定义节点和使用节点会发生变化.应当注意.。
软件质量保证与测试实验指导计算机工程学院测试环境配置1.settingJunit(1)startEclipseSelectwindows-preferences-java-buildpath–classpathvariables(2)clicknew,thefigureofnewvariableentryisshown.(3)name JUNIT_LIBselectfile-选择JUnit插件所对应的JAR文件所在地,在Eclipse的安装目录的plugins目录中2.JUNIT的组成框架其中,junit.framework和junit.runner是两个核心包。
junit.framework负责整个测试对象的框架junit.runner负责测试驱动Junit的框架又可分为:A、被测试的对象。
B、对测试目标进行测试的方法与过程集合,可称为测试用例(TestCase)。
C、测试用例的集合,可容纳多个测试用例(TestCase),将其称作测试包(TestSuite)。
D、测试结果的描述与记录。
(TestResult)。
E、每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(TestFailure)F、JUnitFramework中的出错异常(AssertionFailedError)。
JUnit框架是一个典型的Composite模式:TestSuite可以容纳任何派生自Test 的对象;当调用TestSuite对象的run()方法是,会遍历自己容纳的对象,逐个调用它们的run()方法。
3.JUnit中常用的接口和类Test接口——运行测试和收集测试结果Test接口使用了Composite设计模式,是单独测试用例(TestCase),聚合测试模式(TestSuite)及测试扩展(TestDecorator)的共同接口。
它的publicintcountTestCases()方法,它来统计这次测试有多少个TestCase,另外一个方法就是publicvoid run(TestResult),TestResult是实例接受测试结果,run方法执行本次测试。
白盒测试用例实验报告《白盒测试用例实验报告》一、实验目的本实验旨在通过白盒测试用例的实验报告,了解白盒测试的原理和方法,掌握白盒测试用例的编写和执行过程。
二、实验环境1. 软件环境:Windows 10操作系统、Eclipse集成开发环境2. 硬件环境:个人电脑三、实验内容1. 理解白盒测试的原理和方法2. 编写白盒测试用例3. 执行白盒测试用例4. 分析测试结果并撰写实验报告四、实验步骤1. 阅读相关文献,了解白盒测试的原理和方法2. 选择一个简单的软件模块,编写白盒测试用例3. 在Eclipse中创建测试类,并将编写的测试用例添加到测试类中4. 执行测试用例,观察测试结果5. 分析测试结果,撰写实验报告五、实验结果1. 经过测试,所有编写的白盒测试用例均能正确执行,并且符合预期结果2. 通过对测试结果的分析,发现了一些潜在的代码逻辑错误,并及时进行了修复3. 实验报告中详细记录了测试用例的编写过程、执行结果和分析结论六、实验总结通过本次实验,我对白盒测试有了更深入的了解,掌握了白盒测试用例的编写和执行方法。
同时,通过对测试结果的分析,我也发现了一些代码逻辑上的问题,并及时进行了修复。
这次实验不仅提高了我的软件测试能力,也增强了我对软件质量控制的认识。
七、实验感想白盒测试是软件测试中非常重要的一部分,通过本次实验,我深刻体会到了白盒测试对软件质量的重要性。
在今后的学习和工作中,我将继续深入学习白盒测试的理论知识,提高自己的测试能力,为软件质量的提升贡献自己的力量。
八、参考文献1. 《软件测试与质量保障》,王晓敏,清华大学出版社2. 《软件测试方法与技术》,李彦,人民邮电出版社以上就是本次实验的白盒测试用例实验报告,希望对大家有所帮助。
白盒测试实验报告一、实验目的。
本次实验旨在对软件系统的内部结构进行测试,以验证代码的逻辑正确性、路径覆盖率和条件覆盖率等指标,从而提高软件系统的质量和稳定性。
二、实验环境。
1. 软件系统,本次实验选择了XXX软件系统作为测试对象,该系统包含了多个模块和功能,是一个typical的软件系统。
2. 测试工具,我们使用了XXX测试工具来进行白盒测试,该工具能够帮助我们对代码进行覆盖率分析、路径跟踪和条件测试等。
3. 测试人员,实验由XXX团队的测试人员进行,每位成员都具备扎实的编程基础和测试经验。
三、实验步骤。
1. 确定测试目标,我们首先对软件系统进行分析,确定了需要测试的模块和功能,以及测试的重点和难点。
2. 设计测试用例,针对每个测试目标,我们设计了一系列的测试用例,覆盖了各种可能的输入、路径和条件组合。
3. 执行测试用例,测试人员按照设计的测试用例,对软件系统进行了全面的白盒测试,记录了测试过程中的日志和结果。
4. 分析测试结果,通过测试工具对测试结果进行分析,统计了代码的覆盖率、路径覆盖情况和条件覆盖情况,发现了一些潜在的问题和漏洞。
5. 修复和再测试,根据分析结果,开发人员对发现的问题进行了修复,然后再次进行了白盒测试,确保问题得到了解决。
四、实验结果。
经过本次实验,我们对软件系统进行了全面的白盒测试,覆盖了大部分的代码路径和条件分支,发现了一些潜在的问题和漏洞,并及时进行了修复。
最终,软件系统的质量得到了显著提高,稳定性和可靠性得到了保障。
五、实验总结。
通过本次实验,我们深刻认识到了白盒测试在软件开发过程中的重要性,它能够帮助我们发现代码中的潜在问题,提高软件系统的质量和稳定性。
同时,我们也意识到了白盒测试需要结合黑盒测试和其他测试手段来进行,以全面保证软件系统的质量。
在未来的工作中,我们将继续深入研究和应用白盒测试技术,为软件开发和测试工作贡献更多的价值。
六、参考文献。
[1] XXX.《软件测试与质量保障》. 机械工业出版社,2018.[2] XXX.《白盒测试技术与实践》. 电子工业出版社,2017.[3] XXX.《软件测试工程师教程》. 清华大学出版社,2016.以上就是本次白盒测试实验的报告内容,谢谢阅读。
白盒测试实验报告1. 引言白盒测试是软件开发过程中非常重要的一环,它能够深入了解软件内部的实现细节,发现潜在的错误和漏洞。
本次实验旨在对一款电商网站的后台管理系统进行白盒测试,并报告测试过程中发现的问题和提出的改进建议。
2. 测试环境和工具为了开展白盒测试,我们构建了一套适用于该电商网站的测试环境。
测试环境包括服务器、数据库和部署在服务器上的后台管理系统。
在测试过程中,我们使用了一系列白盒测试工具,包括静态代码分析工具、代码覆盖率工具以及调试器。
3. 功能测试在功能测试中,我们对后台管理系统的各个功能模块进行了测试。
我们模拟了管理员登录、商品管理、订单管理、用户管理等多种场景进行测试,并详细记录了测试用例、测试数据以及测试结果。
在功能测试过程中,我们发现了一些问题。
例如,某个功能模块在处理大量订单数据时出现了性能问题,导致系统响应变慢。
此外,某个功能模块在处理特定边界条件时出现了异常情况,导致系统崩溃。
4. 安全性测试在安全性测试中,我们对后台管理系统的安全性进行了评估。
我们模拟了黑客攻击、SQL注入、XSS跨站脚本等多种攻击方式进行测试,并评估系统对这些攻击的防御能力。
安全性测试中,我们发现了系统对于某些攻击方式的防御能力较弱,容易受到黑客攻击。
例如,系统在处理用户提交的数据时没有进行严格的输入验证,容易受到SQL注入攻击。
5. 性能测试在性能测试中,我们对后台管理系统的响应时间、并发性能、负载能力等进行了评估。
我们使用负载测试工具模拟了大量用户同时访问后台管理系统,以评估系统在高负载下的性能表现。
性能测试中,我们发现了系统在处理高并发请求时响应时间较长,用户体验较差。
此外,系统在处理大规模数据时处理速度较慢,需要进行性能优化。
6. 代码分析和覆盖率分析为了深入了解后台管理系统的内部实现,我们使用了静态代码分析工具对系统的源代码进行了分析。
通过分析,我们发现了一些潜在的代码问题,如代码冗余、死代码等。
青岛科技大学实验报告课程:软件测试基础实验项目:白盒测试专业:计算机科学与技术班级:惠普测试142姓名:闫伟明日期:2016-11-25实验要求:(1)根据下述C代码及对应流程图,将其转换成Python代码;void DoWork (int x,int y,int z){int k=0,j=0;if ( (x>3)&&(z<10) ){ k=x*y-1;j=sqrt(k);} //语句块1if ( (x==4)||(y>5) ){ j=x*y+10; } //语句块2j=j%3; //语句块3}流程图:Python代码:#py001.pyimport mathdef DoWork(x,y,z):k=0j=0if x>3 and z<10:k=x*y-1j=math.sqrt(k)if x==4 or y>5:j=x*y+10j=j%3return k,j(2)根据Python代码设计白盒测试用例,包括:➢语句覆盖;测试用例输入为:{ x=5、y=6、z=7 }程序执行的路径是:abd➢判定覆盖;测试用例的输入为:{x=5、y=6、z=7};{x=1、y=2、z=3}程序执行的路径分别是:abd;ace➢条件覆盖;➢判定 / 条件覆盖;➢组合覆盖对DoWork函数中的各个判定的条件取值组合加以标记:根据组合覆盖的思想,设计测试用例如下:(3)根据设计的测试用例,使用 unittest 完成测试实验。
(注:每一个测试方法用一个py文件,共5个py文件)1.test001.py# -*- encoding:utf8 -*-import unittestfrom py001 import DoWorkclass Test001(unittest.TestCase):"""语句覆盖:测试用例的输入为:{x=5、y=6、z=7}"""def test_yjfg(self):self.assertEquals(DoWork(5,6,7),(29,1))2.test002.py# -*- encoding:utf8 -*-import unittestfrom py001 import DoWorkclass Test002(unittest.TestCase):"""判定覆盖:测试用例的输入为:{x=5、y=6、z=7};{x=1、y=2、z=3}"""def test_pdfg1(self):self.assertEquals(DoWork(5,6,7),(29,1)) def test_pdfg2(self):self.assertEquals(DoWork(1,2,3),(0,0))3.test003.py# -*- encoding:utf8 -*-import unittestfrom py001 import DoWorkclass Test003(unittest.TestCase):"""条件覆盖:测试用例的输入为:{x=4、y=6、z=7};{x=1,y=2,z=13}"""def test_tjfg1(self):self.assertEquals(DoWork(4,6,7),(23,1)) def test_tjfg2(self):self.assertEquals(DoWork(1,2,13),(0,0))4.test004.py# -*- encoding:utf8 -*-import unittestfrom py001 import DoWorkclass Test004(unittest.TestCase):"""判定/条件覆盖:测试用例的输入为:{x=4、y=6、z=9};{x=3,y=5,z=10}"""def test_pdtjfg1(self):self.assertEquals(DoWork(4,6,9),(23,1)) def test_pdtjfg2(self):self.assertEquals(DoWork(3,5,10),(0,0))5.test005.py# -*- encoding:utf8 -*-import unittestfrom py001 import DoWorkclass Test005(unittest.TestCase):"""组合覆盖:测试用例的输入为:{x=4,y=6,z=6};{x=4,y=5,z=10};{x=3,y=6,z=6};{x=3,y=5,z=10};{x=5, y=5,z=5}"""def test_zhfg1(self):self.assertEquals(DoWork(4,6,6),(23,1))def test_zhfg2(self):self.assertEquals(DoWork(4,5,10),(0,0))def test_zhfg3(self):self.assertEquals(DoWork(3,6,6),(0,1))def test_zhfg4(self):self.assertEquals(DoWork(3,5,10),(0,0))def test_zhfg5(self):self.assertEquals(DoWork(5,5,5),(24,1.8989794855663558))运行截图:。
实验二:白盒测试一、实验目的保证一个模块中的所有独立路径至少被执行一次;对所有的逻辑值均需要测试真、假两个分支;在上下边界及可操作范围内运行所有循环;检查内部数据结构以确保其有效性。
二、实验内容要求:被测测试程序功能:PriorDate函数;程序定义:为了获得前一个日期, PriorDate函数执行如下操作:(默认年数大于等于0)如果输入日期day变量值大于1,则把day变量的值减1;如果输入日期是2~12月份中某月的第一天,则把day变量的值置为前一个月的最后一天,month变量的值减1;如果输入日期是1月的第一天,则day变量的值置为31,month变量的值置为12,year变量的值减1。
关于最后一天的判断:如果是有31天的月份(1,3,5,7,8,10,12),day变量值为31;如果是有30天的月份(4,6,9,11),day变量值为30;如果是有29天的月份(闰年的2月),day变量值为29;如果是有28天的月份(非闰年的2月),day变量值为28。
测试环境:Windows 7、Eclipse;三、实验要求根据代码调通程序并进行白盒测试,即用语句覆盖、分支覆盖、条件覆盖、分支/条件覆盖、条件组合覆盖及基本路径测试方法,写出测试用例,执行测试,给出测试报告,实验报告。
四、实验测试用例与测试结果程序的流程图如下图:1.语句覆盖语句覆盖就是设计若干个测试用例,运行被测程序,使得每一可执行语句至少执行一次。
测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于02.分支覆盖执行足够的测试用例,使得程序中的每一个分支至少都通过一次测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=12,year=2012 OBDFHL Y 前一天为:12 11 2012 month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于03.条件覆盖测试数据执行路径结果month=13,day=32,year=-10OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=0,day=0,year=1800 OACEGZ 日的范围为:1 (31)月的范围为:1 (12)年应该大于0month=12,day=1,year=2012 OBDFHMY 前一天为:11 30 2012 month=11,day=12,year=2012 OBDFINY 前一天为:11 11 2012 month=11,day=1,year=2012 OBDFIPY 前一天为:10 31 2012 month=3,day=12,year=2000 OBDFJQY 前一天为:3 11 2000 month=3,day=1,year=2000 OBDFJRY 前一天为:2 29 2000 month=3,day=1,year=2012 OBDFJRY 前一天为:2 28 2012 month=1,day=12,year=2012 OBDFKSY 前一天为:1 11 2012 month=1,day=1,year=2012 OBDFKTWY 前一天为:12 31 2009 month=1,day=1,year=0 OBDFKTXY 上一年也应大于0执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
实验报告书实验一白盒测试学生姓名:李庆忠专业:计算机科学与技术学号:17白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
流程图如下图所示实验代码#include""int main(){int x,y,z;scanf("%d%d",&x,&y);if((x>0)&&(y>0)){z=x+y+10;}else{z=x+y-10;}if(z<0){z=0;printf("%d\n",z);}else{printf("%d\n",z);}return 0;}语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。
如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。
白盒测试实验报告白盒测试实验报告引言:白盒测试是软件测试中常用的一种测试方法,它通过分析程序的内部结构和逻辑,以验证软件的正确性和稳定性。
本实验旨在通过对一个简单的计算器程序进行白盒测试,探索白盒测试的原理和方法,并评估其在软件开发中的实际应用价值。
实验设计:本实验使用了一个基于Python的计算器程序作为被测试对象,该程序具有加、减、乘、除等基本运算功能。
实验设计包括了以下几个步骤:1. 程序结构分析:通过查看程序的源代码,了解程序的整体结构和模块之间的关系,为后续的测试设计提供依据。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,确定测试用例需要覆盖的代码行数和分支情况,以提高测试的全面性和准确性。
3. 测试用例设计:根据程序的功能和结构特点,设计一系列测试用例,包括正常输入、边界值和异常情况等,以覆盖不同的测试场景。
4. 测试执行:按照设计的测试用例,逐个执行测试,并记录测试结果和执行过程中的问题和异常情况。
5. 结果分析:对测试结果进行分析,评估程序的稳定性和正确性,并提出改进建议。
实验过程:1. 程序结构分析:通过阅读源代码,了解到该计算器程序由界面层、逻辑层和数据层三个模块组成,各模块之间通过接口进行通信。
这样的结构设计使得程序的扩展和维护更加方便。
2. 程序覆盖率分析:使用代码覆盖率工具对程序进行分析,发现在逻辑层中有几个分支未被覆盖到,这可能导致在某些特定情况下程序出现错误。
因此,在测试用例设计中,需要特别关注这些分支情况。
3. 测试用例设计:根据程序的功能和结构特点,设计了一系列测试用例。
例如,对于加法功能,设计了正常输入的测试用例,包括两个正整数相加、两个负整数相加、一个正整数和一个负整数相加等;同时,还设计了边界值测试用例,例如对于两个最大整数相加、两个最小整数相加等。
4. 测试执行:按照设计的测试用例,逐个执行测试。
在测试过程中,发现了一些问题,例如在除法功能中,当除数为0时,程序没有正确处理异常情况,导致程序崩溃。
实验报告书实验一白盒测试学生姓名:李庆忠专业:计算机科学与技术学号:1341901317白盒测试实验报告一实验内容1、系统地学习和理解白盒测试的基本概念、原理,掌握白盒测试的基本技术和方法;2、举例进行白盒测试,使用语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖、路径覆盖进行测试。
3、通过试验和应用,要逐步提高和运用白盒测试技术解决实际测试问题的能力;4、熟悉C++编程环境下编写、调试单元代码的基本操作技术和方法;5、完成实验并认真书写实验报告(要求给出完整的测试信息,如测试程序、测试用例,测试报告等)二实验原理白盒测试原理:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。
它是把测试对象看作装在一个透明的白盒子里,也就是完全了解程序的结构和处理过程。
这种方法按照程序内部的逻辑测试程序,检验程序中的每条通路是否都能按预定要求正确工作。
其又称为结构测试。
流程图如下图所示实验代码#include"stdio.h"int main(){int x,y,z;scanf("%d%d",&x,&y);if((x>0)&&(y>0)){z=x+y+10;}else{z=x+y-10;}if(z<0){z=0;printf("%d\n",z);}else{printf("%d\n",z);}return 0;}语句覆盖是指选择足够的测试,使得程序中每个语句至少执行一次。
如选择测试x=1,y=1和x=1,y=-1可覆盖所有语句。
判定覆盖是指选择足够的测试,使得程序中每一个判定至少获得一次“真”值和“假”值,从而使得程序的每个分支都通过一次(不是所有的逻辑路径)。
选择测试x=1,y=1和x=1,y=-1可覆盖所有判定。
条件覆盖是指选择语句多数的测试,使得程序判定中的每个条件能获得各种不同的结果。
白盒测试实验报告一、实验目的本次白盒测试实验的主要目的是深入理解白盒测试的基本原理和方法,通过对给定程序的分析和测试,掌握代码覆盖的评估标准,提高测试用例的设计能力,发现程序中的逻辑错误和潜在缺陷,从而保障软件的质量和可靠性。
二、实验环境本次实验使用的编程环境为具体编程环境名称,测试工具为具体测试工具名称。
三、实验内容1、被测试程序的功能描述被测试程序是一个简单的数学计算程序,用于实现两个整数的加法、减法、乘法和除法运算。
程序接收用户输入的两个整数,并根据用户选择的运算类型进行相应的计算,最后输出计算结果。
2、程序代码分析以下是被测试程序的部分关键代码:```pythondef add_numbers(num1, num2):return num1 + num2def subtract_numbers(num1, num2):return num1 num2def multiply_numbers(num1, num2):return num1 num2def divide_numbers(num1, num2):if num2!= 0:return num1 / num2else:return "除数不能为 0"```3、测试用例设计为了全面测试程序的功能,设计了以下测试用例:|测试用例编号|输入数据(num1, num2, 运算类型)|预期输出|||||| 1 |(5, 3, 'add')| 8 || 2 |(5, 3,'subtract')| 2 || 3 |(5, 3,'multiply')| 15 || 4 |(6, 2, 'divide')| 3 || 5 |(5, 0, 'divide')|除数不能为 0 |4、代码覆盖分析在执行测试用例的过程中,使用测试工具对代码的覆盖情况进行了分析。
结果显示,语句覆盖达到了 100%,但分支覆盖只达到了 80%。
软件测试实验二一:实验目的1.通过实验熟悉测试用例设计2.通过实验熟悉白盒测试二:实验内容1:1.用java编写一个类,完成下面函数的功能,并编写另外一个类,调用该方法:void DoWork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1; //语句块1j=sqrt(k);}if((x= =4)||(y>5)){j=x*y+10; //语句块2}j=j%3; //语句块3}试验内容2:1、画出上面函数的流程图。
2、分别使用语句覆盖、判定覆盖(也称为分支覆盖)、条件覆盖、判定-条件覆盖、条件组合测试、路径测试设计测试用例(注意测试用例的格式)。
3、执行每个测试用例,执行完毕后填写测试用例。
public class Test{static void dowork(int x,int y,int z){int k=0,j=0;if((x>3)&&(z<10)){k=x*y-1;j=(int)Math.sqrt(k);}if((x==4)||(y>5)){j=x*y+10;}j=j%3;System.out.println("k="+k);System.out.println("j="+j);}public static void main(String[] args){dowork(4,6,5);}}三:设计测试用例1.语句覆盖x=4,y=6,z=53.条件覆盖x>3为真,记为T1x>3为假,记为-T1z<10为真,记为T2z<10为假,记为-T2x=4为真,记为T3x=4为假,记为-T3y>5为真,记为T45.条件组合覆盖1.X>3,Z<10,记为T1,T22.X>3,Z>=10,记为T1,-T23.X<=3,Z<10,记为–T1,T24.X<=3,Z>=10记为–T1,-T25.X=4,Y>5 记为T3,T46.X=4,Y<=5 记为T3,-T47.X<>4,Y>5 记为–T3,T4。
实验报告一、实验目的1.熟练掌握如何运用基路径测试方法进行测试用例设计。
2.初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容1、题目前一日函数PreDate是NextDate的逆函数(代码实现见下),实现功能为:输入1800 年到2050 年之间的某个日期,函数返回这一天的前一天的日期。
(此处不考虑无效输入)请采用基路径方法对前一日函数进行测试用例设计,并利用程序插装技术对测试用例的判定覆盖率进行检查分析。
代码:(被测函数为PreDate)#include""typedef struct MyDate{int month;int day;int year;}MyDate;MyDate PreDate(MyDate date);int Leapyear(int year);void Print(MyDate date);MyDate PreDate(MyDate date)//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据{yesterday;= ; // initialization= ;= ;days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31};//初始化每月天数,其中2月不确定,初始化为0 >1)else{==1){} if==3){(Leapyear){}else{}}else{}}yesterday;}Leapyear(int year){((year%4==0&&year%100!=0) || (year%400==0))1;return 0;}void Print(MyDate date){("%d--%d--%d\n",,,;}2、测试用例设计1)控制流图2)环路复杂度计算由图可知,图中的环路有五条,故环路复杂度为五。
3)基本路径集设计基本路径集为:A.1、2、3、4、5、6、8、12、13、14、15、20、25B.1、2、3、4、5、6、8、12、16、17、20、25C.1、2、3、4、5、6、8、12、18、19、20、25D.1、2、3、4、5、6、8、9、10、11、20、25E.1、2、3、4、5、6、7、20、254)测试用例集设计测试用例集为:2000-1-2 2000-1-1 2000-3-11999-3-1 1980-5-13、插装后源程序清单与判定覆盖率分析结果(要求截取插装后程序运行界面)#include""typedef struct MyDate{int month;int day;int year;}MyDate;int a[6];MyDate PreDate(MyDate date);int Leapyear(int year);void Print(MyDate date);int count();MyDate PreDate(MyDate date)//输入日期有效性检查中其他模块实现,此处假设输入日期都是合法数据{MyDate yesterday;= ; // initialization= ;= ;int days_month[13]={0,31,0,31,30,31,30,31,31,30,31,30,31}; //初始化每月天数,其中2月不确定,初始化为0if>1){a[0]=count();=;}else{a[1]= count();if==1){a[2]= count();=;=12;=31;}else if==3){a[3]=count();if(Leapyear){a[4]=count();=2;=29;}else{a[5]=count();=2;=28;}}else{a[6]=count();=;=days_month[];}}return yesterday;}int Leapyear(int year){if((year%4==0&&year%100!=0) || (year%400==0)) return 1;else return 0;}void Print(MyDate date){printf("%d--%d--%d\n",,,;}int count(){return 1;}void DriverofPreDate(){int tcPassNum = 0;int tcFailNum = 0; // 存储通过和失败的测试用例总数FILE *pFpFrom=NULL;FILE *pFpTo=NULL;//----------- 打开数据文件,准备读取测试用例的数据-----------char *DataFileName="";pFpFrom=fopen(DataFileName,"r");if(!pFpFrom){printf("读取数据失败,返回\n");return; }//----------- 打开数据文件,准备记录测试用例执行结果-----------char *DataFileTestResultName="";pFpTo=fopen(DataFileTestResultName,"w");if(!pFpTo){printf("打开文件失败,返回\n");return; }fprintf(pFpTo,"----------对函数PreDate的单元测试结果------------\n");//----------- 执行测试用例,记录测试结果-----------int TCID = 0;int sum=0;MyDate date ; // 测试用例的输入MyDate expectedOut,actualOut; // 测试用例的预期、实际输出 printf("对函数PreDate展开单元测试\n");while(!feof(pFpFrom)){ // 不断读取每个测试用例的数据 fscanf(pFpFrom, "%d ", &TCID); // 读入测试用例的IDfscanf(pFpFrom, "%d %d %d", &,&,&; //读测试用例输入fscanf(pFpFrom,"%d %d %d", &,&,&; // 读入测试用例的预期输出actualOut = PreDate(date); // 执行测试用例printf( "测试用例%d: 输入%d,%d,%d, 预期输出%d,%d,%d,,实际输出%d,%d,%d, ", TCID, ,,,, ,,,,; // 输出测试用例的信息if( ==&&==&&=={// 若测试用例通过,则记录通过用例总数tcPassNum ++; printf( "通过\n" );fprintf(pFpTo,"测试用例%d:Pass",TCID); //将测试结果存入结果文件 }else{tcFailNum ++; printf( "失败\n" );fprintf(pFpTo,"测试用例%d:Fail",TCID); //将测试结果存入结果文件 }}//----------- 统计测试结果-----------for(int i=0;i<=6;i++){sum=sum+a[i];}printf("覆盖率=%d", sum*100/7);printf("%%\n");printf( "共执行%d 个测试用例,其中%d 个通过,%d 个失败\n", tcPassNum+tcFailNum, tcPassNum, tcFailNum );fprintf(pFpTo,"共执行%d 个测试用例,其中%d 个通过,%d 个失败\n",tcPassNum+tcFailNum, tcPassNum, tcFailNum );fclose(pFpFrom);fclose(pFpTo);}void main(){DriverofPreDate ( );// 调用测试驱动程序}……三、总结与体会实验中对于路径测试有了更深的理解,可以更好、更迅速的去划分路径,设计测试用例,只是对插桩技术不太理解,不知道怎样去较好的设计插桩用例,也不知道怎样去计算插桩测试的覆盖率,通过实验过程对其有了进一步的理解,可是感觉还有点模糊,课后好好复习!还有,就是插桩测试的结果和预期的结果有所差异,没找到错误所在,希望老师能指出。
实验报告课程名称软件测试题目白盒方法测试院系信息工程学院班级计算机学号学生姓名指导老师日期 2019年一、实验题目白盒方法测试二、实验目的使学生能够更进一步理解白盒测试方法。
能够区分语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖所达到的覆盖层次,并能用各层次覆盖的设计思想设计相应的测试用例。
区分语句覆盖、判定覆盖、条件覆盖的异同,掌握其测试用例设计方法和程序特征;三、实验环境Windows系统平台和Dev-C++开发环境。
四、实验内容某程序的逻辑设计如下图所示,自行分析程序结构,请为该程序设计测试用例使其分别满足:语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖及路径覆盖,并按照测试用例测试程序,完善测试用例各项内容的填写。
#include <iostream>using namespace std;int main(){int F=0;int T=0;int x,y;cin>>x>>y;if(x>=50&&y>=50){F=1;}if(x+y>80){T=2;}else{T=3;}cout<<F<<endl<<T<<endl;}4五、实验步骤1.依据程序逻辑结构图分析程序结构,找出程序的各种组合。
2.依据实验要求设计测试用例使测试达到特定覆盖。
3.选择自己熟悉的语言编写程序。
4.用各种测试用例测试程序。
5.1语句覆盖特点:语句覆盖要求设计足够多的测试用例,运行被测程序,使得程序中每条语句至少被执行一次。
在本例中,可执行语句是指语句块1到语句块4中的语句。
优点:可以很直观地从流程图得到测试用例,可以测试所有的执行语句。
缺点:语句覆盖不能准确的判断运算中的逻辑关系错误。
假设第一个判断语句if(x>=50 && y>=50)中的“&&”被错误地写成了“||”,即if(x>=50 || y>=50),使用上面设计出来的一组测试用例来进行测试,仍然可以达到100%的语句覆盖。
白盒测试实验实验报告白盒测试实验实验报告引言白盒测试是软件测试中一种重要的测试方法,通过对软件内部结构和代码的了解,以及对程序逻辑的分析,检查软件是否按照设计要求正确运行。
本篇实验报告旨在介绍我们进行的一次白盒测试实验,包括实验目的、实验环境、实验过程以及实验结果等内容。
一、实验目的本次实验的目的是通过对一个简单的计算器程序进行白盒测试,验证其在各种输入情况下的正确性和稳定性。
通过这次实验,我们希望能够掌握白盒测试的基本原理和方法,并且了解如何利用白盒测试技术来提高软件质量。
二、实验环境我们选择了一款名为“Calc”的计算器程序作为实验对象。
该程序是一个基于命令行的简单计算器,支持加、减、乘、除等基本运算操作。
实验所需的环境如下:1. 操作系统:Windows 102. 开发工具:Visual Studio 20193. 编程语言:C++三、实验过程1. 熟悉程序代码:首先,我们仔细阅读了“Calc”程序的源代码,了解了其整体结构和各个函数的功能。
2. 制定测试计划:根据程序的功能和代码结构,我们制定了一份详细的测试计划,包括各种输入情况的测试用例和预期结果。
3. 执行测试用例:根据测试计划,我们逐个执行了各个测试用例,并记录了实际结果。
4. 分析测试结果:对于测试用例执行过程中出现的错误,我们进行了分析,并尝试找出错误的原因。
5. 提出改进建议:基于分析结果,我们提出了一些改进建议,以帮助开发人员修复错误并提高程序的质量。
四、实验结果在本次实验中,我们共执行了30个测试用例,其中包括了各种边界情况和异常输入。
通过这些测试用例的执行,我们发现了一些程序中存在的问题,包括以下几个方面:1. 输入验证不完善:在部分情况下,程序没有对输入进行充分的验证,导致程序崩溃或输出错误结果。
我们建议在程序中增加输入验证的代码,以提高程序的健壮性。
2. 算法逻辑错误:在某些特定的输入情况下,程序的计算结果与预期结果不一致。
白盒测试实验报告,(2)软件学院综合性、设计性实验报告专业:年级/班级:20152016学年第一学期课程名称软件测试指导教师本组成员学号姓名实验地点实验时间2015年12月26日项目名称白盒测试实验类型综合性/设计性一、实验目的1.通过实验熟悉测试用例设计2.通过实验熟悉白盒测试二、实验仪器或设备计科楼计算机三、总体设计(设计原理、设计方案及流程等)程序流程图:程序控制流图四、实验步骤(包括主要步骤、代码分析等)代码分析/**判断三角形的类*/publicclassTriangleTestMethod{/**判断三角形的种类。
参数a,b,c分别为三角形的三边,*返回的参数值为0,表示非三角形;*为1,表示普通三角形;*为2,表示等腰三角形;*为3,表示等边三角形。
*/publicstaticintcomfirm(inta,intb,intc){if((a+bc)(b+ca)(a+ cb)){//判断为三角形if((a==b)(b==c))//判断为等边三角形return3;if((a==b)||(b==c)||(a==c))//判断为等腰三角形return2; else//判断为普通三角形return1;}else{//为非三角形return0;}}}三、测试用例1.语句覆盖测试用例:输入期望输出覆盖对象测试结果Case10①,⑤0a=1,b=6,c=7Case2a=3,b=4,c=51①,②,④,⑥1Case3a=3,b=3,c=42①,②,④,⑦2Case4a=3,b=4,c=53①,②,③32.判定覆盖测试用例输入期望输出覆盖对象测试结果Case11a=1,b=2,c=30①,⑤0Case12a=3,b=4,c=51①,②,④,⑥1Case1 3a=3,b=3,c=42①,②,④,⑦2Case14a=3,b=4,c=53①,②,③33.条件覆盖测试用例输入期望输出覆盖对象测试结果Case5a=1,b=2,c=30F1,T2,T30Case6a=7,b=1,c=60T1,F2,T30Case7a= 1,b=7,c=60T1,T2,F30Case8a=3,b=3,c=42T1,T2,T3,T4,2F5,T6,F7,F 8Case9a=3,b=4,c=32T1,T2,T3,F4,2F5,F6,F7,T8Case10a=4,b=3,c=3 2T1,T2,T3,F4,2T5,F6,T7,F84.条件-判定覆盖测试用例输入期望输出覆盖对象测试结果Case15a=1,b=6,c=70F1,T2,T30(①,②)Case16a=1,b=1,c=60T1,F2,T 30(①,②))Case17a=7,b=1,c=60T1,T2,F30(①,②)Case18a=3,b=4,c =32T1,T2,T3,T4,2F5,T6,F7,F8(①,②,③,⑦)Case19a=4,b=3,c=32F T1,T2,T3,4,2F5,F6,F7,T8(①,②,③,⑦)Case20a=3,b=3,c=42T1,T2 ,T3,F4,2T5,F6,T7,F8(①,②,③,⑦)Case21a=3,b=3,c=33F1,T2,T33 (①,②,③)Case22a=3,b=4,c=51T1,F2,T31(①,②,④,⑥)5.条件组合覆盖测试用例输入期望输出覆盖对象测试结果Case23a=1,b=6,c=70F1,T2,T30Case24a=7,b=6,c=10T1,F2,T30Case2 5a=1,b=7,c=60T1,T2,F20Case26a=3,b=3,c=33T1,T2,T3,3T4,T5Case 27a=3,b=3,c=42T1,T2,T3,T4,F5,F6,F7,T82Case28a=4,b=3,c=32T1, T2,T3,2F4,T5,F6,T7,F8Case29a=3,b=4,c=51T1,T2,T3,1F4,F5,F6,F 7,F8Case30a=3,b=4,c=32T1,T2,T3,2F4,F5,F6,F7,T8备注其他条件组合,无法到达结束基本路径覆盖测试用例输入期望输出覆盖对象测试结果Case31a=7,b=6,c=10A-D0Case32a=1b=6,c=70A-B-D0Case33a=1,b=7, c=60A-B-C-D0Case34a=3,b=3,c=33A-B-C-E-G-3HCase35a=3,b=3,c=4 2A-B-C-E-G-2ICase36a=4,b=3,c=32A-B-C-E-F-2HCase37a=3,b=4,c= 32A-B-C-E-F-J2-HCase38a=3,b=4,c=51A-B-C-E-F-J1-K五、结果分析与总结试验中对于路径测试有了更深的理解,可以更好,更迅速的去划分路径,设计测试用例,通过试验,我对软件测试有了进一步的认识和学习,对白盒测试流程有了较清楚的了解,收获很多。
青岛科技大学实验报告
课程:软件测试基础实验项目:白盒测试
专业:计算机科学与技术班级:惠普测试142
姓名:闫伟明日期:2016-11-25
实验要求:
(1)根据下述C代码及对应流程图,将其转换成Python代码;
void DoWork (int x,int y,int z)
{
int k=0,j=0;
if ( (x>3)&&(z<10) )
{ k=x*y-1;
j=sqrt(k);
} //语句块1
if ( (x==4)||(y>5) )
{ j=x*y+10; } //语句块2
j=j%3; //语句块3
}
流程图:
Python代码:
#py001.py
import math
def DoWork(x,y,z):
k=0
j=0
if x>3 and z<10:
k=x*y-1
j=math.sqrt(k)
if x==4 or y>5:
j=x*y+10
j=j%3
return k,j
(2)根据Python代码设计白盒测试用例,包括:
➢语句覆盖;
测试用例输入为:{ x=5、y=6、z=7 }
程序执行的路径是:abd
➢判定覆盖;
测试用例的输入为:{x=5、y=6、z=7};{x=1、y=2、z=3}
程序执行的路径分别是:abd;ace
➢条件覆盖;
➢判定/ 条件覆盖;
➢组合覆盖
对DoWork函数中的各个判定的条件取值组合加以标记:
根据组合覆盖的思想,设计测试用例如下:
(3)根据设计的测试用例,使用unittest 完成测试实验。
(注:每一个测试方法用一个py文件,共5个py文件)
1.test001.py
# -*- encoding:utf8 -*-
import unittest
from py001 import DoWork
class Test001(unittest.TestCase):
"""
语句覆盖:
测试用例的输入为:{x=5、y=6、z=7}
"""
def test_yjfg(self):
self.assertEquals(DoWork(5,6,7),(29,1))
2.test002.py
# -*- encoding:utf8 -*-
import unittest
from py001 import DoWork
class Test002(unittest.TestCase):
"""
判定覆盖:
测试用例的输入为:{x=5、y=6、z=7};{x=1、y=2、z=3}
"""
def test_pdfg1(self):
self.assertEquals(DoWork(5,6,7),(29,1)) def test_pdfg2(self):
self.assertEquals(DoWork(1,2,3),(0,0))
3.test003.py
# -*- encoding:utf8 -*-
import unittest
from py001 import DoWork
class Test003(unittest.TestCase):
"""
条件覆盖:
测试用例的输入为:{x=4、y=6、z=7};{x=1,y=2,z=13}
"""
def test_tjfg1(self):
self.assertEquals(DoWork(4,6,7),(23,1)) def test_tjfg2(self):
self.assertEquals(DoWork(1,2,13),(0,0))
4.test004.py
# -*- encoding:utf8 -*-
import unittest
from py001 import DoWork
class Test004(unittest.TestCase):
"""
判定/条件覆盖:
测试用例的输入为:{x=4、y=6、z=9};{x=3,y=5,z=10}
"""
def test_pdtjfg1(self):
self.assertEquals(DoWork(4,6,9),(23,1)) def test_pdtjfg2(self):
self.assertEquals(DoWork(3,5,10),(0,0))
5.test005.py
# -*- encoding:utf8 -*-
import unittest
from py001 import DoWork
class Test005(unittest.TestCase):
"""
组合覆盖:
测试用例的输入为:
{x=4,y=6,z=6};{x=4,y=5,z=10};{x=3,y=6,z=6};{x=3,y=5,z=10};
{x=5,y=5,z=5}
"""
def test_zhfg1(self):
self.assertEquals(DoWork(4,6,6),(23,1))
def test_zhfg2(self):
self.assertEquals(DoWork(4,5,10),(0,0))
def test_zhfg3(self):
self.assertEquals(DoWork(3,6,6),(0,1))
def test_zhfg4(self):
self.assertEquals(DoWork(3,5,10),(0,0))
def test_zhfg5(self):
self.assertEquals(DoWork(5,5,5)
,(24,1.8989794855663558))
运行截图:。