系统测试流程规范
一、学习任务
- 软件相关的核心概念
- 系统测试流程规范
- 项目管理软件的使用
- 用例设计方法
- 缺陷管理
二、软件相关的核心概念
- 软件:程序运行所需的代码、数据、文档的集合
- 软件测试:(IEEE:电气电子工程师学会)为了发现软件中的问题或者验证软件按照需求实现的而运行软件的过程。
- 软件的历史
- 计算机:计算器—电子计算器—电子计算机:纸带打孔
- 批处理编程:计算机语言,汇编语言
- 现代软件:计算机高级语言,Cobol,C,bascal,Pascal,Fortran,C++,Java,python
- 软件测试1951年世界程序大会美国程序员提出测试从研发中分离出去,开发工程师不要测试自己的程序。
- 测试方法论
- 纠错:从软件中找bug
- 破坏性测试:从对软件运行不利的层面去设计测试用例
- 预防阶段:在软件设计的阶段引入以前的研发测试经验,对用户可能出现的错误操作进行防范
- 测试工程师的任务
- 扮演用户去使用软件
- 正常用户:依据软件要求的操作或者本着成功的目标去使用软件的人
- 粗心的用户:在使用过程中,出现一些错误操作
- 破坏者:有明确的破坏动机的使用者
- 替用户受过义务
- 扮演用户去使用软件
- 软件的历史
- 软件危机
- 软件的规模发生巨大的变化,软件研发的管理形式就落后
- 用户的需求不明确,需求容易发生变化
- 不可见性,实现之后维护成本和管理就变得困难
- 软件的复杂度增加
- 软件研发构成
- 产品经理|SA(系统分析师):调研用户的需求,汇总整理出产品的需求规格说明书
- 项目经理:控制项目的进度、资源的调配、对研发结果负责
- 研发部:负责技术设计、实现、调试
- 测试部|质量部:负责产品的测试,保证产品发布的质量
- 运维部:负责产品发布上线,维护在线环境,保证线网运行指标符合要求
- 软件工程
- 概念:使用特定的方法、技术、流程、工具来解决软件研发的问题的理论体系
- 软件研发流程
- 计划阶段:产品计划
- 需求调研,找用户、找竞品
- 可行性研究:经济、技术、政策三层面进行评估
- 研发阶段
- 需求确认和分析
- 技术设计
- 概要设计:技术选型、框架、工具
- 详细设计:函数和接口的定义
- 技术实现
- 编码和调试
- 测试
- 单元测试
- 集成测试
- 系统测试
- 发布
- 把软件产品部署到生产环境
- 退役
- 软件产品不在维护和运行
- 计划阶段:产品计划
- 缺陷:不符合产品需求的实现或错误的实现
三、研发模型
-
软件测试工程师和软件研发工程师的关系:战友
-
大爆炸模式
- 效率高
- 难于维护,交付率低
-
边写边改
-
瀑布模型
-
增量迭代开发
- 优点:
- 化繁为简,研发过程变得更好控制
- 每个阶段都有反馈,便于软件的维护
- 交付的成功率极大提高
- 缺点:
- 不太容易把控迭代划分的粒度
- 粒度太细不利于管理
- 优点:
-
敏捷模型
-
测试模型
-
V模型:需求分析、软件需求分析、概要设计、详细设计、软件编码、单元测试、集成测试、系统测试、验收测试
-
双V模型
-
四、质量模型
7、可维护性
- 是指产品可被修改的能力。这里的修改是指纠正、改进软件产品和软件产品对环境、功能规格变化的适应性
- 易分析性(Analysability): 软件产品诊断软件中的缺陷、失效原因或识别待修改部分的能力
- 缺陷定位的时候需要用到东西,日志、运行记录
- 易修改性(Changeability): 软件产品能够被修改和可以被实现的能力,实现包括编码、设计和文档的更改。
- 帮助解决缺陷,功能变更和优化
- 稳定性 (Stability): 软件产品不会因为修改而造成意外结果的能力
- 可测试性 (Testability): 软件产品已修改的部分能够被确认修复的能力
- 可观察性:可以看到结果
- 可操作性:提供用户使用软件的行为一种载体,输入框,按钮,超链接
- 可控制性:根据不同的操作产生对应的结果
- 可维护性的依从性(Maintainability Compliance): 软件产品遵循与维护相关的标准或约定的能力(如软件出现故障时会弹出“XXX遇到问题要关闭”之类的提示)
五、PDCA过程改进方法
- PDCA是什么?
- 是一套质量管理改进的方法论
- 戴明博士:PDSA
- Plan:计划
- Do:执行计划
- Check:效果确认和检查
- Action:标准化和问题提出
小结
软件工程因为软件危机产生,带来了研发模型:瀑布模型、增量迭代、敏捷实践。
测试从开发中脱离出来,离不开研发过程,V模型、W模型、敏捷测试(持续集成、持续测试、持续交付)
质量模型:ISO制定软件质量模型,八大模块被抽象融合成六大测试类型,
质量管理:三要素:组织、流程、技术,不是一开始就齐备,需要使用PDCA方法来改进流程
六、用例设计方法【重点】
基本概念
- 测试用例:在一次实际测试中使用的数据和步骤的组合
- 例子:登录qq,你需要输入qq号和密码,第一次输入一个正确的qq号,和一个错误的密码,点击登录。你再次输入一个正确的qq号,正确的密码,点击登录,登录成功。
- 测试的经济学原理:
- 尽可能使用少的用例去覆盖尽可能多的情况,穷举法就不合理。
- 测试覆盖度: 按照可能的分类去覆盖
- 测试悖论:测不尽悖论,不可能找出所有的缺陷,我们所有的工作都是在无限的接近0缺陷。
- y=x+C :C是一个已知的常量(测试发现的缺陷数),x是没有发现的缺陷数,y是提测版本所固有的缺陷数
- 鱼塘法则:先抓100条鱼,打上标记,再扔回塘子,静待一段时间,然后分别从鱼塘的不同位置去抓鱼,数带标记的鱼占的总数。
1、等价类划分法
-
概念
- 等价类:按照输入数据的效果相近或相同划分类型,然后从这些分类中选择有代表性的数据来作为测试数据的方法
- 字母,数字,符合,字符,整数,正数
- 例如:用户输入密码必须要满足复杂度要求:长度8位以上16位以下,包含大小写字母和数字。
- 有效等价类:满足要求的等价类
- 无效等价类:不满足要求的等价类
- 等价类:按照输入数据的效果相近或相同划分类型,然后从这些分类中选择有代表性的数据来作为测试数据的方法
-
作用:
- 使用等价类的方法来降低测试用例的数量,同时保持较高覆盖率
-
适用范围:
- 输入域: 提供输入功能的组件,只针对单个的输入域
-
使用步骤
-
确认等价类:
- 输入项有哪些
- 再从输入项去找出条件限制,针对条件限制进行分类
-
画出等价类划分表
- 把确认好的有效类和无效类都填入到表中
-
根据等价类划分表来编写用例
- 使用尽可能少的用例去覆盖所有的有效类
- 对于无效类,只能一个用例覆盖一个
-
划分的基本原则
1、在输入条件规定的取值范围或值的个数的情况下,可以确定一个有效等价类和两个无效等价类。
如果输入条件规定了一个取值范围(例如,“数量可以是1到999”),那么就应确定出一个有效等价类(1<数量<999),以及两个无效等价类(数量<1,数量>999)。
如果输入条件规定了取值的个数(例如,“汽车可登记一至六名车主”),那么就应确定出一个有效等价类和两个无效等价类(没有车主,或车主多于六个)。
2、在规定了输入数据的一组值中(假定有n个值),并且程序要对每个输入值分别处理的情况下,可以确定n个有效等价类和一个无效等价类。
如果输入条件规定了一个输入值的集合,而且有理由认为程序会对每个值进行不同处理(例如,“交通工具的类型必须是公共汽车、卡车、出租车、火车或摩托车”),那么就应为每个输入值确定一个有效等价类和一个无效等价类(例如,“拖车”)。
如果存在输入条件规定了“必须是”的情况,例如“标识符的第一个字符必须是字母”,那么就应确定一个有效等价类(首字符是字母)和一个无效等价类(首字符不是字母)。
3、在规定输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类。
4、在输入条件规定了输入值的集合或规定了“必须如何”的条件下,可以确定一个有效等价类和一个无效等价类。
5、在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,则应将该等价类进一步地划分为更小的等价类。
测试加法器,两个文本框,要求输入-99~99之间的整数。整数的存储在计算机底层中会使用不同的算法,正整数和负整数算法不同。所以测试时正整数和负整数应该分开来测(一般对有效等价类数据应用,无效等价类数据一般不需要正、负分别测)。所以将有效等价类细分为:-99–(-1)负整数、0—99 正整数。
-
优缺点
- 优点
- 减少了大量的用例
- 保证了比较高的覆盖度
- 设计的步骤清楚简单
- 缺点
- 只关注分类的情况,忽略逻辑和特殊情况
- 弥补:边界值分析法
- 优点
-
随堂练习
- 注册功能:用户需要输入手机号码和动态验证码完成注册,手机号码要符合三大运营商的要求,验证码需要和短信发送的验证码一致,如果信息正确,提示注册成功,如果手机号码错误,则提示:手机号码有误,如果是验证码错误,提示:验证码无效。
-
功能测试的最终对象是什么?
- 登录:用户名、密码、验证码,正确的话进入主界面,错误给出相应的提示?
- 注册:用户名、密码、确认密码、验证码,正确的话提示注册成功,错误给出相应提示?
- 答案:代码实现逻辑
-
2、边界值分析法
- 概念
- 边界值:输入数据是一个有序集合或者是一个范围的时候,处于集合或者范围的边界上的值
- 怎么取?
- 开区间 (x,y):取值不包含x,y
- 闭区间 [x,y] :取值包含x,y
- 半开半闭:(x,],[x,y):闭区间包含边界,开区间不包含
- 上点:边界上的点,条件里面写出来是什么,上点就是什么,(2,5),上点就是2和5.
- 离点:开区间的离点,反方向取一个位置,(2,5) ,3,4就是离点。x<=3 或 x>=20 ,离点就是4,19
- 内点:范围内除上点和离点之外的任意一点
- 取值的时候,上点和离点都要。
- 适用范围
- 输入域条件中有有序集合或范围的时候
- 计算机内部的一些数据类型或配置条件
- 使用步骤
- 先划分等价类
- 设计等价类划分表
- 根据适用范围的要求填写边界值
3、流程分析法(场景法)
-
概念
- 流程:用户为了完成或者达成一定的业务目的,需要进行的一系列的操作过程
- 基本流:顺利完成业务的流程
- 备选流:因为使用过程出现了一些其他的选择,使得用户需要处理完这些选择重新回到基本流的过程
- 异常流:使用过程中因为系统故障导致需要处理这些故障的流程
-
适用范围
- 测试所有业务逻辑相关的方法
-
使用步骤
-
分析需求,关注其业务实现的逻辑,并且画出业务流程图
- 流程图的画法
-
根据流程图来编写用例,一个分支一个用例
-
-
演示
- 功能描述:
- 功能描述:
-
优缺点
- 优点:
- 快速覆盖用户使用场景,确认用户操作的流程是否通畅,因此冒烟测试时主要采用场景法进行测试
- 缺点:
- 由于场景法只关注场景是否通畅,因此也忽略了大量的异常输入或无效类,因此会导致缺陷遗漏
- 优点:
-
一些常见疑问:
- 我们使用这些方法来设计用例时候,怎么确定是否存在遗漏?
- 用例必须要经过同行评审
- 我们使用这些方法来设计用例时候,怎么确定是否存在遗漏?
-
随堂练习
功能描述:
中学的教学软件提供一个功能,用户可以输入三个数,系统会校验这三个数,如果是正数,判断是否能够构成三角形,否则提示输入有误,如果能够构成三角形,则判断是否构成等边三角形,如果构成则提示:构成等边三角形,否则判断是否构成等腰三角形,如果构成则提示:构成等腰三角形,否则提示:构成一般三角形,如果不能构成三角形,则提示不能构成三角形
流程图
用例:
. 我们使用这些方法来设计用例时候,怎么确定是否存在遗漏?
1. 用例必须要经过同行评审
2.