重复劳动中解放出来节约工作成本,自动化将是有意思的事情。
背景:
开发有7个人,测试只有1个人,测试负责的产品有web端, 移动端, 后台, 支付等等。
测试内容:
- 功能修改,回归测试
- 新功能开发
主要讲下回归测试情形:
- 现有功能破坏
- BUG修复造成的,现有功能的破坏。
- 项目后期稳定时,对所有功能的回归。
让回归测试变为自动化
自动化测试是个‘体力活’,一个功能会测试几百遍甚至几百遍。所以,它最好是个自动化测试。
产品的架构
| 前端 | 后端 |
|---|---|
| 浏览器 | web服务器 |
| 安卓 | 接口 |
| ios | 接口 |
| 小程序 | 接口 |
| 后台 | 接口 |
自动化方案
测试同学更具自己的技能和精力选择适合的自动化方案。
| 测试 | 技能 |
|---|---|
| ui自动化 | 1. web端自动化 python + selenium 2. 移动端自动化 python + Appium |
| 接口自动化 | 1. jmeter 2. python + requests |
ui自动化的用处不大,理由:
- 成本高,主要页面更新块。
- ui端太多
- 精力太多,手动测试和自动化测试用例编写。
- 编程水平高
方案:
- 对接口实现自动化
- 手动测试web端编写测试用例
举例:
下单的测试用例
- 注册一个新账号
- 用这个账号登录
- 查找商品
- 把商品加入购物车
- 填好各种信息提交订单
- 到我的订单页查看我添加的商品
- 取消订单
使用JMeter实现自动提交订单
第一步: 使用 fiddler, 开始抓包
第二步: 打开某个网站,点击‘登录’
第三步: 输入正确的用户名和密码,fiddler抓包
第四步: jmeter提交订单
操作步骤: 添加 线程组
-
设置 HTTP cookie
-
添加 HTTP请求默认值
-
JMETER中添加 HTTP信息头管理
-
添加一个登录HTTP请求, 完成登录自动化
(1) 选择请求方法
(2) 添加请求路径
(3) 添加消息体数据
-
fidder抓包,商品加入购物车
-
jmeter 添加加入购物车的HTTP请求
(1) 选择请求方法
(2) 添加请求路径
(3) 添加消息体数据
-
fidder抓包,抓到 提交订单的包
-
jmeter 添加提交订单的HTTP请求
(1) 选择请求方法
(2) 添加请求路径
(3) 添加消息体数据
-
运行jmeter, 可以看到订单自动化提交了
python 实现自动化提交
`
import requests
用 JMeter实现自动取消订单
import time
domain "https: //www.shwzoo.com"sess requests. session()
#登录
loginUrl domain "/tools/submit_ajax.ashx?action-user_login"
loginData=('txtUserName': 'tankxiao@outlook. com ExtPassword' 111111)headers {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; 537.36 (KHTML, like Gecko)Chrome/67.0.3396.99 Safari/537.36')sess.headers.update(headers)
Win64; x64)AppleWebKit/
loginResult sess. post(loginUrl, loginData, verify=False)
print(loginResult.text)#获取当前日期
ticketDate=time、 strftime("Y-8m")+"-30"print(ticketDate)
#商品加入购物车
cardUrl=domain +"/tools/submit_ajax. ashx?action=cart_goods_buy"
cardData=('jsondata': [("goods_id "35 sell price: "65.00", "quantity": "1""goods_type": "1", "cart_id": "0", "tick_time":"'+ticketDate+'","sku": "94605")] ')
cardResult=sess. post(cardUrl, cardData, verify=False)
print(cardResult.text)
#提交订单
orderUrl= domain +"/tools/submit ajax. ashx?action=order_save"
orderData={'name':'肖佳',' phone:18964343919,' id card':'36031319840913xxxX','address' : ' ', 'remark' : '' )
orderResult=sess. post(orderUrl, orderData, verify=False)
print(orderResult. text)
`