目录
对测试的理解
- 作用:1)帮助研发尽早定位问题 2)把控软件质量
- 黑盒/白盒
内部结构:黑盒测试:功能测试(等价类划分/边界值/正交实验(退款:退款类型+支付方式))/白盒测试:基于代码,代码检查/路径覆盖(语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合、路径覆盖)Jacoco
定位问题
- 状态码(页面功能测试)
400请求语法错误;
404找不到资源/找:请求url;nginx配置不当
500服务器内部错误/找:日志>代码>参数;
报空指针:数据库中关联表的数据被认为删掉
502错误网关:服务器挂了
503服务器不能处理HTTP请求:临时超载/服务器进行维护
504网关超时:单次调用/配置;压测/压力过大
200:(接口文档/抓包>入参)接口测试复现
看接口请求(前端)/响应(后端):接口吐数据错/数据库错了/缓存错了 - 数据库(软件没有问题)
例1:存数据报错:前端/接口校验文本长度50,数据表字段设定varchar(30);
例2:问题测试环境没有,预发环境有,数据库版本不同
测试任务流程
- 需求评审:需求背景目的;评估开发测试周期;工作内容交付时间
- 研发-代码评审:可测性好不好;边界值,溢出;复杂逻辑需解释;关键节点日志
- 提交测试-测试设计:测试方法(根据产品说明书/需求文档:黑盒/白盒,功能/接口,手动/自动);覆盖场景;用例覆盖多场景(减少成本)
- 用例评审:是否覆盖所有场景,改动点对哪一部分有影响,风险
- 测试前准备:测试环境、配置、测试数据、测试资产
- 测试-提Bug-回归测试-测试报告-软件上线-线上观察-维护
接口测试-一句话
检查各系统之间数据的交换,逻辑关系。
性能测试
接口压测步骤
- 梳理高峰业务场景(双11零点,多少万的用户同时抢神券)
- 压测数据来源:之前日志线上流量复制,数据库建数据,业务接口建数据(线上:业务低峰,压测隔离环境)
- 接口单元压测测试-forceboot
- 小流量试压-阻塞性问题
- 压测:逐步加压并发用户数大于2千万到目标QPS,响应时间小于50ms
- 观察指标:接口使用率,内存使用率,QPS,响应时间
- 压测报告
负载过大
解决方法
- 服务器硬件
- 缓存技术,数据存储
- 前台静态化
- 减少SQL语句select
- 阻止大文件下载
解决过程
- top 查load Average(进程队列的长度。1、5、15分钟内平均Load。要<CPU数目)
- 查看系统负载vmstat
jmeter性能测试步骤-Demo
20个用户访问url,在负载达到30QPS的平均响应时间
1)查看接口文档/Fidder抓包
2)添加线程数/循环次数/QPS(服务器每秒查询量)定时器(吞吐量)
3)设置发送的http请求:服务器ip/发送请求的方法
4)添加监听器:聚合报告/查看结果树
5)保存之后,启动
6)查看结果:聚合报告:实时,发送请求数目,响应时间,请求错误
查看结果树:每条访问的结果(成功/失败,请求返回值页面信息)
7)响应:状态码,
响应时间的性能监控:postman的Test功能:responseTime<200
兼容性测试
PC兼容性
- 操作系统兼容性
重点:win7、win8
一般:Mac os、win10 - 分辨率兼容性
重点:小分辨率:1024 * 768;大分辨率:1920 * 1080 - 浏览器兼容性
重点:IE6(重点)、IE8、谷歌浏览器、狐火浏览器
一般:QQ、360、猎豹、搜狗、遨游、Safari、win10的Spartan、IE7、IE9、IE10
Wap移动端兼容性
- 操作系统
2.3.5、4.1.2、4.2.2、5.0等等
推荐测试机(小米、红米、三星) - 浏览器兼容性
ios : Safari自带浏览器、UC、百度、360、QQ、微信(内嵌浏览器)
安卓: 安卓自带浏览器、UC、百度、360、QQ、微信(内嵌浏览器)
重点:ios自带浏览器、安卓自带浏览器、UC浏览器 - 分辨率兼容性(尺寸)
重点:480320、800400、 720 * 1280
一般:其他
Demo
一个水杯
- 界面测试:查看外观
- 功能度:用水杯装水看漏不漏;水能不能被喝到
- 安全性:瓶子的材质有没有毒或细菌
- 可靠性:从不同高度落下的损坏程度
- 可移植性:再不同的地方、温度等环境下是否都可以正常使用
- 兼容性:是否能够容纳果汁、白水、酒精、汽油等
- 易用性:是否烫手、是否有防滑措施、是否方便饮用
- 用户文档:使用手册是否对的用法、限制、使用条件等有详细描述
- 疲劳测试:将盛上水(案例一)放24小时检查泄漏时间和情况;盛上汽油(案例二)放24小时检查泄漏时间和情况等
- 压力测试:用根针并在针上面不断加重量,看压强多大时会穿透
登录界面
- 功能测试
1)输入框的功能:
合法用户名/密码:成功进入;合法用户名/不合法密码;
验证码:空,不正确,区分大小写
不合法的用户名/密码:错误;字符长度>限制;特殊字符,空,
2)请求测试 - 界面测试
布局合理,2个testbox和一个按钮对齐,无错别字,顺序打乱。 - 性能测试
1)打开登录页面,需要几秒
2)登录成功跳转到新页面,时间
3)【一用户在多台机器同时XX】 - 安全测试:
1)登录成功后生成的Cookie,httponly属性
2)用户名/密码:加密发送>服务器;验证,服务器端/客户端JavaScript验证
3)错误登录次数(防止暴力破解)
4)多用户同一机器能否登陆
5)用户名和密码的输入框,应该屏蔽SQL注入攻击
6)用户名和密码的输入框,应该禁止输入脚本(防止XSS攻击) - 兼容性测试:
主流浏览器(Google/火狐):显示/功能;Android端/ios端/pc/微信端/
视频播放器
- 功能测试
播放:
1.资源获取:服务器返回值/后台添加
2.切换:上/下一个视频
3.画质:选择,主动/被动(网络下载速度)
4.播放方式:开始/暂停/快进/快退/倍速
5.保留进度:a换b换a,a进度保留
其他:
1.音量:大/小/静音
2.页面:最大化/最小化/浮动窗/横竖屏
3.播放列表:播放顺序,列表模板展示,增删改
4用户权限
5.页面UI - 兼容性测试:
1.平台兼容性:安卓/ios
2.版本兼容性:系统版本
3.客户端兼容性:视频/音频,视频格式 - 网络测试:
卡顿/黑屏/闪退;提示
1.网络切换:wifi-移动网络,无网-有网
2.弱网 - 性能测试
压力测试
响应时间
为什么要选择测试
测试比较适合自己,工作强度相对与开发来说没有那么大
相对于研发和别的计算机相关的行业来说,比较看重综合能力,技术能力,业务能力和沟通能力,提升能力的空间很大