软件测试的目的是以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。
测试用例5大要素:测试目标、测试坏境、输入数据、步骤、预期结果
测试用例设计基本原则:1)测试用例的代表性 2)测试结果的可判断性 3)测试结果的可再现性
软件测试环境的组成:测试环境 = 软件 + 硬件 + 网络 + 历史数据
第二章
软件测试的7个原则:
1、所有的测试都应追溯到用户需求
2、把“尽早和不断地测试”作为开发者的座右铭 3、Pareto原则 80/20
4、测试应从“小规模”开始,逐步转向“大规模” 5、穷举测试是不可能的
6、应该又独立的第三方来构造测试 7、不充分和过分的测试都是不负责任的 软件测试的分类
1、按测试方式分类:静态测试、动态测试
(静态测试不实际运行被测软件,直接分析软件的形式和结构查找缺陷,包括对源代码、程序界面和各类文档及中间产品。动态测试是指需要实际运行被测软件,通过观察程序运行时所表现出来的状态、行为等发现软件缺陷) 2、按测试方法分类:白盒测试、黑盒测试 (白盒测试的依据是程序代码,研究源代码和程序内部的逻辑结构。黑盒测试的依据是各阶段的需求规格说明,只考虑系统的输入和输出,完全不考虑程序内部) 3、按测试过程分类:单元测试、集成测试、确认测试、系统测试、验收测试 4、按测试目的分类:
功能测试、健壮性测试、性能测试、强度测试、压力测试、接口测试、用 户界面测试、安全测试、可靠性测试、安装/反安装测试、文档测试、恢 复测试、兼容性测试
软件测试工作一般要通过制订测试计划、设计测试、测试准备和测试环境的建立、执行测试、评估测试和总结测试工作等几个阶段来完成。 软件测试过程模型
V模型:是软件开发瀑布模型的变种,它反映了测试活动与分析和设计的关系,描述了基本的开发过程和测试行为。
W模型由两个V字型模型组成,分别代表测试与开发过程。它强调:测试伴随着整个软件开发周期,而且测试的对象不仅仅是程序,需求、设计等同样要测试,也就是说,测试与开发是同步进行的。
H模型将测试活动完全独立出来,形成了一个有组织、结构化的独立流程,强调测试准备活动和测试执行活动分离进行。它揭示了软件测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行。
第三章 白盒测试
逻辑覆盖法是白盒测试主要的动态测试方法之一,是以程序内部的逻辑结构为基础的测试技术,是通过对程序逻辑结构的遍历实现程序的覆盖。根据测试覆盖目标的不同,以及覆盖源程序的详尽程度分析由高到低排序,逻辑测试可分为:
1、语句覆盖(程序中的每一条执行语句至少被执行一次)
2、判定覆盖(程序中的每个判定的“真”分支和“假”分支至少执行一次) 3、条件覆盖(程序中每个判定中包含的每一个条件的可能取值(真/假)都至少被执行一次,保证每个条件至少有一次为真)
4、判定/条件覆盖(程序中每个判定包含的每个条件的所有情况(真/假)都至少被执行一次,同时每个判定的可能结果也出现一次)
5、条件组合覆盖(每个判定中条件的各种可能组合都至少出现一次。满足条件组合覆盖的测试用例是一定满足判定覆盖、条件覆盖和判定-条件覆盖。)
6、路径覆盖(被测程序的所有路径都至少被执行一次) 基本路径测试法的步骤(动态测试法之一) (1) 画出程序控制流图 (2) 计算程序环路复杂度
(3) 导出基本路径集,确定独立路径集合 (4) 设计测试用例
3种代码检查法(静态测试法之一)
1、桌面检查:是检查员对源程序代码进行分析、检验,并补充相关的文档发现程序中的错误的过程
2、走查:程序员和测试员通过代表性测试用例逻辑运行程序,发现问题 3、代码审查:程序员和测试员读程序、对照错误检查表进行检查
第四章 黑盒测试
掌握等价类划分法、边界值分析法、因果图法、场景法 黑盒测试方法的综合选择的策略: ① 首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。 ② 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
③ 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
④ 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。
第七章 集成测试和系统测试 常用的集成测试策略
1、大爆炸集成(非增量式):是一种一次性将系统内的组件全部集合到测试系统中进行测试的方法。该方法适用于维护型项目或被测试的系统较小的情况。 优点:
(1)测试方法简单、易行 (2)需要的测试用例数目少 (3)多个测试人员可以并行测试 (4)资源利用率高
缺点:
(1)一次运行成功的可能性不大 (2)不利于程序的错误定位与修改 (3)测试不充分,容易遗漏很多错误 (4)风险高
2、自顶向下集成(增量式):是从最顶层程序开始,所有被主程序调用的下层单元全部使用桩来代替,然后一层一层向下进行测,每层程序调用得下一层程序单元都要打桩。该方法适用于产品控制结构比较清晰和稳定,高层接口变化小,底层接口未定义或经常可能被修改,产品控制组件具有较大的技术风险,需要尽早的被验证,希望尽早能看到产品的系统功能行为的情况。 优点:
(1)能较早发现存在于程序主模块中的问题 (2)容易进行故障隔离和错误定位 (3)功能较早证实,带来信心
(4)只需要一个驱动,减少驱动器开发的费用 缺点:
(1)需要大量的桩模块,工作量巨大
(2)最易出问题底层模块测试被推迟且不够充分,而且问题修改成本高 3、自底向上集成(增量式):从最底层的模块开始,按结构图(接口依赖关系)自下而上逐步进行集成和测试。该方法适用于底层接口比较稳定,高层接口变化比较频繁,底层组件较早被完成的情况。 优点:
(1)可以尽早的验证底层模块的行为
(2)工作最初可以并行集成,比自顶向下效率高 (3)减少了桩模块的工作量
(4)容易进行故障隔离和错误定位 缺点:
(1)不能及时发现高层模块的错误 (2)可能要编写一定数量的驱动模块
4、三明治集成测试:综合了自顶向下和自底向上两种集成方法的优点,把系统划分成三层,中间一层为目标层,目标层上采用自顶向下集成,目标层下采用自底向上集成。该方法适用于大部分软件开发项目。
优点:兼顾了自顶向下和自底向上两种集成测试的优点 缺点:问题可能会集中于中间模块,导致系统上下脱节
性能测试的主要类别:并发性能测试、压力测试、强度测试、负载测试、疲劳测试、大数据量测试、容量测试、破坏性测试 性能测试的加压方式:
1)并发(并发用户操作下,不断增加并发用户数量)
2)疲劳(系统稳定运行的情况下能够支持的最大并发用户数,持续执行一段时间业务)
3)容量(系统可处理同时在线的最大用户数)
性能测试的监控指标:响应时间、吞吐量、CPU使用率,内存占用率 常用的缺陷分析方法:
1、缺陷分析报告(允许将缺陷计数作为一个或多个缺陷参数的函数来显示,
生成缺陷数量与缺陷属性的函数)
2、缺陷趋势报告(按各种状态将缺陷计数作为时间的函数显示,可以看出缺陷增长和减少的趋势)
3、缺陷年龄报告(显示缺陷处于活动状态的时间,从而了解处理这些缺陷的进度情况) 4、缺陷结果进度报告(展示测试过程在被测应用的几个版本中的执行结果以及测试周期,显示对应用程序进行若干次迭代和测试生命周期后的测试过程执行结果)
第九章
测试过程中常用的文档:测试计划、测试用例规格说明书、测试总结报告 测试计划中的几个问题:
1、为什么要编写测试计划?(答:为测试过程提供指导、及早发现和修正SRS的问题、改善测试任务与测试过程的关系、提高测试的组织、规划和管理能力)
2、什么时间开始编写测试计划?(答:需求规格说明文档评审通过后) 3、由谁来编写测试计划?(答:测试人员或质量保证人员) 4、测试计划编写的依据是什么?(答:需求规格说明文档)
5、测试计划编写有哪些要素?(答:核心的三个要素是时间、资源、范围。除这3项之外,比较重要有策略、风险控制等项目) 6、测试计划编写完后还会更改? 软件测试评估的方法:
覆盖评测:是对测试完全程度的评测
质量评测:是对测试对象的可靠性、稳定性以及性能的评测。
软件缺陷的一般定义:软件缺陷简单说就是存在于软件(文档、数据、程序)之中的那些不希望,或不可接受的偏差,而导致软件产生质量问题。
按照一般的定义,只要符合下面5个规则中的一个,就叫做软件缺陷 1)软件未达到软件规格说明书中规定的功能; 2)软件超出软件规格说明书中指明的范围;
3)软件未达到软件规格说明书中指出的应达到的目标; 4)软件运行出现错误;
5)软件难以理解、不易使用、运行缓慢,最终用户认为软件使用效果不好 软件缺陷的属性:
(1)标题(Title) (2)严重等级(Severity) (3)优先级(Priority) (4)状态(Status) (5)描述(Description) (6)备注(Comments) (7)来源(Source)
ReOpen
软件缺陷典型的状态转换图:
验证
失败
Fixed
New
(评审)
Open (指派)
验证通过
Closed
Rejected
评审 Delay
因篇幅问题不能全部显示,请点此查看更多更全内容