版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
-.z.目录HYPERLINK第1章软件测试概述*VIa<=2,b>=3,c<=4,d>=5测试数据略5.针对test函数按照根本路径测试方法设计测试用例。int
Test(int
i_count,
int
i_flag)
{
int
i_temp
=
0;
while
(i_count>0)
{
if
(0
==
i_flag)
{
i_temp
=
i_count
+
100;
break;
}
else
{
if
(1
==
i_flag)
{
i_temp
=
i_temp
+
10;
}
else
{
i_temp
=
i_temp
+
20;
}
}
i_count--;
}
return
i_temp;
}解:intTest(inti_count,inti_flag){1inti_temp=0;2while(i_count>0){3If(0==i_flag){4i_temp=i_count+100;5break;}6else{7If(1==i_flag){8i_temp=i_temp+10;}9else{10i_temp=i_temp+20;}}11i_count--;}12returni_temp;}程序控制流图:1134,56,789,1011122程序环路复杂度:CC=4根本路径集:path11-2-3-6-7-8-11-2-12Path21-2-12Path31-2-3-4-5-12Path41-2-3-6-7-9-10-11-2-12设计测试用例:用例IDi_counti_flag预期输出test11110test2020test320102test41320pgpgqmnabchYNNNNYYYYNf图4.15练习题6解:〔2+2*2〕*2=12第5章软件测试管理及自动化测试根底1.简述软件测试自动化的意义。解:软件测试自动化的意义是:〔1〕提高测试效率;〔2〕降低对软件新版本进展回归测试的开销;〔3〕完成手工测试不能或难以完成的测试;〔4〕具有一致性和可重复性;〔5〕更好地利用资源;〔6〕降低风险,增加软件信任度。2.在运用软件自动化测试时,应注意哪些缺点和事项?解:应注意:〔1〕软件自动化测试可能降低测试的效率;〔2〕测试首次运行时,可能发现大量错误,但当进展过屡次测试后,发现错误的机率会相对较小,除非对软件进展了修改或在不同的环境下运行;〔3〕如果缺乏测试经历,测试的组织差、文档少或不一致,则自动化测试的效果比拟差;〔4〕技术问题。作为第三方的技术产品,如果不具备解决问题的能力和技术支持或者产品适应环境变化的能力不强,将使得软件自动化工具的作用大大降低。3.软件测试工具主要分为哪个大类?解:根据测试方法不同,分为白盒测试工具和黑盒测试工具。根据测试的对象和目的,分为单元测试工具、功能测试工具、负载测试工具、性能测试工具和测试管理工具等。4.了解时下常用的自动化测试用具,并对这些工具进展针对性说明。解:略。5.简述软件测试管理过程。解:首先由一位对整个系统设计熟悉的设计人员编写测试大纲,明确测试的容和测试通过的准则,设计完整合理的测试用例,以便系统实现后进展全面测试。然后在实现组将所开发的程序经历证后,提交测试组,由测试负责人组织测试,测试一般可按以下方式组织:〔1〕测试人员仔细阅读有关资料,包括规格说明、设计文档、使用说明书及在设计过程中形成的测试大纲、测试容及测试的通过准则,全面熟悉系统,编写测试方案,设计测试用例,作好测试前的准备工作。〔2〕为了保证测试的质量,将测试过程分成几个阶段,即:代码审查、单元测试、集成测试、确认测试和系统测试。6.简述软件测试管理的主要功能。解:软件测试管理的主要功能是:测试控制对象的编辑和管理;测试流程控制和管理;统计分析和决策支持7.试选择一个小型的应用系统,做功能测试方案并设计测试用例。解:略。第6章WinRunner测试工具1.列举几种WR学习软件GUI的不同方式。解:〔1〕使用RapidTestScriptwizard学习软件每个窗体中所有GUI对象的属性。〔2〕通过录制脚本的方法学习被录制的那局部软件中所有的GUI对象的属性。〔3〕使用GUIMapEditor学习单个GUI对象、窗体或*个窗体中所有GUI对象的属性。2.分别简述WR中同步点和检查点的作用。解:当测试人员执行测试时,所测试的应用程序每次操作的响应时间并不一定,有时快,有时慢,导致执行输入动作的时间也需要等待。在测试脚本中插入同步点,当WinRunner执行到同步点时,会暂停执行以等待应用程序*些状态的改变后,再继续执行,以防止应用程序响应的时间超过WinRunner等待的时间而导致测试执行失败。设定检查点可以检查所设定区域的显示是否和预期结果相符。通过检查点的设置以及对各点处输出信息的编程定义,可以在脚本运行结果单中查看各项测试容是否都已通过。在功能测试中,检查点可以用在以下两个方面:检查应用程序经过修改后对象状态是否发生变化;检查对象数据是否和预期数据一致。3.比拟WinRunner中GUIdeMapFileperTest和GlobalGUIMapFile两种模式的区别。解:两种模式GUIMapFileperTestGlobalGUIMapFile方法在测试的过程中将自动保GUI信息,翻开测试时可以自动加载GUI文件在测试的过程中需要保存GUI,当应用程序改变时必须更新GUI文件优点1.每个测试都有自己的GUI文件2.不必保存或加载GUI3.维护和修改简单〔重录一次即可〕1.当对象或窗体的描述改变,只需把GUI文件里对应的属性作相应的修改2.容易维护和更新〔无须重录〕缺点只要应用程序的GUI改变,每个测试的GUI文件都要重录或修改当新建GUI或运行测试脚本时必须保存或装载GUI文件建议适用于初学者或被测软件的GUI不会产生变化适用于经历丰富的WinRunner使用者,或被测软件的GUI可能会经常产生变化4.简述利用WinRunner进展测试的过程可分为哪几个阶段,即操作步骤是什么?解:WR的测试过程分为以下六个阶段:〔1〕 创立GUImap;〔2〕创立测试;〔3〕调试测试;〔4〕执行测试;〔5〕查看测试结果;〔6〕报揭发现的错误。5.给出WinRunner中将测试脚本转换为数据驱动测试脚本的一种实现步骤。解:可以通过以下步骤将测试脚本转换成数据驱动测试脚本:〔1〕加上开启及关闭数据表的指令;〔2〕加上循环并读取数据表的每一笔数据;〔3〕将录制的固定值与检查点的值参数化为数据表的字段值。6.仿照实例4,在FlightReservation样本软件的Flight4B版本中建立GUI对象检查点。解:略。7.仿照实例5,在FlightReservation样本软件的Flight4B版本中建立图像检查点。解:略。8.仿照实例8,在FlightReservation样本软件的Flight4B版本中练习文字检查点的应用。解:略。9.仿照实例8,在FlightReservation样本软件的Flight4B版本中执行批次测试。解:略。10.仿照计算器加法功能的测试,完成对Windows的计算器减法、乘法和除法的测试。解:略。11.思考利用WR测试网易的登录模块。解:略。第7章LoadRunner测试工具1.试用LoadRunner所给的例如,根据自己的理解设计测试,制定负载测试方案、开发负载测试脚本、创立运行场景、运行测试以及依据结果利用Analysis分析结果。解:略2.如何利用LoadRunner判断HTTP效劳器的返回状态。解:可以利用LR的置函数web_get_int_property判断HTTP效劳器的返回状态。例如:*include"web_api.h"Action()
{intHttpRetCode;
web_url("my_home","URL=myhomeurl","TargetFrame=_TOP",LAST);
HttpRetCode=web_get_int_property(HTTP_INFO_RETURN_CODE);if(HttpRetCode==200)
lr_log_message("ThescrīptsuccessfullyaccessedtheMy_homehomepage");
else
lr_log_message("ThescrīptfailedtoaccesstheMy_homehomepage");
return0;}3.一个公司的系统上线以后,用户分布在各个不同的地区,而且接入系统的方式和带宽也不同,这种情况下进展性能测试,如何保证更加真实的模拟用户行为?用LoadRunner可以做到吗?解:可以。在VisualUserGenerator里面可以通过RTS〔runTimeSetting〕来模拟一个单个用户更加真实的行为,比方思考时间、网络带宽、是否去除cache等,同样的也可在场景中进展设置。而且LoadRunner提供设置不同用户组不同RunTimeSetting的功能。以到达模拟不同用户行为的更加真实组合。例如:假设有三种不同带宽的用户,而且上传和下载的带宽也有所不同,则可以录制两个脚本,分别模拟上传和下载的用户行为,再在Controller里面,建立六个不同的脚本组,脚本组的用户数可以按照绝对或者百比分的方法分布。比方100,50,200用户或者20%,40%,40%等。然后设置不同的带宽和分布情况。这样不同用户组的虚拟用户模拟出来的就是不同带宽的用户实际接入情况。4.在web应用下,模拟十个用户并发进展数据的添加,结果每次执行全部成功,但是数据却不是十条,每次数据不一样,但是都比十小。这种情况产生的原因是什么?解:是数据库的问题。大多数的数据库都有记录锁的问题,第一次的数据操作没有mit之前,第二次对同样表进展的操作可能就没有方法成功,所以每次数据的条数都达不到十条。又因为每次的操作效劳器的响应时间是不同的,所以不同虚拟用户的提交时间也是不同的,这样就导致每次提交成功的数据量不一致,导致每次结果的条数可能是不同的。5.在LoadRunner下如何让多个场景轮流执行?解:为每个场景设置一个Group。点击EditSchedule->选择SchedulebyGroup->设置Startwhengroup***finishes,就可以实现多个场景轮流执行。6.请解释LoadRunner下最大并发用户数、业务操作响应时间、效劳器资源监控指标的含义与用途。解:最大并发用户数是指应用系统在当前环境下能承受的最大并发的用户数。用来考察*系统的最大负载;在LoadRunner“事务性能摘要〞图中可以获得业务操作的响应时间最大值、最小值和平均值,重点用于确定在方案执行期间响应时间过长的事务;效劳器资源监控指标包括存和处理器。存:Linu*资源监控中指标存页交换速率(Pagingrate),如果该值偶尔走高,说明当时有线程竞争存。如果持续很高,则存可能是瓶颈。也可能是存访问命中率低。实际测试中,当并发点击数出现突然剧增前后,存的PR值则居高25不下。说明目前测试的系统中存存在瓶颈!处理器:Linu*资源监控中指标CPU占用率持续超过80%(对该值的要求,根据具体应用和机器配置而要求不同,有资料说明95%),说明瓶颈是CPU。实际测试中,当并发点击数出现突然增加前后,CPU的占用率持续保持在86%以上!第8章JUnit1.简述JUnit单元测试步骤。解:1〕判断组件的功能:通过定义应用的整体需求,然后将系统划分成几个对象;2〕设计组件行为:依据所处理的过程,可以通过一个正规或者非正规的过程实现组件行为的设计,可以使用UML或者其他文档视图来设计组件行为,从而为组件的测试打下根底;3〕编写单元测试程序〔或测试用例〕确认组件行为:这个阶段应假定组件的编码已经完毕而组件工作正常,需要编写单元测试程序来确定其功能是否和预定义的功能一样,测试程序需要考虑所有正常和意外的输入,以及特定的方法能产生的溢出;4〕编写组件并执行测试:首先创立类及其所对应的方法标识,然后遍历每个测试实例,为其编写相应代码使其顺利通过,然后返回测试。继续这个过程直至所有实例通过;5〕测试替代品:对组件行为的其他方式进展考虑,设计更周全的输入或者其他错误条件,编写测试用例来捕获这些条件,然后修改代码使得测试通过;6〕重整代码:如果有必要,在编码完毕时对代码进展重整和优化,改动后返回单元测试并确认测试通过;7〕当组件有新的行为时,编写新的测试用例:每次在组件中发现故障,编写一个测试实例重复这个故障,然后修改组件以保证测试实例通过。同样,当发现新的需求或已有的需求改变时,编写或修改测试实例以响应此改变,然后修改代码;8〕代码修改,重复测试:每次代码修改时,重复所有的测试以确保没有打乱代码。2.对以下代码进展单元测试。Triangle.javapublicclassTriangle{//定义三角形的三边protectedlonglborderA=0;protectedlonglborderB=0;protectedlonglborderC=0;//构造函数publicTriangle(longlborderA,longlborderB,longlborderC){this.lborderA=lborderA;this.lborderB=lborderB;this.lborderC=lborderC;}/**判断是否是三角形*/publicbooleanisTriangle(Triangletriangle){booleanisTriangle=false;//判断边界,大于0小于200,出界返回falseif((triangle.lborderA>0&&triangle.lborderA<200)&&(triangle.lborderB>0&&triangle.lborderB<200)&&(triangle.lborderC>0&&triangle.lborderC<200)) {//判断两边之和大于第三边if((triangle.lborderA<(triangle.lborderB+triangle.lborderC))&&(triangle.lborderB<(triangle.lborderA+triangle.lborderC))&&(triangle.lborderC<(triangle.lborderA+triangle.lborderB))){isTriangle=true;} ReturnisTrue;}/***判断三角形类型*publicStringgetType(Triangletriangle){StringstrType="";//判断是否是三角形if(this.isTriangle(triangle)){//判断是否是等边三角形if(triangle.lborderA==triangle.lborderB&&triangle.lborderB==triangle.lborderC)strType="等边三角形";//判断是否是不等边三角形elseif((triangle.lborderA
!=triangle.lborderB)&&(triangle.lborderB
!=triangle.lborderC)&&(triangle.lborderA
!=triangle.lborderC))strType="不等边三角形";elsestrType="等腰三角形";}returnstrType;}}解:具体步骤为:1〕新建sample工程,源文件夹为src;2〕新建并实现Triangle类〔代码如题〕,包名为.ime.sample;3〕新建源文件夹test;4〕新建并实现TriangleTest类〔代码如下〕,包名为.ime.sample.test;5〕使用JUnit运行TriangleTest。TriangleTest类:importjunit.framework.Test;importjunit.framework.TestCase;importjunit.framework.TestSuite;/***Testsabout<code>Triangle</code>class.**authoryangyzNEUSOFT*/publicclassTriangleTeste*tendsTestCase{publicTriangletriangle=null;publicstaticTestsuite(){returnnewTestSuite(TriangleTest.class);}/***TestforTriangle*isTriangle().<p>**Setup:lborderA=0;lborderB=3;lborderC=3<br>*E*pected:methodreturnsfalse*/publicvoidtestIsTriangle01(){//setuptriangle=newTriangle(0,3,3);//e*pectedbooleane*pected=false;//e*ecutebooleanresult=Triangle.isTriangle(triangle);//actualbooleanactual=result;//assertassertEquals("Whilea=0;b=3;c=3mehtodfails!",e*pected,actual);}/***TestforTriangle*isTriangle().<p>**Setup:lborderA=3;lborderB=3;lborderC=3<br>*E*pected:methodreturnstrue*/publicvoidtestIsTriangle02(){//setuptriangle=newTriangle(3,3,3);//e*pectedbooleane*pected=true;//e*ecutebooleanresult=Triangle.isTriangle(triangle);//actualbooleanactual=result;//assertassertEquals("Whilea=3;b=3;c=3mehtodfails!",e*pected,actual);}/***TestforTriangle*getType().<p>**Setup:lborderA=0;lborderB=3;lborderC=3<br>*E*pected:methodreturns"不是三角形"*/publicvoidtestGetType01(){//setuptriangle=newTriangle(0,1,1);//e*pectedStringe*pected="不是三角形";//e*ecuteStringresult=Triangle.getType(triangle);//actualStringactual=result;//assertassertEquals("Whilea=0;b=3;c=3mehtodfails!",e*pected,actual);}/***TestforTriangle*getType().<p>**Setup:lborderA=3;lborderB=4;lborderC=5<br>*E*pected:methodreturns"不等边三角形"*/publicvoidtestGetType02(){//setuptriangle=newTriangle(3,4,5);//e*pectedStringe*pected="不等边三角形";//e*ecuteStringresult=Triangle.getType(triangle);//actualStringactual=result;//assertassertEquals("Whilea=3;b=4;c=5mehtodfails!",e*pected,actual);}/***TestforTriangle*getType().<p>**Setup:lborderA=3;lborderB=3;lborderC=3<br>*E*pected:methodreturns"等边三角形"
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年云南省幼儿园教师招聘笔试参考试题及答案解析
- 2026年兰州市城关区网格员招聘考试模拟试题及答案解析
- 2026七年级数学下册 相交线与平行线合作拓展
- 2026四年级上新课标创新实践能力培养
- 2026年阳泉市矿区幼儿园教师招聘笔试备考题库及答案解析
- 2026年北京市崇文区街道办人员招聘考试备考题库及答案解析
- 2026年沈阳市沈河区幼儿园教师招聘笔试备考题库及答案解析
- 2026年本溪市平山区街道办人员招聘笔试参考题库及答案解析
- 2025年沈阳市皇姑区幼儿园教师招聘笔试试题及答案解析
- 2025年自贡市自流井区幼儿园教师招聘考试试题及答案解析
- (二模)呼和浩特市2026年高三年级第二次模拟考试英语试卷(含答案)
- 2026年陕西有色冶矿集团第一批招聘(48人)笔试参考题库及答案解析
- 统编人教五年级语文下册《杨氏之子》教学课件
- 2026年乡镇粮食安全责任制规定知识测试题
- 2026太平保险校招面试题及答案
- 企业环保工作绩效考核方案
- 2026年航空航天基础知识模拟题库
- 肿瘤免疫治疗伦理审查的特殊考量
- 煤矿事故应急培训课件
- 胸痛CBL的课件教学课件
- 全国园林绿化养护概算定额(2018版)
评论
0/150
提交评论