软件测试目的:发现软件中的缺陷和错误。
至少满足以下5个规则之一,才称为发生一个软件缺陷:
1.软件未实现产品说明书要求的功能——功能缺失
2.软件出现了产品说明书指明不应该出现的错误——错误、缺陷
软件实现了产品说明书未提到的功能——功能多余
4.软件未实现产品说明书虽未明确提及但应该实现的目标——对隐性需求的把握,同时发现需求遗漏
5.软件难以理解,不易使用,运行缓慢——用户体验角度
软件产品规格说明书为什么是软件缺陷存在最多的地方?
软件测试根本目的:提高软件质量,降低软件风险
软件风险分为内部风险和外部风险。
内部风险:如在即将销售发现重大错误,延迟发布,失去市场机会
外部风险:产品上线后,用户发现问题,引起索赔、产生法律纠纷、客户拒绝支付费用、甚至失去客户的风险
软件测试关键:如何合理地设计测试用例
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果
软件测试不等于程序测试
回归测试:黑盒、白盒
冒烟测试:单元、集成、系统、验收
随机测试:功能、性能
黑盒测试:完全不考虑程序内部结构和内部特性的情况下进行。只要进行一些输入,就能得到某种输出结果。
白盒测试:软件测试员可以访问程序员的代码,并通过检查代码来协助测试
静态测试
软件测试原则:
需求验证的主要方法是评审。
测试用例是为特定的目的而设计的一组测试输入、执行条件和预期的结果。测试用例是执行的最小实体。
测试用例设计要素:
测试用例评审
黑盒测试目的
优点:
缺点:
静态黑盒测试:文档测试
动态黑盒测试:功能测试、验收测试、性能测试
例:
边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界
边界值分析法利用输入变量的最小值、略大于最小值、输入值域内的任意值、略小于最大值和最大值来设计测试用例
例:
等价类划分:
边界值分析:
在所有的黑盒测试方法中,基于判定表的测试是最为严格、最具有逻辑性的测试方法。
判定表由4部分组成,即条件桩、动作桩、条件项、动作项,及规则。
有n个条件的判定表有2的n次方个规则
例:
定义:利用图解法分析输入的各种组合情况,从而设计测试用例的方法
因果图中的4种基本关系
在因果图的基本符号中,图中的左结点ci表示输入状态(或称原因),右结点ei表示输出状态(或称结果)。ci 与 ei 取值0或1,0表示某状态不出现,1则表示某状态出现。
因果图中的约束
在实际问题中输入状态相互之间、输出状态相互之间可能存在某些依赖关系,称为“约束”。对于输入条件的约束有E、I、O、R四种约束,对于输出条件的约束只有M约束。
案例:
定义:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据他们选择测试用例。
案例:
案例:
根据程序的控制流图找出一个模块所需测试的基本路径,根据这些基本路径设计构造相应的测试用例。
设计步骤:
环复杂度:用V(G)表示,用来衡量一个模块判定结构的复杂程度,在数量上表现为独立的路径条数,是需要测试的基本路径数目的上限
案例:
采用白盒测试方法必须遵循以下几条原则,才能达到测试的目的:
测试覆盖率:用于确定测试所执行到的覆盖项的百分比。其中的覆盖项是指作为测试基础的一个入口或属性,比如语句、分支、条件等。
$$
覆盖率=至少被执行一次的item数/item的总数
$$
一个程序总代码为100行,使用测试用例运行一次,执行了75行代码,则代码覆盖率=75%
测试覆盖率包括功能点覆盖率和结构覆盖率。
根据覆盖目标的不同,逻辑覆盖又可分为语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合覆盖和路径覆盖。
满足判定/条件覆盖的测试用例一定同时满足判定覆盖和条件覆盖。
满足组合覆盖的测试用例一定满足判定覆盖、条件覆盖和判定/条件覆盖。
优点:直观、简单,易自动化
缺点:发现错误能力很弱
优点:发现错误能力比语句覆盖强
缺点:对复合条件判断,只判定整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试路径。
优点:发现错误的能力比语句覆盖强
缺点:条件覆盖不能保证判定覆盖,对复合条件,条件覆盖只能保证每个条件至少有一次为真,而不考虑所有的判定结果。
$$
判定条件覆盖率=条件操作数值或判定结果至少被评价一次的数量/(条件操作数值总数+判定结果总数)
$$
$$
组合覆盖率=条件操作数值结果组合的数量/条件操作数值总组合数
$$
根据路径覆盖的基本思想,在满足组合覆盖的测试用例中修改其中一个测试用例,则可以实现路径覆盖。
满足路径覆盖的测试用例并不一定满足组合覆盖
逻辑覆盖并不能真正做到无遗漏。
如果程序中某一语句i的执行能改变某程序变量V的值,则称V被语句i定义,可记作Def(V,i)。
如果某一语句j的执行引用了内存中变量V的值,则称变量V被语句j使用,可记作Use(V,j)。
案例:
给一个变量赋值时才算该变量被定义
常用的白盒测试方法包括基本路径测试、分支-条件测试和循环测试。
覆盖准则可以作为测试停止或/和选取测试数据的标准。
基于控制流的覆盖准则是被工业界广泛采用的覆盖标准之一。按照覆盖率从低到高的顺序,基于控制流的覆盖准则包括语句覆盖、分支覆盖、条件覆盖、分支-条件覆盖和多条件覆盖。
定义:是对软件基本组成单元进行的测试。是检验程序最小单位,即检查模块有无错误, 它是在编码完成后必须进行的测试工作。
目的:验证这段代码的行为是否与我们期望的一致。
步骤:编译运行程序(查看能否正确运行)→静态测试(检查代码是否符合规范)→动态测试(深入检查代码的正确性,容错性和边界值等)
1)功能与设计说明一致;
2)性能达到软件设计指标;
3)命名和编码符合规则;
4)逻辑测试达到规定的覆盖率,若达不到规定指标,应在测试报告中给出合理解释;
5)对发现的问题已进行修改并通过回归测试。
单元测试针对每个程序的模块,主要测试如下5方面: 模块接口、局部数据结构、边界条件、路径测试和错误处理。
模块接口:
主要关注单元中的输入和输出。
局部数据结构:
路径测试:针对程序路径进行测试
边界条件:边界值分析法进行测试
出错处理:模块在工作中发生错误时,出错处理设施是否有效。
定义:集成测试又称组装测试,是在单元测试的基础上,将所有模块按照设计要求组装成 子系统或系统进行的测试活动。又称子系统测试、联合测试。
目的:确保各单元组合在一起后能够按既定意图协作运行,并确保增量的行为正确,所测试的内容包括单元间的接口以及集成后的功能。
集成测试需要考虑的问题:
集成测试的层次:
集成测试方法
灰盒测试的优点:
集成策略:
在非增量式集成测试时,应当确定关键模块,对这些关键模块及早进行测试。
自底向上增量式测试
三明治增量式测试(混合增量式测试)
集成策略框图
测试方法:黑盒测试
目的:发现软件与系统定义不符合或与之矛盾的地方,测试用例应根据需求分析说明书来设计,并在实际使用环境下运行
对象:项目级→软件(也可能包含硬件)产品级→软件+硬件
系统测试的层次:
定义:功能测试是系统测试中最基本的测试。
分类:
定义:保证系统发布后,产品的性能满足用户要求。
软件性能指标
分类:
目的:确保软件系统可以正式投入运行。
α测试
β测试:由软件的多个用户在一个或多个用户的实际使用环境下进行的测试。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删