第七章
7.1静态测试概念
静态测试:静态测试是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。其被测对象是各种与软件相关的有必要进行测试的产物,是对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态测试可以手工进行,充分发挥人的思维的优势,并且不需要特别的条件,容易展开,但是静态测试对测试人员的要求较高,至少测试人员需要具有编程经验。
▲静态测试包含的内容:静态测试主要包括各阶段的评审、代码检查、程序分析、软件质量度量等,用于对被测程序进行特性分析。其中评审通常有人来执行;代码检查程序分析、软件质量度量等即可人工完成,也可用工具来完成,但工具的作用和效果相对更大更好一些。
▲静态测试对象:各种与软件相关的有必要进行测试的产物,比如各类文档、源代码等。
7.2各阶段的评审
7.3软件复杂性度量元
McCabe圈复杂度
把程序结构的控制流程图转化为有向图(即程序图),然后计算强连通有向图的环数来衡量软件的质量,用此方法得到的复杂度称为圈复杂度。(为了使之强连通,我们可以从出口点到入口点画一条虚弧。)
计算公式为:V(G)=m-n+p;
注:闭环时:V(G)=m-n+1;
开环时:V(G)=m-n+2;
•G是强连通有向图
•V(G)是强连通有向图G中的环数
•m是G中的弧数
•n是G中的节点数
•p是G中分离部分的数目
•.对于一个正常的程序来说,程序图总是连通的,即p=1;
第八章
八、软件动态测试
动态测试:通过运行被测程序来检查运行结果与预期结果的差异,并分析运行效率和健壮性等指标;这种方法包括三部分:构造测试用例、执行程序、分析程序的输出结果。
动态测试分类:可从不同角度进行分类。
(1)从是否关心软件内部结构和具体实现的角度划分,可分为“白盒”测
试、“黑盒”测试、“灰盒”测试。
(2)从软件开发过程的角度划分,可分为:单元测试、集成测试、确认测
试、系统测试、验收测试、回归测试。
(3)从测试执行是否需要人工干预的角度划分,可分为:人工测试、自动
化测试。
(4)从测试实施组织的角度划分,可分为开发方测试、用户测试(β测试)、
第三方测试。
8.1黑盒测试
黑盒测试又称功能测试或数据驱动测试
◆把测试对象当作看不见内部的黑盒,在完全不考虑程序内部结构和处理过程的情况下,测试者仅依据程序功能的需求规范考虑,确定测试用例和推断测试结果的正确性.
◆站在使用软件或程序的角度,从输入数据与输出数据的对应关系进行的测试
◆在软件的接口处进行测试
◆通过导出执行程序所有功能需求的输入条件集,实现功能覆盖,需求覆盖
8.1.1黑盒测试方法
(1)等价类划分法
◎等价类,把所有可能的输入数据,即程序的输入域划分成若干部分。
◎划分,从每一部分中选取少数有代表性的数据做为测试用例,代表性数据等同于该类中的其他值。
☆划分等价类的考虑因素:输入数据、输出数据
①有效等价类:对于程序规格说明来说,是合理的,有意义的输入数据构成的集合
②无效等价类:对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合
③设计测试用例时,要同时考虑有效等价类和无效等价类设计
☆确立测试用例
在确立了等价类之后,建立等价类表,列出所有划分出的等价类
☆从已列出的等价类表中按以下原则选择测试用例
•为每个等价类规定一个惟一的编号
•设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被测试用例所覆盖
•设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖
以等价类实验---三角形问题为例:
☆创建等价类表
☆构建测试案例
•为每一个等价规定一个唯一编号。
•使用测试案例尽可能多的覆盖有效等价类。
•使用单独的一个测试案例覆盖单独的一个无效等价类。
•最后,直到所有的有效等价类和无效等价类均被覆盖。
(2)边界值分析法
☆边界的含义
◎边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,稍高于其边界值及稍低于其边界值的一些特定情况
☆边界值分析方法
◎选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据的方法
以边界值案例---返现为例
覆盖数据
边界值用例分析
(3)因果图法
◎定义:是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,该方法充分考虑了输入情况的各种组合及输入条件之间的相互制约关系。
☆用因果图生成测试用例的基本步骤
1.分析软件规格说明描述:原因、结果、标识符
2.分析软件规格说明描述中的语义:找出逻辑关系
3.由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,添加必要的约束条件
4.把因果图转换成判定表
5.把判定表的每一列拿出来作为依据,设计测试用例
☆因果图标识
原因和结果之间的关系有:
①恒等:若C1是1,则E1也是1;否则E1为0。
②非:若C1是1,则E1是0;否则E1是1。
③或:若c1或c2是1,则E1是1;否则E1为0,或”可有任意个输入。
④与:若c1和c2都是1,则E1为1;否则E1为0, 与”也可有任意个输入。
☆因果图的案例场景
原因结果示意表
因果图示
设计测试用例
8.2白盒测试
白盒测试一般是静态测试
静态白盒测试测试主要包括代码的检查,通过测试人员仔细阅读代码来检代码和设计的一致性,代码的可读性,代码是否循序了相应的标准、逻辑表达是否正确,结构是否合理等。而动态白盒测试要在Host环境或者Target环境中实际运行软件,并有测试用例的设计与执行,和结果的分析。
语句覆盖:语句覆盖是最起码的测试要求,使得每一条语句至少被执行一次
对程序的逻辑覆盖很少,只关心判定表达式的值,是很弱的逻辑覆盖标准。
判定覆盖:要求设计足够的测试用例,使得程序中的每一个分支至少通过一次即每一条分支语句的“真”值和“假”值都至少执行一次。
条件覆盖:不仅每一个语句至少执行一次,使得判定中的每个条件获得各种可能的结果。
判定覆盖只关心整个判定表达式的结果,条件覆盖关心的则是每个条件各种取值的结果。
判定/条件覆盖:设计足够多的测试用例,使得判定中每个条件的所有可能取值至少能够获取一次,同时每个判断的所有可能的判定结果至少执行一次。
条件组合覆盖:要求设计足够多的测试用例,使得每个判定中条件的各种组合至少出现一次。
满足条件组合覆盖标准的测试用例,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
路径覆盖:要求设计足够多的测试用例,使得程序中所有的路径都至少执行一次 。
8.3灰盒测试
☆灰盒”测试与白盒测试的区别:
◎“白盒”测试在测试过程中测试者可以看到被测的源程序,通过分析程序的内部结构,根据其内部结构设计测试用例
◎理想的“白盒”测试应该使选取的测试用例覆盖所有的路径,这是不可能的
◎白盒”测试它不关注测试程序的外部功能
◎灰盒测试无需关心模块内部的实现细节
☆灰盒测试与黑盒测试的区别
◎“黑盒”测试是在测试者完全不考虑程序内部结构和内部特征的情况下,根据需求规格说明书设计测试用例和推断的测试结果的正确性
◎“黑盒”测试只考虑了程序的输入,以及在该情况下的输出,并没有考虑程序的内部结构。
◎灰盒测试需关心模块与模块之间的交互。
8.4单元测试和集成测试
☆单元测试:集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
☆集成测试:把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
◎在单元测试和系统测试间起到承上启下的作用,既能发现大量单元测试阶段不易发现的接口类错误,又可以保证在进入系统测试前及早发现错误,减少损失(事实上,对系统而言,接口错误是最常见的错误);
◎能够较容易地测试到系统测试用例难以模拟的特殊异常流程,从纯理论的角度来讲,集成测试能够模拟所有实际情况
8.5系统测试和验收测试
☆系统测试:把已经经过确认的软件纳入实际运行环境中,与其它系统成份组合在一起进行测试。
☆验收测试:则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
8.6测试用例设计
☆测试用例编写要素
名称和标识 | 唯一的索引标识(序列号),用例名称 |
测试追踪/来源 | 涉及的参考资料,如用户的需求、涉及文档等 |
用例说明 | 测试对象,采用的方法 |
测试的初始化要求 | 哪个测试对象?在什么硬件/软件—平台? |
测试的输入 | 输入数据 |
测试结果 | 期望测试结果 |
评价测试结果 | 精度等 |
操作过程 | 测试步骤 |
前提和约束 | 约束 |
测试终止条件 | 正常终止或异常终止 |
☆测试用例设计步骤
1.测试需求分析
2.业务流程分析
1.测试用例分析
2.测试用例评审
3.测试用例更新完善
◎设计测试用例的时候,需要有清晰的测试思路;对要测试什么,按照什么
顺序测试,覆盖哪些需求做到心中有数;
◎测试用例编写者不仅要掌握软件测试的技术和流程,而且要对被测软件的设计、功能规格说明、用户使用场景以及程序/模块的结构都有比较透彻的理解
测试用例分级
☆重要性:1 基本、2 重要、3 一般、4 特殊
☆优先级:1 高、2中、3低
测试用例设计案例
①根据航班订票系统登录模块需求,提取测试点
②根据提取的测试点编写测试用例
③部署航班订票系统,执行测试用例
④提交执行过程中的bug,填写缺陷报告
九、问题反馈
由于做的案列不多,遇到的问题也局限于平时做的实验,如下表是就实验中遇到的问题进行的阐述和解决方法。
序号 | 问题描述 | 解决方法 |
1 | 在开始做等价类划分法时,有效等价类很明确,对无效等价类的划分有漏写,比如:三角形问题,有效等价类划分没问题,无效等价类在设计时,覆盖多个无效等价类。 | 对无效等价类的划分原则不清晰,无效等价类就是要设计一个新的测试用例,使其只覆盖一个无效等价类。另一方面,对这方面的知识点练习太少。 |
2 | 边界值法同样存在对边界值的概念理解不够深,在做返现的实验时,期望输出结果大于实际结果,于题干不符。 | 首先看清题目要求,正确使用边界值分析方法,选取正好等于,刚刚大于,或刚刚小于边界的值做为测试数据的方法。
|