1 软件测试理论
学习目标:
■ 熟悉软件的生命周期
■ 熟悉常见的软件研发模型
■ 掌握软件缺陷以及等级的划分
■ 掌握软件测试的模型:V 模型、W 模型、H 模型、X 模型
■ 掌握软件测试的目的以及软件测试原则
■ 掌握测试用例的写作思路
1.1 软件生命周期
软件生命周期
项目计划:确定软件开发总体目标,指定具体实施计划;
需求分析:对软件需要实现的各个部分功能进行描述分析,编写软件需求说明书。
软件设计:架构设计,编写设计概要。开发人员编写详细设计说明书。
程序编码:程序编码阶段,保证程序运行效率。
软件测试:检测软件是否符合客户需求,一般在软件设计完成后,项目开发人员构建测试版本,以便测试团队进行测试。测试过程大致分为:单元测试、集成测试、系统测试、验收测试等。
运行维护:投入使用后,对软件进行修改、升级、新增特性等。
1.2 软件的体系结构(非重点)
C/S结构——客户端/服务器结构
B/S结构——浏览器/服务器结构
A/S结构——应用服务器结构
1.3 软件研发模型
指软件开发全部过程、活动和任务的结构框架。提供软件研发效率、降低研发成本、提升软件质量。目前比较流行的研发模型主要有:瀑布模型、快速原型模型、螺旋模型、RUP流程和敏捷模型。
1.3.1 瀑布模型
按照工序将问题简化,功能的实现与设计分开。该模型中,软件开发的各项活动严格按照线性方式进行。上一活动的结果为下一活动的输入,输出有误则返回上一级修改。
瀑布模型过于强调文档的作用,并且每一个活动都必须仔细验证,适合小规模、需求非常确定的开发。由于不能适应需求的变化,现在软件开发几乎把瀑布模型抛弃。
2020年10月28日00:42:09
1.3.2 快速原型模型
瀑布模型的演进,该模型主要思想就是通过向用户提供原型获取用户反馈,使得软件能够真正的反映用户的需求。设计的原型实际上就是Demo,小而重要!
1.3.3 螺旋模型
瀑布模型和快速原型模型的结合,采用一种周期性的方法进行系统开发,周期内包含完整的计划制定、风险分析、工程实施和客户评估阶段,并由此进行迭代。这种模型虽然将开发风险纳入流程,安全系数很高,但是运行成本比较高,实际并不采用这种模式。
1.3.4 RUP流程
以用例驱动和体系结构为核心的增量迭代的软件过程模式。是目前比较流行的研发模式。
横轴是时间(生命周期),用来描述周期、阶段、迭代和里程碑;纵轴表示工作流,用来描述软件的工作流。
RUP的四个阶段:
- 初始化阶段:关注的是整个项目进行中的业务和需求方面的主要风险。
- 细化阶段:分析问题,建立完善的体系结构基础。
- 构造阶段:编码、构建、程序集成、功能详细测试等。
- 发布阶段:可以迭代发布,包括为产品发布做准备的产品测试,基于反馈小规模调整。
RUP的9个核心工作流:
- 业务建模
- 需求
- 分析设计
- 实现
- 测试
- 部署
- 配置和变更管理
- 项目管理
- 环境管理
参考:https://baike.baidu.com/item/RUP/8924595=aladdin
1.3.4 敏捷模型
敏捷开发以用户需求进化为核心,采用个迭代、循序渐进的方式开发软件。软件项目在构建的时候就被切分为多个相互联系、独立运行的子项目,并且分别完成,在此过程中软件一直处于可使用的状态。敏捷开发宣言就是尽早的,持续的交付有价值的软件来使得客户满意。
敏捷开发原则:
- 快速迭代
- 让测试人员和开发者参与需求讨论
- 编写可测试的需求文档
- 多沟通,减少文档
- 做好产品原型
- 及早考虑测试
参考:
https://baike.baidu.com/item/敏捷开发/5618867=aladdin
https://www.zhihu.com/question/19645396
1.4 软件测试基本概念
软件测试发展的五个重要发展时期:
- 以调试为主
- 以证明为主
- 以破坏为主
- 以评估为主
- 以预防为主
软件测试目的演进过程:
- 证明软件产品
- 检测错误缺陷
- 提前预防风险
软件测试原则:
- 所有的测试要追溯到用户需求:从客户角度出发,想客户之所想。
- 测试应该尽早的介入:越到后期代价越大。
- 测试无法穷举:无法穷举所有情况,满足出口要求准则时则是就应该终止。
- 集群现象:出现错误比较多的地方就有理由相信存在更多没有发现的错误。
- 杀虫剂悖论:测试用例被执行的次数越多,检测出问题的能力就会下降。
- 不存在缺陷谬论:测试可以减少未发现的缺陷,不能证明产品没有缺陷。
- 测试活动依赖于测试背景:测试背景不同,测试活动也就不同,测试策略和测试方法的选择也就不同。比如银行更关注安全,电商更关注性能。
参考:http://www.51testing.com/html/86/n-877786.html
1.5 软件测试模型
软件测试模型有:V 模型、W 模型、H 模型、X 模型、敏捷测试等。
V模型
RAD(快速应用开发)——V模型。通过开发和测试同时进行的方式来缩短开发周期,提高开发效率。
V模型强调软件开发的协作和速度,反应测试活动和分析或设计关系,将软件实现和验证相结合。V模型适合规模小、时间周期短的项目,这种形式逐渐被淘汰。
W模型
V模型的演进,W模型增加了软件开发各阶段中同步进行的验证和确认活动。
H模型
该模型中,软件测试活动是独立的,将测试准备和测试执行分离,降低成本提高效率。
X模型
X 模型中提出一个重要的理念是探索性测试,这是不进行事先计划的特 殊类型的测试,这一方式往往能帮助有经验的测试人员在测试计划之外发现 更多的软件错误。但这样可能对测试造成人力、物力和财力的浪费,而且对 测试员的熟练程度要求比较高。
参考:https://blog.csdn.net/jingminminwangbobo/article/details/82931670
敏捷测试
通过不断的修正质量标准,建立正确的测试策略,确认客户的有效需求来保证产品的质量。敏捷测试试遵循的一种测试时间就是强调从客户的角度进行测试。
敏捷测试需要重点关注需求的变更、产品设计和源代码设计等。一般是需要全程参与敏捷开发团队的讨论评审活动,并参与决策制定等。在独立完成测试设计、分析、执行的同时,还要关注用户需求并且进行有效沟通,从而协助敏捷开发流程快速开发。测试除了针对产品的质量,还要保证整个软件开发过程是正确的符合客户需求的。
1.6 软件缺陷
引入软件缺陷的原因:
- 缺乏有效的沟通
- 软件的复杂度
- 程序员编程错误
- 需求变更
- 时间压力
- 人员盲目自信
缺陷种类:
- 遗漏:未实现规格;
- 错误:与需求违背;
- 冗余:超出规格说明的冗余;
- 不满意:用户对产品的不满意也属于缺陷的一种。所以不停地强调在用户的角度进行测试。
1.7 测试用例
什么是测试用例:https://baike.baidu.com/item/测试用例/1928697=aladdin
测试用例(Test Case)是指对一项特定的软件产品进行测试任务的描述,体现测试方案、方法、技术和策略。其内容包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试脚本等,最终形成文档。简单地认为,测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,用于核实是否满足某个特定软件需求。
测试用例的重要性:
- 避免漏测
- 测试进度的控制
- 作为度量指标
- 分析缺陷的依据
- 项目管理成本
测试用例写作思路:(摘抄自《软件测试技术指南》—斛嘉乙)
参考:
https://www.zhihu.com/question/51558124
https://www.cnblogs.com/hellosecretgarden/p/9332216.html
测试用例作为测试工作的一个指导,那么测试人员如何编写一个好的测 试用例呢测试用例需要遵守 5C 原则(Correct 准确、Clear 清晰、 Concise 简洁、Complete 完整、Con-sistent 一致)。大多公司的测试用例 通常包含用例编 、所属模块、用例标题、用例优先级、前提条件、测试数 据、操作步骤、预期结果、用例状态等。
- 用例编
用例编 是测试用例的唯一标识,主要用来识别该测试用例的目的。用 例编 需要具有指引性和维护性,格式一般由字母、数字、下划线组成,具 体格式如下: 产品名称_需求编 _用例类型_测试子项_数字编 1)产品名称通常是指产品的简称:如客户管理系统简称 CRM。 2)需求编 通常记录需求规格说明书中需求的编 。 3)用例类型描述测试所属的测试阶段:如单元测试 UT、集成测试 IT、 系统测试 ST、验收测试 UAT 等。
- 所属模块
所属模块是指被测试需求具体属于哪个模块,主要是为了更好识别以及维护用例。
- 用例标题
用例标题用简洁明了的一句话来描述测试用例的关注点,原则上测试标题也是具有唯一性。简单说就是每一条用例对应一个测试目的。
- 用例优先级
用例优先级一般划分为三个级别:高、中、低,根据需求的优先级级别来定义。通常来说,高优先级别用例是指软件的核心业务、基本功能、重要特性以及使用频率比较高的部分,但是在定义时针对一个需求点我们会定义2~3 个优先级高的测试用例。
- 前提条件
前提条件是指测试用例在执行前需要满足的一些的条件,否则测试用例无法执行。前提条件指被测功能的先决条件以及测试环境,简单说就是跟测试用例存在因果关系的条件。
- 测试数据
在执行测试时,需要输入一些外部数据完成测试,这些数据根据测试用例的具体情况来定,有参数、文件以及数据库记录等。
- 操作步骤
执行测试用例的步骤描述,测试用例执行人员可以根据该操作步骤完成测试执行。在编写操作步骤时要注意一点就是避免冗余。
- 预期结果
预期结果是测试用例中最重要的部分,主要用来判断被测对象是否正常。根据需求规格说明书来描述用户的期望。通常在编写预期结果可以从以下两个方面考虑:
- 操作界面的提示:也就是说在执行操作步骤后,界面会有什么提示信息。
- 数据库的变化:也就是说在执行操作步骤后,数据库会发生什么变化。
- 用例状态
用例状态一般分三种:PASS 通过、FAIL 失败、N/A 未执行。此项在编写用例时为空,当执行完测试用例后再填写。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!