一、基础概念
什么是软件:控制计算机硬件的工具,操作系统软件、应用软件
软件基本组成:客户端、服务器、数据库
软件产生过程:需求构思--> 需求文档 -->UI/UE -- >产品研发 -->产品测试 -- >部署上线
什么是软件测试:使用技术手段验证软件是否满足需求
软件测试的目的:减少软件中的缺陷,保证软件质量;
二、主流技术
1、功能测试:执行测试用例
2、自动化测试:通过工具或代码执行测试用例,场景:回归测试,新增功能是否影响原有功能
3、接口测试: 后端实现接口,使用工具或代码对服务端接口进行测试(根据接口文档),JMeter,Postman;
4、性能测试:模拟多人同时使用,查找服务器缺陷,
TPS和QPS:Transation &Query 每秒提交或查询的数据请求
5、安全测试:
三、测试分类:
1、按照软件研发阶段,测试阶段划分:
- 单元测试:针对程序源代码进行测试,目前都是开发在做
- 集成测试:又称接口测试,针对模块之间的访问地址进行测试
- 系统测试:对整个系统进行测试,包括功能、性能、稳定性、兼容性测试、文档测试等
- 验收测试:针对特殊项目,比如游戏,有内测、公测,不同人群来发现项目缺陷;
2、按代码可见度
- 黑盒:源代码不可见,UI可见
- 白盒:全部源代码可见,UI不可见,比如单元测试
- 灰盒:部分源代码可见,功能不可见,集成测试(接口测试)
3、专项测试:
- 性能测试
- 安全测试
四、测试的质量模型
1、什么是质量模型:衡量一个软件优秀的维度,从哪些方面去衡量
2、共8项,重要五项:前五项
- 功能性:功能数量是否符合需求,功能是否正确实现,错误处理情况
- 性能:服务器每秒能处理的请求数(TPS和QPS,数据查询和提交),服务器硬件是否满足需求,
- 兼容性:浏览器(谷歌、IE、火狐、ope、苹果,其他不用测,都是使用的这些浏览器内核技术),操作系统(在Linux、Windows、Mac),手机(分辨率、品牌、操作系统、网络(弱网)
- 其他(与其他软件是否兼容,是否会导致其他主要功能不能用));
- 易用性:简洁(对比竞品),友好、流畅、美观
- 可靠性:无响应、卡顿、死机
- 安全性:信息传输、信息存储
- 可维护性:网站数据迁移是否方便,方便排查问题,文档是否完整
- 可移植性:
五、测试流程
- 需求评审:各个部门对需求理解保持一致,测哪些功能,哪些功能是核心重要的,
- 测试计划编写:测什么,谁来测,怎么测(功能?性能?接口)主要是测试主管在做
- 用例设计:验证项目是否符合需求操作文档
- 用例执行:对测试用例文档进行实施测试
- 缺陷管理:对缺陷进行管理的过程
- 测试报告:实施测试的结果文档
六、测试用例:
1、什么是 用例:用户的使用案例;
2、试用例:为测试项目而设计的执行文档
3、作用:没文档是否能测?防止漏测、实施测试的标准
4、编写格式:八大要素:
- 用例编号:项目_模块_编号
- 用例标题:预期结果(测试点),为什么这样写?用例多方便检索
- 测试项目/模块:所属项目/模块
- 优先级:表示用例的重要程度或影响力,P0~P4(P0为最高),用户使用频率最高的是核心功能-P0;
- 前置条件:要执行此条用例,需要那些前置操作,比如要下单,必须先登录
- 测试步骤:描述操作步骤
- 测试数据:操作的数据,没有可以为空
- 预期结果:期望达到的结果
5、实战:
1、用例设计思路:
(1)冒烟检查系统是否可用,UI设计是否符合需求,页面是否有错别字,图片加载速度等;
(2)输入框空值检查、长度检查、正则检查、输入数据类型检查;
(3)账号是否存在,账号和密码是否匹配;
(4)安全检查,密码输入是否隐藏,是否要求https,传输报文加密检查,浏览器地址栏是否包含敏感信息检查;
(5)其他:操作日志检查、账号密码错误次数检查;
2、登录功能测试用例设计实战:
用例编号 | 用例标题 | 项目/模块 | 优先级 | 前置条件 | 测试步骤 | 测试数据 | 预期结果 |
business_login_0001 | 登录失败_账号或密码为空 | 商城_登录 | p4 | 登录页面能正常访问 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 输入账号为空, 不输入或输入空格; 输入密码; | 1、登录失败,提示请输入账号或密码 2、提示信息样式为红色 |
business_login_0002 | 登录失败_账号长度小于6个字符或大于16个字符 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、账号:12345 或12345678901234567 2、输入密码:123456 | 1、登录失败,提示账号长度在6~16字符之间,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0003 | 登录失败_账号以数字开头、仅包含全部数字、仅包含小写字母和数字 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号不为空 3、账号长度在6~16之间 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、输入账号:123456、123356a、a123456; 2、输入密码:1234567 | 1、登录失败,提示账号不符合包含大小写字母+数字,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0004 | 登录失败_密码长度小于6个字符或大于16个字符 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号不为空 3、密码不为空 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、账号:Zz123456 2、输入密码:12335或1234455555555555 | 1、登录失败,提示密码长度在6~16字符之间,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0005 | 登录失败_密码以数字开头、仅包含全部数字、仅包含小写字母和数字 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、输入账号:Zz123456; 2、输入密码:123456、123356a、a123456; | 1、登录失败,提示密码不符合包含大小写字母+数字,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0006 | 登录成功_密码输入框没有隐藏输入文本 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,密码输入时应隐藏; |
business_login_0007 | 登录失败_账号不存在或未注册 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录失败,提示账号不存在,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0008 | 登录失败_账号密码错误 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 | 1、输入账号:Zz123456; 2、输入密码:AAAAAAAAAA; | 1、登录失败,提示账号或密码错误,请重新输入; 2、提示信息样式为红色; 3、清空输入框内容 |
business_login_0009 | 登录成功_密码明文传输 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、打开Network网络请求查看请求参数中密码是否加密传输 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看NetWork请求参数为密文传输 |
business_login_0010 | 登录成功_账号密码参数在浏览器地址栏显示 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、查看浏览器地址栏是否包含敏感信息 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看浏览器地址栏不包含敏感信息 |
business_login_0011 | 登录成功_账号密码符合格式要求和安全性要求 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、查看浏览器地址栏是否包含敏感信息 5、打开Network网络请求查看请求参数中密码是否加密传输 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看浏览器地址栏不包含敏感信息 2、查看浏览器地址栏不包含敏感信息 |
business_login_0012 | 登录失败_未跳转项目首页 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、查看浏览器地址栏是否包含敏感信息 5、打开Network网络请求查看请求参数中密码是否加密传输 6、查看是否跳转项目首页 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看浏览器地址栏不包含敏感信息 2、查看浏览器地址栏不包含敏感信息 3、跳转项目首页 |
business_login_0013 | 登录成功_响应信息明文或包含明文敏感信息 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、查看浏览器地址栏是否包含敏感信息 5、打开Network网络请求查看请求参数中密码是否加密传输 6、查看是否跳转项目首页 7、打开Network查看响应结果 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看浏览器地址栏不包含敏感信息 2、查看浏览器地址栏不包含敏感信息 3、跳转项目首页 4、查看响应信息,不包含敏感信息明文传输 |
business_login_0014 | 登录成功_记录操作日志 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、查看浏览器地址栏是否包含敏感信息 5、打开Network网络请求查看请求参数中密码是否加密传输 6、查看是否跳转项目首页 7、打开Network查看响应结果 8、查看系统操作日志,是否包含当前登录账号的日志 | 1、输入账号:Zz123456; 2、输入密码:Aa12345678; | 1、登录成功,查看浏览器地址栏不包含敏感信息 2、查看浏览器地址栏不包含敏感信息 3、跳转项目首页 4、查看响应信息,不包含敏感信息明文传输 5、查看操作日志,新增一行当前账号登录日志 |
business_login_0015 | 登录失败_相同账号登录失败次数记录 | 商城_登录 | p4 | 1、登录页面能正常访问 2、账号和密码不为空 3、密码长度在6~16之间 4、密码格式包含大小写字母及数字,且不以数字开头 | 1、打开登录页面; 2、输入账号密码 3、点击登录 4、输入4次+错误账号和密码 | 1、输入账号:Zz123456; 2、输入密码:Aasssss678; | 1、登录失败,并提示账号已锁定,请间隔30分钟后再重试; |
七、测试方法:
1、能对穷举场景设计测试点:
(1)使用等价类划分法解决穷举场景用例设计:
(2)什么是等价类划分法:在所有的数据中, 具有某种共同特征的数据集合进行分类划分,比如账号输入,字母+数字是一类,纯数字是一类,纯字母是一类;划分之后会得到两种等价类,有效等价类和无效等价类:
(3)等价类分类:
- 有效等价类:取其中一个数据
- 无效等价类:取其中一到两组数据
比如:6~8位字符,有效取一组,1234567,无效取两组数据:<6取一组,>8取一组
(4)步骤
- 明确需求
- 确定有效等价类和无效等价类
- 提取数据编写测试用例
使用场景:针对大量数据输入,没法穷举,使用等价类划分法
- 输入框
- 下拉列表
- 单选复选框
2、能对限定边界规则设计测试点
边界值分析法:选择边界范围节点
选取正好等于、正好大于和正好小于表姐的值作为测试数据
上点:边界上的点
离点:距离上点最近的点(刚好大于或刚好小于)
内点:范围内的点(取区域范围内的数据)
3、对多条件依赖关系进行设计:能省市区依赖关系,判定表法
什么是判断表
等价类关注单个输入类条件测试
未考虑输入条件之间的各种组合,输入条件与输出结果之间有相互制约的关系的测试
前提条件:条件之间有关系才能用;
判定表:
条件桩:列出所有条件
动作桩:列出所有操作
条件项:条件的取值
动作项:在条件项下的各种动作的取值结果
有几个条件,那么用例的条数=2的n次方
明确需求
编写判定表
提前测试用例
4、能对项目业务进行设计测试点,
场景法,错误推测法
电商什么最重要?下单流程
面试:
测项目,首先的保证业务是通的,
使用场景法,测试场景是通的
而使用场景法,需要画业务流程图
流程图一般由产品或者开发画,测试也可以画
https://processon.com
或者windows的visio
先进行冒烟测试,把业务跑通再测
业务用例实战:
ATM机取款业务
经验推断法 :主要是根据经验列举出可能出现的问题
错误推荐法什么时候用?当今天晚上12点上线,6点已测完,在6点到12点,根据经验再跑一跑可能会出现错误的地方、重要业务;
面试:时间紧,任务大,不能加人,怎么去最大程度保证项目测完且无重大bug
可能不会去写用例
跟产品、开发沟通哪些是核心的、重要的、容易出问题的模块
覆盖主要业务,覆盖正向业务,再去覆盖主要业务,覆盖逆向;
按照时间节点走,同时可能跟PM沟通,需要开发先进行冒烟;
八、缺陷
存在的任何问题都叫软件缺陷,问题≠错误
衡量缺陷标准:
- 未实现需求说明书中明确要求的功能
- 出现需求说明书中指明不应该出现的错误,功能错误
- 超出需求说明书指明的范围,多了功能
- 虽未指明,但应该实现的要求,隐性功能错误
- 软件难以理解,不易使用,用户体验、UI设计不好
原因和生命周期