• 0
  • 1
分享

前言

一转眼做技术也有 7、8 年时间,担任测试开发教学也有4个年头了。

因为常年帮助各个公司的测试同仁们解决问题,自然比待在某个固定的环境能接触到更多的实际案例,也能见到更多团队的痛点。同时又有时间去系统学习,完善自己的技术栈。

既然有这个优势,也有这个精力,那就去分享更多有价值的东西。行业整体技术提升了,大家都是受益者。这才是我们创建 **"片言"** 的初衷--更高效地帮助技术人员解决问题。

可以分享的内容实在太多,所以在想什么对大家最有

价值呢?越来越多的公司

开始注重服务端的测试。接口测试正是服务端最好的测试方式,也是我认为

所有的测试手段里性价比最高的一个。但是本次不讲基础,接口测试的基础知识大家可以参考我2019年的书

《接口测试最佳实践》

本篇系列连载

《高效接口测试》

更加贴合现在企业快速迭代下,对接口测试以及接口自动化测试的新需求。也可以当作去年那本书的下册!

废话不多说,先上目录:

1. 《更从容地应对接口变更:Swagger自动化解析》

2. 《更智能地模拟数据:如何开发好的Mock服务》

3. 《更快捷地测试无文档接口:使用MitmProxy自动化录制接口信息》

4. 《接口也能精准化测试:接口测试的代码覆盖率统计》

5. 《设计一个好的测试框架:如何深入理解测试框架4要素》

6. 《让接口工具更加人性化:接口自动化的关键字驱动》

正文

01 更从容地应对接口变更:Swagger自动化解析

1.1 什么是Swagger?它能干什么?

相信无论是前端还是后端开发,都或多或少地被接口文档折磨过。前端经常抱怨后端给的接口文档与实际情况不一致。后端又觉得编写及维护接口文档会耗费不少精力,经常来不及更新。测试人员吐槽待测试的接口调不通,每个参数是什么含义也不清楚。

那么能不能有一套规范,后端开发人员只要写了类似代码注释一样的东西,就可以自动生成接口文档呢?Swagger定义了这样一套注释的编写与文档展示的规范。再进一步,能不能只编写一个配置文件,比如:yaml、json。就可以生成一个在线的接口文档,发布到某个服务上提供给项目全体成员访问。接着我又提出了一个"过分"的需求,能不能再给我一个在线的接口调试页面--一个在线的Postman?Swagger衍生出来的一系列项目和工具,满足了我的全部需求。

但即便如此,对于许多开发来说,编写这个yml或json格式的描述文件,本身也是有一定负担的工作,特别是在后面持续迭代开发的时候,往往会忽略更新这个描述文件,直接更改代码。久而久之,这个描述文件也和实际项目渐行渐远,基于该描述文件生成的接口文档也失去了参考意义。

就在此时Java届服务端的大一统框架Spring,迅速将Swagger规范纳入自身的标准,建立了Spring-swagger项目,后面改成了现在的Springfox。通过在项目中引入Springfox,可以扫描相关的代码,生成该描述文件,进而生成与代码一致的接口文档和客户端代码。这种通过代直接码生成接口文档的形式,在后面需求持续迭代的项目中,显得尤为重要和高效。

```

总结:Swagger发展到今天,已经是一组工具包了。它可以集成到各种语言的开发框架中,比如Java、Python、PHP、Go现在全部支持。

后端开发人员更新接口代码后,Swagger相关工具会自动生成接口文档。项目组所有成员可以在线查看,手动点击调用并查看响应内容。

```

我们来看一个具体的例子:

```
http://49.232.147.132:8080/
```

我在上面的阿里云上部署了一个Java的 SpringBoot服务。这个服务是一套完整的商城后台管理系统接口。在该项目中,集成了Swagger模块生成在线接口文档。

大致的项目配置如下(如果你不是一个开发人员,可以不必深究):

- 新增maven依赖

```
<!--swagger2-->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.8.0</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.8.0</version>
</dependency>
```


- 新建配置类

```
/**
 * Swagger2API文档的配置
 */
@Configuration
@EnableSwagger2
public class Swagger2Config {
    @Bean
    public Docket createRestApi(){
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.macro.mall.demo"))
                .paths(PathSelectors.any())
                .build();
    }
    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("SwaggerUI演示")
                .description("Demo模块")
                .contact("macro")
                .version("1.0")
                .build();
    }
}
```


- 在对应的controller类中,符合Swagger的编写规范


图1.jpg


配置完毕后,在项目部署的端口后面,增加部分后缀。就可以查看接口在线文档,地址如下:

```
http://49.232.147.132:8080/swagger-ui.html
```


图2.jpg


从上面的图中可以看出,对于一个典型的Java Web项目。每一个控制器(也就是Controller),你可以把它理解成一个子模块。每个模块中有不同的方法,每个方法其实就是我们平时测试的一个业务接口。

展开页面中的某个接口方法,可以看到该接口详细的信息。包括:响应的标准样例,每个请求参数的说明和参数类型,响应的常见错误码说明。点击最下方的 "try it out" 按钮,可以完成在线接口调用并在下方看到本次调用的具体响应数据。是不是比postman还要好用?只是没有自动化测试的功能。


图3.jpg

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   背景介绍  作为一个测试同学,提交bug是个绕不过去的坎(请不要杠哈,我真不太相信有测试同学从来未提交过bug)。  但是每次提交bug,少则几项多则几十项,填得有点头大有没有?即使有模板,根据模板再修改,手动填的时候也经常会漏掉一些项有没有?  所以为了我们这些懒人的福利,自动化提交bug就应运而生了。  测试需求分析  此自动化需求主要涉及到python/pytest,且需要jira API文档(下文有jira接口文档链接)。  测试流程  自动化脚本实现  bug模板及提交jira手工步骤  提完bug的bug模板参考下图:  创建bug时,参考下图,可以看见目前统一模板有如下10个...
            14 14 2076
            分享
          • 最近在用Python写一个一键替换文件的脚本文件,大概的功能是,向程序传递一个本地或SFTP目录的参数,程序可以把指定目录所有文件替换到特定应用程序的对应目录。程序提供了如下2种命令行调用: Usage: demo.py [sourcedir]Usage: demo.py [sourcedir] bydir 第一种调用的实际操作是:读取特定应用程序目录所有文件,并获取全路径作为一个集合,再把参数文件夹中文件按文件名与集合中文件进行匹配,如果匹配上则执行替换操作。第二种调用的实际操作是:按参数文件夹的目录存放的路径,完整替换到应用程序的对应目录。下面是最初的代码实现: #执行本地文件替...
            3 4 3642
            分享
          •   据报道,通用汽车公司一位高管表示,该公司正在探索ChatGPT的用途,作为该公司与微软公司开展广泛合作的一部分。  通用汽车副总裁斯科特 · 米勒(ScottMiller)上周说:“ChatGPT的应用将无处不在。”  米勒说,该聊天机器人可被用来获取关于如何使用车主手册中车辆功能的信息,或车库门代码等编程功能,或从日历中整合日程安排。  当地时间上周五,通用汽车发言人表示:“聊天机器人应用于汽车中这种转变不仅只是语音指令进化这单一功能,而是意味着客户可以期待他们未来的汽车整体上在新兴技术方面功能更强大更新颖。”  报道称,通用汽车正在研发一款使用ChatGPT人工智能模型的虚拟个人助理。...
            0 0 974
            分享
          • 1、引言小屌丝:鱼哥,我想请教一个问题。小鱼:国庆假期你经历了什么,让你变得如此的 "善良"?小屌丝:别这么说,我一直很善良,至少,很正直....小鱼:打住,直接点, 你有什么需要帮助的?小屌丝:我就是想把查询的结果也入到excel表中小鱼:然后呢?小屌丝:sqlserver数据库。小鱼:......好吧,还有其他要求吗?小屌丝:没有了。小鱼:OK,我就花费几分钟,给你整一个。 2、代码实战 2.1 openpyxl写入excel 2.1.1 安装凡是涉及第三方库,必须需要安装,老规矩,直接pip安装pip install ...
            0 0 945
            分享
          • 前言仅仅是针对CSDN账号密码登录这一小块的自动化测试;测试用例考虑的不是非常周全,仅图一乐因为用例比较少,所以没有用自己封装的seleniumAPI,这样看着比较方便一些python程序目录HTMLTestRunner需要下载,不能用pip安装。账号密码登录模块CSDN登录-账号密码登录的功能#!/usr/bin/python3 # _*_coding=utf-8 _*_ # @author junwei # @date 2021/2/28 21:21 # description 测试CSDN的账号密码...
            0 0 1863
            分享
      • 51testing软件测试圈微信