您好,欢迎访问三七文档
集成测试——两种策略及其比较自顶向下集成:从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来。再把附属(及最终附属于)主控模块的那些模块组装到程序结构中去。自顶向下集成有两种测试方式:深度优先方式的集成:首先集成在结构中的一个主控路径下的所有模块,主控路径的选择是任意的。广度优先方式的集成:首先沿着水平方向,把每一层中所有直接率属于上一层的模块集成起来,直到底层。自顶向下集成编写的是桩模块。自底向上集成:自底向上集成表示逐步集成和逐步测试的工作是按结构图自下而上进行的,即从程序模块结构的最底层模块开始集成和测试。由于是从最底层开始集成,对于一个给定层次的模块,它的子模块已经集成并测试完成,所以不需要用到桩模块进行测试,而是用驱动模块进行测试。试叙述测试流程和软件开发周期的关系需求分析——验收测试、系统测试概要设计说明书——集成测试程序编码——单元测试试对性能测试/可靠性测试/压力测试进行说明和比较性能测试时从进行测试的角度来评估一个组件或被测应用符合指定性能需求的程度,是一种特殊的非功能测试,衡量执行的速度和在典型工作条件下被测应用的响应以便确定这些特性是否满足被测应用的用户的需求。可靠性测试根据软件系统可靠性结构、寿命类型和各单元的可靠性试验信息,利用概率统计方法,评估出系统的可靠性特征。软件可靠性是软件系统在规定时间内以及在规定的环境条件下,完成规定功能的能力。一般情况下,只能通过对软件系统进行测试来度量其可靠性。压力测试指对系统不断施加越来越大的负载的测试。压力测试是通过一个系统的瓶颈或者不能接受的性能点,来确定系统能提供的最大服务级别的测试。如何对一支签字笔进行(系统)测试从功能方面研究签字笔是否能在纸上出墨,利用压力测试该笔在真空环境下是否还能正常书写,利用健壮性测试当笔芯折断后,是否还能正常书写。利用可靠性测试该笔在书写多长时间后会出现瞬间断墨情况。试叙述对一个软件项目测试的全过程当需求分析结束,生成需求规格说明书。此时可根据需求规格说明书,进行测试计划编制,并编写系统测试测试用例。当概要设计结束,生成概要设计说明书,可通过概要设计说明书构建集成测试用例。当系统编码结束,可由程序员自主进行单元测试。待单元测试结束,开发组人员利用之前编制的测试用例对系统进行集成测试,当集成测试完成后,系统测试人员根据系统测试的测试用例对系统进行系统测试。当系统测试结束后,组织客户方相关人员对系统进行验收测试。叙述软件测试活动中常见的文档主要是测试计划、测试用例、测试报告,具体有:《软件详细设计说明书》、《软件编码与单元测试工作任务书》、《软件集成测试计划》、《软件集成测试方案》、、《单元测试计划》、《单元测试方案》、《需求跟踪说明书》、《正规检视报告》、《单元测试报告》、《软件编码与单元测试任务总结报告》、问题记录、问题跟踪和解决记录、软件代码开发版本、代码静态检查记录等。什么是软件的代码审查codereview?有什么好处?软件代码审查发现代码构造期间引入实现级别的安全漏洞,并为这些编码错误建议补救措施。代码审查对现有代码库进行分析,并对导致安全漏洞的代码构造并进行定位。代码审查:自动代码审查系统可以有效地检测源代码的潜在问题如缓冲区溢出竞态条件内存泄露代码块大小问题重复语句等和整个程序设计的一致性,编程风格请代码审查下面的程序:if(i0)&(i=0)…I=0;while(I100){J=J+100;T=J*PI;}If判断中两个条件的交集为空,条件将永远不会执行。While循环中,i=0所以I100条件永不成立,循环将永不执行。解释下面的关于测试的概念测试是不完全的:需求的不完整性,软件逻辑路径的组合性,结果多样性,大量的数据输入。测试具有免疫性:多次使用相同测试方法或相同测试用例对软件进行测试会导致软件能完全符合测试用例,具有免疫性。但无法发现该软件的其他错误。测试是“泛型概念”:软件的测试应该跨越整个软件开发过程,需要第三者参与,与客户进行确认80-20原则:集中80%的精力找到20%的错误为效益而测试:保持简单性,一切以效益为重,而不是以完整度为重软件测试必须有预期结果:测试要有比较的标准软件测试的意义-事后分析:软件测试完成后需要进行事后分析,以便积累经验。设计测试用例,分别完成判断覆盖和组合条件覆盖IF((A1)AND(B=0))THENX=X/AIF((A=2)OR(X1))THENX=X+1测试编号测试用例条件A1&&B=01A=2,B=0T判定覆盖2A=1,B=0F3A=0,B=0F,T条件组合覆盖4A=2,B=1T,F测试编号测试用例条件A=2||X11A=2,X=0T判定覆盖2A=1,X=0F3A=1,X=2F,T条件组合覆盖4A=2,X=0T,F当0x1024时,且y!=0时,z=func(x,y)当0x1024,且y=0时,z=-1否则,z=x*lg(y)请划分等价类,并且设计测试用例x的等价类y的等价类#1:(0,1024)#4:0#2:(-#,0]#5:(-#,0)#3:[1024,+#)#6:(0,+#)测试用例如下:测试用例测试数据预期输出覆盖范围1x=500,y=0z=-11,42x=500,y=-1z=func(x,y)1,53x=500,y=1z=func(x,y)1,64x=-1,y=0z=x*lg(y)2,45x=-1,y=-1z=x*lg(y)2,56x=-1,y=1z=x*lg(y)2,67x=1025,y=0z=x*lg(y)3,48x=1025,y=-1z=x*lg(y)3,59x=1025,y=1z=x*lg(y)3,6假设一长途汽车客运公司对旅客的收费标准如下:1)、如若旅客是老人(年龄60)或小孩(年龄16岁)则有一定的优惠:购买了往返车票的则按票价的70%收费,否则按票价的80%收费。2)、对于一般旅客如若有优待证则按票价的80%收费,若没有优惠证但购买了往返车票的按票价的90%收费,否则一律没有优惠。试用决策表描述该收费标准。决策表如下:规则条件1234567老人(60)?YNYNNNN小孩(12)?NYNYNNN一般旅客?NNNNYYY买往返票?YYNN-YN有优惠证?---YNN行为按票价的70%XX按票价的80%XXX按票价的90%X没有优惠X成绩录入系统登录页面的测试,其中用户名6-8位字母或数字,密码为6位数字。(请建立决策表并设计测试用例,测试用例选择3-5个即可)123456789101112条件C1:用户名正确?YYYYNNNNNNNYC2:密码正确?YYNNYYYYNNNYC3:选择登录按钮YNYNYNYNYNNYC4:选择重填按钮NYNYNYNYNYNY动作a1:提示错误XXXXa2:成功登录Xa3;重填选项XXXXX不可能XX下面是函数CMyClass::Add(inta,intb){returna+b;};的测试函数:voidCMyClassTester::Add_int_int(){//第一个测试用例{CMyClass*pObj=newCMyClass();//1inti=0;//2intj=0;//3intret=pObj-Add(i,j);//4ASSERT(ret==0);//5deletepObj;}//6}请对以上每条语句进行解释。回答求和测试函数Add为什么取名:Add_int_int()。第1行建立被测试对象,第2和第3行是定义输入数据,第4行是调用被测试函数,第5行是预期输出,它的特点是当实际输出与预期输出不同时自动报错,ASSERT是VC的断言宏,也可以使用其他类似功能的宏,使用测试工具进行单元测试时,可以使用该工具定义的断言宏,第6行销毁被测试对象。请用黑盒法测试字符串的Trim函数如果只有左边有空格,返回删除左边空格后的结果(等价类:左边有空格);如果只有右边有空格,返回删除右边空格后的结果(等价类:右边有空格);如果两边都有空格,返回删除两边空格后的结果(等价类:两边有空格);如果两边都没有空格,返回原串(等价类:两边无空格);如果是空串,直接返回(等价类:空串);如果是空指针,直接返回(等价类:空指针);测试用例:测试编号测试数据预期输出1“abc”(左边有空格)“abc”2“abc”(右边有空格)“abc”3“abc”(两边都有空格)“abc”4“abc”(两边都无空格)“abc”5“”(空串)直接返回6空指针直接返回为下面的程序编写驱动和桩,并设计测试用例:intgetAdd1(intx){inti;i=getPos(x);//到数组中取出下标为x的值,该数组有10个元素returni-10;}//桩intgetPos(x){inta;intarr[10]={11,22,33,44,52,16,27,18,39,10};if(x=10){a=arr[x];returna;}else{printf(越界!\n);return0;}}intgetAdd1(intx){inti;i=getPos(x);//到数组中取出下标为x的值,该数组有10个元素returni-10;}//驱动voidmain(){intx,y;y=getAdd1(5);printf(取出数组中下标为%d的数进行操作,结果为:%d\n,x,y);}运行结果图:测试用例如下:用例编号数据期望输出实际输出结论TC1566结果正确TC211-10-10越界!测试的困难是什么?需求经常变更怎么做测试?如何合理地减少测试用作量?下面是一个记录学生成绩的文本文件,我们设计一个程序来计算某个学生的名次。在本例中,mary的名次是1,John的名次是6按软件工程的思想,我们首先进行对需求进行分析,这里采用面向数据流的DFD法(请补充完整)。设计(高层设计)软件结构图作业1(学号单号)•如果采用Bottom-up测试策略,描述模块设计和测试的顺序•进行需求分析(DFD),然后完成高层设计(软件结构图)•实现该程序,并完成单元测试和集成测试,将测试过程写到报告中第一步:#includestdio.hintgetScore(inta[6]){inti;for(i=0;i6;i++){a[i]=i+i;}//a[6]={22,92,82,90,43,65};returna[6];}//驱动1voidmain(){inta[6],i;a[6]=getScore(a);for(i=0;i6;i++){printf(结果:%d\n,a[i]);}}测试用例用例编号数据期望输出实际输出结论TC1-10,288theresultis8TC22,81010theresultis10运行结果:第二步:getScore驱动1#includestdio.hintgetScore(inta[6]){inti;for(i=0;i6;i++){a[i]=i+i;}//a[6]={22,92,82,90,43,65};returna[6];}intbubbleSort(inta[6])//排序{inti,j,temp;a[6]=getScore(a);for(i=0;i5;i++){for(j=i+1;j6;j++){if(a[i]a[j]){temp=a[i],a[i]=a[j],a[j]=temp;}}}returna[6];//for(i=0;i6;i++)//{//printf(结果:%d\n,array2[i]);}}//驱动2voidmain(){inta[6],i;a[6]=bubbleSort(a);for(i=0;i6;i++){printf(结果:%d\n,a[i]);}}测试用例用例编号数据期望输出实际输出结论TC1-10,288theresultis8TC22,81010theresultis10运行结果:第三步:#includestdio.hintfindGrade(charname){intscore=-1;if(name=='a'){score=8;}returnscore;}//
本文标题:软件测试实例
链接地址:https://www.777doc.com/doc-5001452 .html