Python白盒测试实验报告
白盒测试实验报告范本

实验一:白盒软件测试一、实验目的通过简单程序白盒测试,熟悉测试过程,对软件测试行程初步了解,并养成良好的测试习惯。
熟练掌握如何运用基路径测试方法进行测试用例设计,初步熟悉如何利用程序插装技术进行逻辑覆盖率分析。
二、实验内容背景:被测测试程序功能:计算被输入日期是星期几;程序定义:已知公元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. 代码分析和覆盖率分析为了深入了解后台管理系统的内部实现,我们使用了静态代码分析工具对系统的源代码进行了分析。
通过分析,我们发现了一些潜在的代码问题,如代码冗余、死代码等。
Python白盒测试实验报告

青岛科技大学实验报告课程:软件测试基础实验项目:白盒测试专业:计算机科学与技术班级:惠普测试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执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
青岛科技大学实验报告
课程:软件测试基础实验项目:白盒测试
专业:计算机科学与技术班级:惠普测试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))
运行截图:。