阅读下列说明,回答问题1至问题3,将解答填入答题纸对应栏内。 逻辑覆盖法是设计白盒测试用例主要方法之一,它通过对程序逻辑结构遍历实现程序覆盖。针对以下由C语言编写程序,按要求回答问题。 gz_open (const char*mode) { char*p= (char*)mode; //1 char fmode[4]; char*m=fmode; char smode= '\0'; char level='\0\'; int strategy=0; do { if (*p=='r') //2 smode - 'r'; //3 if (*p>='O'&&*p<='9') { //4,5 level=*p-'0'; //6 } else if (*p=='f') { //7 strategy=1; //8 }else { //9 *m++=*p; } *p++; //10 }while (m!=fmode+sizeof (fmode)); //11 } //127、请给出满足100%DC(判定覆盖)所需逻辑条件。8、请画出上述程序控制流图,并计算其控制流图环路复杂度VG.。9、假设函数gz_open参数mode是由26个小写字母'a'-'z'、数字'0'-'9'以及空格组成字符串,请使用基本路径测试法构造1个测试用例,使之覆盖所有基本路径。
7、
8、控制流图
环路复杂度V(G)=6
9、
构造一个6个字符构成字符串(设为x,y,z,u,v,w 6个字符),使得每个字符覆盖一条基本路径。其中,x='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。例如,mode="rOf aa"。
【解析】
7、本题考查白盒测试法应用。 本问题考查白盒测试用例设计方法中判定覆盖法。 判定覆盖指设计足够测试用例,使得被测程序中每个判定表达式至少获得一次“真”值和“假”值,从而使程序每一个分支至少都通过一次。本题中程序有4个判定,所以满足判定覆盖一共需要8个逻辑条件,如下表所示。
8、本问题考查白盒测试用例设计方法中基本路径法。涉及到知识点包括:根据代码绘制控制流图、计算环路复杂度。 控制流图是描述程序控制流一种图示方法。其基本符号有圆圈和箭线:圆圈为控制流图中一个结点,表示一个或多个无分支语句;带箭头线段称为边或连接,表示控制流。基本结构如下所示:
根据题中程序绘制控制流图如下所示。其中要特别注意是,如果判断中条件表达式是复合条件,即条件表达式是由一个或多个逻辑运算符连接逻辑表达式,则需要改变复合条件判断为一系列之单个条件嵌套判断。本题程序中,if(*p>='0'&&*p<='9')这条判断语句中判定由两个条件组成,因此在画控制流图时候需要拆开成两条判断语句。
环路复杂度用来衡量一个程序模块所包含判定结构复杂程度,数量上表现为独立路径条数,即合理地预防错误所需测试最少路径条数。环路复杂度等于图中判定结点个数加1,图中判定结点个数为5,所以V(G)=6。9、
本问题考查白盒测试用例设计方法中基本路径法。涉及到知识点包括:根据控制流图和环路复杂度设计测试用例。注意环路复杂度只是测试用例数上限。 本题中程序环路复杂度为6,因此测试用例上限为6,但本题程序比较特殊,只需要一个测试用例即可实现。例如,构造一个6个字符构成字符串(设为x,y,z,u,v,w6个字符),使得每个字符覆盖一条基本路径即可。其中,X='r',y='f',z∈['0'-'9'],u<'0',v>'9'并且v!='f',w任意,这6个字符可任意排列。
某软件公司在研发一个城镇居民保险系统时,为了加快进度,测试工作在系统开发初步完成之后开始并直接进行系统测试。测试工程师针对界面进行了功能测试。测试工程师和开发工程师借助缺陷管理工具,交互进行测试与缺陷修复工作。测试期间发现系统“文档审批”功能出现严重缺陷,开发工程师认为修改难度大,经测试工程师认可后决定暂停修复该缺陷,直到产品发布前,该缺陷在开发环境下被修复。随后,测试工程师在开发环境下针对该缺陷执行了有关用例,进行了回归测试。回归测试结束后,开发工程师在开发环境下对产品直接打包发布。
1、测试开展时间是过早、过晚还是合适?说明理由。
2、测试工程师功能测试方法是否正确?若不正确,请陈述正确方法;若正确,请说明理由。
3、该案例中对缺陷管理有哪些不妥之处?
4、开发工程师产品发布做法是否正确?
某嵌入式刹车控制软件,应用于汽车刹车控制器,该软件需求如下:
1.模式选择:采集模式控制离散量信号In_D1并通过模式识别信号灯显示软件当前工作模式。在信号In_D1为低电平时进入正常工作模式(模式识别信号灯为绿色),为高电平时进入维护模式(模式识别信号灯为红色)。软件在正常工作模式下仅进行刹车控制和记录刹车次数,在维护模式下仅进行中央控制器指令响应。
2.刹车控制:采用定时中断机制,以5ms为周期采集来自驻车器发出模拟量信号In_A1以及来自刹车踏板发出模拟量信号In_A2,并向刹车执行组件发送模拟量信号Out_A1进行刹车控制。
模拟量信号说明:1)In_A1、In_A2以及Out_A1信号范围均为[0.0V,10.0V],信号精度均为0.1V;2)Out_A1信号计算方法为:Out_A1=In_A1+0.3×In_A2,在计算完成后需要在满足信号精度要求下进行四舍五入及限幅处理。
3.记录刹车次数:在Out_A1大于4V时,读出非易失存储器NVRAM中保存刹车次数记录进行加1操作,然后保存至非易失存储器NVRAM中。
4.响应中央控制器指令;接收来自中央控制器串行口指令字In_S1,回送串行口响应字Out_S1。当接收指令字错误时,软件直接丢弃该命令字,不进行任何响应。
指令字及响应字说明如表1所示。
2、请简述本软件串行输入接口测试测试策略及测试内容。针对表1中"读取刹车次数指令"进行鲁棒性测试时应考虑哪些情况?
某嵌入式刹车控制软件,应用于汽车刹车控制器,该软件需求如下:
1.模式选择:采集模式控制离散量信号In_D1并通过模式识别信号灯显示软件当前工作模式。在信号In_D1为低电平时进入正常工作模式(模式识别信号灯为绿色),为高电平时进入维护模式(模式识别信号灯为红色)。软件在正常工作模式下仅进行刹车控制和记录刹车次数,在维护模式下仅进行中央控制器指令响应。
2.刹车控制:采用定时中断机制,以5ms为周期采集来自驻车器发出模拟量信号In_A1以及来自刹车踏板发出模拟量信号In_A2,并向刹车执行组件发送模拟量信号Out_A1进行刹车控制。
模拟量信号说明:1)In_A1、In_A2以及Out_A1信号范围均为[0.0V,10.0V],信号精度均为0.1V;2)Out_A1信号计算方法为:Out_A1=In_A1+0.3×In_A2,在计算完成后需要在满足信号精度要求下进行四舍五入及限幅处理。
3.记录刹车次数:在Out_A1大于4V时,读出非易失存储器NVRAM中保存刹车次数记录进行加1操作,然后保存至非易失存储器NVRAM中。
4.响应中央控制器指令;接收来自中央控制器串行口指令字In_S1,回送串行口响应字Out_S1。当接收指令字错误时,软件直接丢弃该命令字,不进行任何响应。
指令字及响应字说明如表1所示。
1、在不考虑测量误差情况下,根据所设计输入填写表2中横线处。
某软件企业内部测试部门对其ERP产品进行内部测试之后,由第三方测试机构进行验收测试,重点测试质量特性包括:功能性、可靠性、易用性、效率、维护性以及可移植性。1、验收测试依据是什么?验收测试对测试环境有何要求?2、软件产品功能性测试中应关注哪些子特性?3、在实际软件测试过程中,对缺陷管理与分析至关重要。回答如下问题:(1)针对本测试,Bug错误类型除了功能性错误外,还可能会包括哪些?(2)严重性级别是Bug重要属性,请写出常见功能性Bug严重性级别层次。(3)在测试过程中,Bug处理会处于不同状态,请设计Bug管理中从发现到关闭必须经历状态名称。4、企业内部测试部在测试"主生产计划制定"模块过程中,使用30个测试案例进行测试,共发现10个问题。开发组对软件修改后,向测试组提交问题修改报告及修改后软件。问题修改报告中提出:其中3个问题是用户需求,不是错误,无需修改,其余7个问题已修改完成。测试组使用上轮测试中发现这7个问题5个测试案例进行了回归测试,确认问题已得到修改,因此测试组决定,当前版本可以进入配置管理库,进行后续集成工作。测试组做法是否有问题?为什么?如果有问题,应写出正确做法。
逻辑覆盖法是设计白盒测试用例主要方法之一,它是通过对程序逻辑结构遍历实现程序覆盖。针对以下由C 语言编写程序,按要求回答问题。 main( ){int i,n; //1for(i=1;iimage.png7;i++){ //2n=0; if(i!=1) //3 n=n+1; //4 if(n==5){ //5printf("Hello!"); //6 }else{ printf("No!"); //7} }printf("GAME OVER!"); //8 } 问题1:请给出满足100%DC(判定覆盖)所需逻辑条件。问题2:请画出上述程序控制流图,并计算其控制流图环路复杂度V(G)。问题3:请给出【问题2】中控制流图线性无关路径。
逻辑覆盖法是设计白盒测试用例主要方法之一,它是通过对程序逻辑结构遍历实现程序覆盖。针对以下由C 语言编写程序,按要求回答问题。
main( ){ int i,n; //1 for(i=1;iimage.png5;i++){ //2 n=0; if(i!=1) //3 n=n+1; //4 if(i==3) //5 n=n+1; //6 if(n==3) //7 printf("Hello!"); //8 }} //9 问题1:请给出满足100%DC(判定覆盖)所需逻辑条件。问题2:请画出上述程序控制流图,并计算其控制流图环路复杂度V(G)。问题3:请给出【问题2】中控制流图线性无关路径。
某飞行器供油阀控制软件通过控制左右两边油箱BL、BR,向左右发动机 EL、ER 供油,既要保证飞行器安全飞行,又要保证飞行器平衡,该软件主要完成功能如下:(1)无故障情况下,控制左油箱 BL 向左发动机 EL 供油,右油箱BR向右发动机 ER供油,不上报故障;(2)当左油箱 BL 故障时,控制右油箱BR分别向左、右发动机EL 和 ER 供油,并上报二级故障一一左油箱故障;(3)当右油箱 BR故障时,控制左油箱BL 分别向左、右发动机EL 和 ER 供油,并上报二级故障一一右油箱故障;(4)当左发动机EL 故障时,根据左右油箱剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多油箱供油,否则同侧优先供油)左油箱BL 还是右油箱 BR 向右发动机 ER 供油,并上报一级故障——左发动机故障;(5)当右发动机ER故障时,根据左右油箱剩油量决定(如果左右油箱剩油量之差大于等于 50 升,则使用剩油量多油箱供油,否则同侧优先供油)左油箱且还是右油箱 BR 向左发动机BL 供油,井上报一级故障——右发动机故障;(6)当一个油箱和一个发动机同时故障时,则无故障油箱为无故障发动机供油, 并上报一级故障——故障油箱和发动机所处位置;(7)当两个油箱或两个发动机同时故障或存在更多故障时,则应进行双发断油控制, 并上报特级故障——两侧油箱或两侧发动机故障;(8)故障级别从低级到高级依次为二级故障、一级故障和特级故障,如果低级故障和高级故障同时发生,则只上报最高级别故障。
【问题1】覆盖率是度量测试完整性一个手段,也是度量测试有效性一个手段。在嵌入式软件白盒测试过程中,通常以语句覆盖率、条件覆盖率和 MC/DC 覆盖率作为度量指标。在实现第 6 条功能时,设计人员采用了下列算法:if ((BL==故障) && ( EL==故障)){BR供油ER;BL断油;EL断油;}if ((BL==故障) && ( ER==故障))、{BR供油EL;BL断油;ER断油;}if ((BR==故障) && ( EL==故障)){BL供油ER;BR断油;EL断油;}if ((BR=故障) && ( ER==故障)){BL供油EL;BR断油;ER断油;}请指出对上述算法达到 100%语句覆盖、100%条件覆盖和 100%MC/DC 覆盖所需最少测试用例数目,填写下表中空(1)~(3)。
【问题2】为了测试此软件功能,测试人员设计了下表所示测试用例,请填写该表中空(1)~(12)。
【问题3】常见黑盒测试测试用例设计方法包括等价类划分、决策表、因果图、边界值分析等。测试人员在针对本题设计测试时,使用哪种测试用例设计方法最恰当?
逻辑覆盖法是设计白盒测试用例主要方法之一,它是通过对程序逻辑结构遍历实现程序覆盖。针对以下由Java语言编写程序,按要求回答问题。
问题1:请简述基本路径测试法概念。
问题2:请画出上述程序控制流图,并计算其控制流图环路复杂度V(G)。
问题3:请给出【问题2】中控制流图线性无关路径。
逻辑覆盖法是设计白盒测试用例主要方法之一,它是通过对程序逻辑结构遍历实现程序覆盖。针对以下由C 语言编写程序,按要求回答问题。
问题1:请针对上述C程序,给出满足100%DC(判定覆盖)所需逻辑条件。
问题2:请画出上述程序控制流图,并计算其控制流图环路复杂度V(G)。
问题3:请给出【问题2】中控制流图线性无关路径。
逻辑覆盖法是设计白盒测试用例主要方法之一,它是通过对程序逻辑结构遍历实现程序覆盖。针对以下由C 语言编写程序,按要求回答问题。
问题1:请给出满足100%DC(判定覆盖)所需逻辑条件。
问题2:请画出上述程序控制流图,并计算其控制流图环路复杂度V(G)。
问题3:请给出【问题2】中控制流图线性无关路径。