接⼝测试⽤例数据驱动⾼级断⾔_rest_assured idea 引⼊包 Alt+Enter
参考
接⼝测试⼤纲
接⼝测试的价值
移动互联⽹公司的⼀般架构简化模拟
真实的后端服务
接⼝测试的必要性
⾏业成熟⽅案
更早的发现问题
更快的质量反馈
接⼝测试不能做什么
接⼝测试不能解决移动端的质量,仍然需要端的测试
接⼝基础知识
接⼝为观测与分析
validation框架接⼝例编写与管理
接⼝测试的运⾏维护
接⼝的监控分析
接⼝测试流程
1. 接⼝的范围:需要覆盖多少业务和接⼝  模块
2. 接⼝分析:接⼝的协议、上下游依赖
3. 接⼝测试⽤例设计:业务⽤例如何模拟和覆盖  技术 测试业务覆盖
4. 接⼝测试框架选择:选择合适的框架
5. 测试⽤例编写与维护: 例编写与维护更新
6. 持续集成:不断集成测试
待测接⼝范围
❖业务需求调研:研发和产品反馈常出问题的业务  Charles 抓包
❖接⼝⽂档:⼈⼯档、swagger⾃动⽣成的⽂档
❖代码分析:分析spring等框架的代码
❖线上log和数据:线上的⽣成监控和接 log
❖客户端抓包:基于⽤户⾓度的接⼝⾏为分析
常见抓包分析
❖监听分析:tcpdump+wireshark+har提取⼯具
❖代理分析:charles+burpsuite
❖转发分析:修改host域名+反向代理转发
测试⽤例设计
❖接⼝调⽤的流程分析
❖代理抓包
❖线上log提取
❖⽤例补充:⽤流程图和思维导图进⾏业务建模  覆盖参数 API  及API之间调⽤的顺序❖正常场景⽤例 right path
❖异常场景⽤例
❖安全和稳定性⽤例
接⼝测试框架选择
早期阶段:基于各种语 的httpclient封装
JMeter:性能测试 具,不具备完备的接 测试框架功能
RobotFramework:强 的ATDD具,不过约束性太
RestAssured + Swagger
SoapUI [商业化]
推荐开源的Rest-Assured
❖简约的接⼝测试DSL
❖ ⽀持xml json的结构化解析
❖  ⽀持xpath jsonpath gpath等多种解析 式
❖对spring的⽀持⽐较全
接⼝测试⽤例编写
⽤例编写(演练)
❖创建maven项
❖添加依赖 restassured + junit/testng
❖编写⽤例
❖添加断⾔
❖调试
32‘’
基本请求(演练)
❖基本请求:get、post、添加header、json请求
❖常见的结果:statusCode、html、xml、json、jsonp ❖  ⽤例调试:log、proxy
given ⽤户给定的条件
when 标准的action
then 断⾔
断⾔机制
常见断⾔
状态码
html验证
验证⽹页标题,返回状态码
import urrent.TimeUnit;
import stassured.RestAssured.given;
import stassured.RestAssured.useRelaxedHTTPSValidation; import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.lessThan;
public class DoubanTest {
@Test
public void testGetHtml() {
useRelaxedHTTPSValidation();  //不强⾏校验http信息
given()
.log().all()
.when()
.get("www.douban")
.then()
.log().all()
.statusCode(200).body("html.head.title",equalTo("⾖瓣"));
}
}
Json断⾔
json jpath
遵循 Groovy  语法
对topic列表id断⾔
package restassured;
import org.junit.BeforeClass;
import org.junit.Test;
import stassured.RestAssured.given;
import stassured.RestAssured.useRelaxedHTTPSValidation; import static org.hamcrest.Matchers.equalTo;
public class Testerhome {
@BeforeClass
public static void BeforeClass(){
useRelaxedHTTPSValidation();
}
@Test
public void topic(){
given()
.when()
.get("testerhome/api/v3/topics.json").prettyPeek()                .then()
.body("topics.id[0]",equalTo(18728));
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。