一、测试理论笔记
1、测试基础回顾
软件测试:通过手工或自动化的方式运行被测软件是否正常(看预期结果和实际结果是否一致)
测试目的:保证软件的质量(尽可能多的发现系统中的错误,证明软件存在问题)
测试体现形式:通过找bug的形式验证质量
测试人员具备的素质(简历的自我评价里可以使用)
- 5个心:责任心、细心、耐心、专心、自信心
- 2个能力:沟通能力、表达能力
- 1个精神:团队协作精神
2、质量模型介绍
需求:用户的想法,为了实现某个目的而产生的想法
需求规格说明书:将用户的想法转化为技术上可以实现的文档
软件质量:就是软件与明确的或隐含的定义的需求相一致的程度。
质量模型标准:
对测试的作用:提供测试设计的不同角度和思路
功能性:满足某种需求的一种属性和能力
性能效率:在规定条件下,相对应所用资源的数量,软件产品提供适当性能的能力
兼容性:在一定条件下兼容其它软硬件产品的能力
易用性:在指定使用条件下,产品被理解、学习和使用、吸引用户的能力
可靠性:能不能长时间的稳定运行
安全性、可维护性、可移植性
3、软件生命周期
生命周期:从无到有消亡
瀑布模型(现实已经不常用,但是是其它模型的鼻祖)
优点:每个阶段都清楚,且有对应文档产生;一个阶段完成后,才有后面的
缺点:发现问题的时机比较晚,失去提前纠错的机会;测试介入较晚
适用场景:需求不易发生变化的大项目
扩展:
敏捷开发模型: 能够适应需求的变化,并且能够给出快速的响应。
4、软件测试模型
v模型: 作用:主要描述测试、开发间的对应关系。
优点:每个阶段比较清楚,测试过程由底层(代码)测试到高层(应用)测试过程
缺点:不适用需求的变更,发现问题的时机较晚
w模型: 作用:将测试过程更加细化说明,对应测试、开发间的关系更加清楚。
优点:测试介入时间早,能够及时发现问题,降低修复成本。测试伴随整个软件生产周期,除了测试软件外,还需要验证文档
缺点:该模型应用起来复杂度高(具备计算机技能、业务能力、管理能力、测试素质)
5、测试用例
定义:为了特定的目的而设计的一组测试输入、执行条件和预期结果构成的文档。
目的:
- 方便测试验证(将需求大量描述拆分为小的测试点)
- 体现测试人员的思路,测试设计的全面性(后续测试直接可以使用)
- 测试的量化体现,能够反应测试进度
6、用例设计方法
① 等价类划分
适用场景:需要大量数据测试输入,但没法穷举测试。
典型代表:页面级的输入框类测试!
设计用例步骤:
- 明确需求:测试目的、测试条件(长度、类型、规则)
- 划分等价类:有效等价类(满足所有需求)、无效等价类(只要其中一个子条件不满足即可)
- 编写测试用例:编号、测试标题、测试项目、用例等级、预置条件、测试输入、执行步骤、预期结果
示例一:如何测试两位数整数间的和(-99到99间的数据求和)没有问题?
注意测试条件:分三种(长度、类型、规则!!!)
示例二:新浪邮箱登录,要求输入(邮箱名)@sina.cn和(密码),使用等价类方法设计出测试用例。邮箱名:4-16位字符,支持英文、数字、下划线(不能全是数字或下划线) 密码:6-18位字符
② 边界值分析
适用场景:针对于有边界范围的批量数据输入的地方。(先用等价类,再用边界值)
侧重点:重点关注边界值位置的数据
设计用例步骤:
- 明确需求:测试目的、测试条件(长度、类型、规则)
- 划分等价类:有效等价类(满足所有需求)、无效等价类(只要其中一个子条件不满足即可)
- 确定边界范围值:上点、离点、内点(开内避外)
- 编写测试用例:编号、测试标题、测试项目、用例等级、预置条件、测试输入、执行步骤、预期结果
示例一:如何测试两位数整数间的和(-99到99间的数据求和)没有问题?
③ 判定表法
适用场景:针对需求中多个条件,条件和条件间有组合关系,条件和结果直接有因果关系。(如果...那么...)
画判定表:
- 找出条件桩和动作桩
- 在条件前面加判定词,对于条件进行取值
- 对不同条件取值全组合
- 根据条件项的每一列取值得到操作结果
设计用例步骤:
- 明确需求:测试目的、列出条件
- 画出判定表
- 编写测试用例:条件项和动作项构成的每一列就是一条规则,也就是一条用例
④ 场景法(流程图法)
适用场景:
- 用户使用角度:对于系统不同的场景核心业务进行验证
- 测试角度:测试后期,对整个系统的核心功能组合测试
会找出路径:
- 开始节点
- 结束节点
- 能找出路径:有几种测试场景/用例
补充:画图元素
- 椭圆:开始和结束
- 长方形:处理或者操作
- 平行四边形:数据的输入、输出
- 菱形:流程的判断
- 箭头线:流程的走向
⑤ 错误推测法
定义:一般由有经验的人员推测(经验、智慧、直觉)系统可能出现的问题
适用场景:
- 时间宽裕:对原有系统进行细化,找出边缘化场景进行再次测试。需要写测试用例
- 时间紧迫:通过经验找出可能出现问题的模块进行整理核心点测试。不需要写测试用例
7、软件缺陷
缺陷定义:软件在运行或者使用过程中存在任何问题
测试依据:需求说明书
判定标准:
- 没有做
- 做错了
- 做多了
- 没做完
- 不完美(不易理解、运行缓慢、体验不好)
缺陷生命周期:
缺陷报告核心:
- 缺陷标题:描述和实际结果不相符的结果+[现象]
- 缺陷的预置条件:和用例前提条件一样
- 缺陷的复现步骤:包含测试输入(数据)
- 缺陷的预期结果:希望的正确结果
- 缺陷的实际结果:错误结果+现象
- 缺陷必要附件:照片截图、日志
缺陷报告其它要素:
- 缺陷编号
- 缺陷的状态:描述缺陷的生命周期
- 缺陷的优先级:描述开发修复缺陷的先后次序
- 缺陷的严重级:描述给产品,描述缺陷对于整个软件的破坏程度
- 缺陷的所属模块
- 缺陷的问题分类
缺陷管理:
-
缺陷跟踪流程
作用:描述开发和测试如何协同配合处理bug 流程图:测试处理状态 new:第一次新建 closed:关闭 reopen:激活/重新打开 开发处理状态: rejected inprogress delay/postponoe fixed:已修复。预示着测试可以进行回归测试
缺陷报告编写规范:
- 可复现
- 唯一性
- 规范性
禅道使用:
用例编写:
bug提交:
二、web项目
1、环境搭建
web服务器(对前端的请求进行存储转发处理的应用服务):
- Apache:稳定性好,对于PHP项目的支持很好
- Nginx:并发性(性能)比较好,常和其它web服务器一起结合用
- Tomcat:针对java项目进行的web服务器的部署
- IIS:针对Windows Server系统的web服务器的部署
搭建环境:
① 构成组件:
(网络下载安装)
操作系统
linux
数据库软件
MySQL
web服务软件
Apache
Nginx
Tomcat
...
开发语言工具
php
jdk
(开发提交)
项目代码文件
② 搭建方式:
php项目:
- Windows:WAMP
- Linux:LNMP、LAMP
③ 测试环境:
-
本地测试环境
-
预生产环境:和正式环境用的数据库一样,只是外部人员访问不了
其它环境:
-
开发环境
-
生产环境/正式环境/用户环境
2、熟悉项目
四个步骤
① 项目给谁用的
② 项目的组织架构图(模块)
③ 项目的核心模块有哪些
④ 项目的业务逻辑
tpshop商城是一个单商户的购物商城,可以实现商品的线上销售活动。
核心业务流程:
-
前台购买流程:
注册登录—搜索商品—选择商品—下单支付(货到付款) 后台收款后—前端进入我的订单详情—查看订单状态—确认收货—评价完成 -
后台发货流程:
后台订单管理—确认订单—发货确认—收款 -
商品退换货流程:
前台发送售后申请 后台进行退换货审核—审核通过—原路退款 前端用户查看个人账户余额
项目的技术栈(了解):LNMP
三个来源
- 文档:需求说明书、原型图、UI设计图
- 环境:测试环境
- 人员
适用场景
- 简历项目
- 进入公司首先干的事
3、测试流程
作用:有序有效开展测试工作的基本步骤(面试问题:你们公司如何做软件产品的测试的?)
① 需求评审:对产品编写需求文档进行评审和评估的过程
人员
产品、开发、测试
形式
会议形式
邮件形式
评审职责
看懂理解
指出错误
给出建议
② 编写测试计划和测试方案
实施测试过程中需要的方法、范围、设备、资源、时间等信息
-
测试计划的核心内容:(做什么、谁来做)
明确的测试目标和测试范围 测试目标:最终要达到的要求 测试范围:测试多少? 执行计划的角色与职责 什么人干什么事 任务的进度安排与资源分配 花费多长时间,需要哪些资源设备 风险估计和应急计划 可能遇到的风险,以及如何应对 测试的准入/准出标准 什么时候开始,什么时候结束 -
测试方案的核心内容(在方向上明确怎么测,分析结果重点在于测试策略和技术实现):(怎么做)
测试策略 具体使用的方式方法,如何完成测试工作 测试环境的规划 具体实施需要的测试环境 测试工具的设计和选择 具体实施测试工作可能需要的一些工具
③ 测试用例设计和评审:
根据需求将需要转化为具体可以验证的测试点
④ 测试执行并提交缺陷:
根据评审之后的用例进行执行验证产品质量
⑤ 编写测试报告:
对整体测试过程的总结和质量的说明
4、测试设计思路
-
熟悉需求(文档、环境、人员)
-
测试点整理(整理到可以直接编写测试用例)
根据需求拆分不同的功能点: 观察法 用例设计方法 可以按照原型图拆分: 所见及所测(与被测对象紧密相关的) -
编写测试用例(按照测试模板编写)
-
评审测试用例(查漏补缺、理解一致、指导执行)
-
执行测试用例(顺序执行、按照优先级执行)
-
缺陷跟踪
测试失败: 提交bug 可复现 唯一性 规范性 验证bug 回归测试——>验证版本号 测试通过: pass
5、测试设计案例1——轮播图(前端)
① 熟悉需求
② 测试点整理:
③ 测试用例编写:
④ 评审测试用例:
⑤ 执行测试用例
⑥ 缺陷跟踪
测试过程中的问题:
1、轮播图中,用到了后台的设置,那么后台的操作与这儿轮播图的测试间的关系是?
首先确定测试的范围——前端的轮播图功能
后台的配置和操作应用都是为前台做服务的(要求后台的服务功能都正常)
2、在设计测试用例之前,如果对于需求中的部分描述还不够清楚怎么办?
直接问产品、问测试老员工
6、测试设计案例2——购物车(前端)
① 熟悉需求:
购物车作用:将我们临时相中商品添加到购物车,方便最后下单结算
② 整理测试点:
③ 编写测试用例:
④ 评审测试用例
⑤ 执行测试用例
⑥ 缺陷提交
7、测试设计案例3——会员(后端)
会员管理
① 熟悉需求
② 整理测试点
③ 编写测试用例
④ 评审用例
⑤ 执行用例
⑥ 缺陷提交
添加会员
① 明确需求
② 拆分测试点
③ 编写测试用例
④ 评审测试用例
⑤ 执行测试用例
⑥ 缺陷提交