测试: 自动化测试学习

191 阅读3分钟

重复劳动中解放出来节约工作成本,自动化将是有意思的事情。

背景:

开发有7个人,测试只有1个人,测试负责的产品有web端, 移动端, 后台, 支付等等。

测试内容:

  1. 功能修改,回归测试
  2. 新功能开发

主要讲下回归测试情形:

  1. 现有功能破坏
  2. BUG修复造成的,现有功能的破坏。
  3. 项目后期稳定时,对所有功能的回归。

让回归测试变为自动化

自动化测试是个‘体力活’,一个功能会测试几百遍甚至几百遍。所以,它最好是个自动化测试。

产品的架构

前端后端
浏览器web服务器
安卓接口
ios接口
小程序接口
后台接口

自动化方案

测试同学更具自己的技能和精力选择适合的自动化方案。

测试技能
ui自动化1. web端自动化 python + selenium 2. 移动端自动化 python + Appium
接口自动化1. jmeter 2. python + requests

ui自动化的用处不大,理由:

  1. 成本高,主要页面更新块。
  2. ui端太多
  3. 精力太多,手动测试和自动化测试用例编写。
  4. 编程水平高

方案:

  1. 对接口实现自动化
  2. 手动测试web端编写测试用例

举例:

下单的测试用例

  1. 注册一个新账号
  2. 用这个账号登录
  3. 查找商品
  4. 把商品加入购物车
  5. 填好各种信息提交订单
  6. 到我的订单页查看我添加的商品
  7. 取消订单

使用JMeter实现自动提交订单

第一步: 使用 fiddler, 开始抓包

第二步: 打开某个网站,点击‘登录’

第三步: 输入正确的用户名和密码,fiddler抓包

第四步: jmeter提交订单

操作步骤: 添加 线程组

  1. 设置 HTTP cookie

  2. 添加 HTTP请求默认值

  3. JMETER中添加 HTTP信息头管理

  4. 添加一个登录HTTP请求, 完成登录自动化

    (1) 选择请求方法

    (2) 添加请求路径

    (3) 添加消息体数据

  5. fidder抓包,商品加入购物车

  6. jmeter 添加加入购物车的HTTP请求

    (1) 选择请求方法

    (2) 添加请求路径

    (3) 添加消息体数据

  7. fidder抓包,抓到 提交订单的包

  8. jmeter 添加提交订单的HTTP请求

    (1) 选择请求方法

    (2) 添加请求路径

    (3) 添加消息体数据

  9. 运行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)

`