1. 什么时候用抓包?

定位bug的时候
获取token值不方便的时候—抓包

  1. 你们系统中做接口测试测试 token值 是怎么来?

方式一: 通过接口获取token

  1. 用户注册成功之后回返回token值

image.png
b. 调用登录接口也可以获取token值
image.png
注册,登录接口中都有验证码,验证码是怎么处理的?
在测试环境中,我们开发会设置一个通用的万能码比如我们的验证码666666 测试环境中使用通用验证码。正式环境中会把通用验证码去掉。

方式二: 通过数据库获取token

通过登录数据库,token值是在 users 表中存放,写sql语句进行查询也是可以的。

  1. select token from users where username="laozhang";

方式三:通过抓包

image.png

练习

根据api文档: https://www.kancloud.cn/niucloud/niushop_b2c_v4_api
测试添加购物车模块
测试要点:

  1. 添加购物车的时候 某些商品有数量限制,需要测试
  2. token值自己抓包获取
  3. 购物车中的商品信息 比如skuid 需要从别的接口中获取
  4. 上下游传参
  5. 对相关功能点进行有效的断言
  6. 单接口需要异常场景的测试支持

电商平台.postman_collection.json
电商平台.postman_environment.json

Jmeter断言

需要添加依赖库
jar_files.zip
将上面文件下载解压, 在测试计划中导入jar文件
image.png
beanshell 断言

  1. import com.eclipsesource.json.JsonObject;
  2. import com.eclipsesource.json.JsonArray;
  3. import com.eclipsesource.json.JsonValue;
  4. // 1. 获取服务器返回的结果 prev.getResponseDataAsString() jMeter内置的方法
  5. // String 表示数据的类型,类型字符串, jsonString为变量名
  6. String jsonString = prev.getResponseDataAsString();
  7. // 2. 将字符串转换为 json 格式 JsonObject.readFrom 将字符串转换为json 个数的固定方法
  8. // JsonObject 是java语法中的json 类型 jsonData 为变量名
  9. JsonObject jsonData = JsonObject.readFrom(jsonString);
  10. JsonObject jsondt = jsonData.get("data");
  11. JsonArray jsonLists = jsondt.get("list");
  12. // for 循环遍历数据
  13. for (JsonValue value:jsonLists){
  14. // System.out.print(value.get("price"));
  15. // 获取价格字符串
  16. String price = value.get("price").asString();
  17. // 字符串转换为数字
  18. double d = Double.parseDouble(price);
  19. // 如果价格小于10 就是bug
  20. if(d<10){
  21. // 设置执行失败
  22. Failure=true;
  23. // 失败提示信息
  24. FailureMessage = "价格小于10";
  25. }
  26. if(d>100){
  27. Failure=true;
  28. FailureMessage = "价格大于100";
  29. }
  30. }

beanshell 前置处理

image.png
电商api.jmx


Mock Server

mock server也叫挡板系统。
在测试过程中,需要跟第三方系统进行数据交互的时候,比如查征信,支付,可以使用 挡板系统模拟一条假数据。
一些大的公司内部都有自己的挡板系统,功能都是类似的,下面使用常用的工具来演示。

postman

postman提供mock service功能,需要注册postman的账号才能使用。
image.png