51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3898|回复: 0
打印 上一主题 下一主题

[原创] 节省时间!再也不用等前后端一致才测试了

[复制链接]
  • TA的每日心情
    无聊
    前天 09:05
  • 签到天数: 1050 天

    连续签到: 1 天

    [LV.10]测试总司令

    跳转到指定楼层
    1#
    发表于 2021-6-23 10:59:42 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
    问题描述
      前后端分离体系中,后端接口变动时,前端需要相应调整,但是往往没有提供详细的接口调整说明,无法开展[url=]测试[/url]
      拟通过编写代码并在构建后端程序时自动执行,自动生成接口文档并可查看变动情况。

      解决方案
      通过Junit自动执行Swagger的API获取工程后台接口信息,并将接口信息写入ShowDoc,通过ShowDoc可直观查看接口变动情况,解决接口变化感知的问题。

      适用技术
      适用于服务端,Java技术栈。

      应用价值点和创新点
      通过Junit自动执行Swagger的API获取工程后台接口信息,然后将获取的接口信息写入ShowDoc,每次后端程序构建时自动写入接口信息,通过ShowDoc可以查看历史接口版本并对比,解决接口变化感知的问题。

      适用工具
      所使用到的工具主要是Junit、Swagger(工程在线接口辅助工具)、ShowDoc,前提默认已经部署ShowDoc的测试环境。
      ShowDoc是一款用于团队级别的在开发测试阶段在线文档分享工具,可以收集json数据并以在线文档的形式展示出来。

      过程描述
      总体的流程如下图所示。

    图1 完整流程图


      对工程中的每一个controller增加Swagger插件。
      操作步骤如下:
      (1)引入Swagger的pom文件。
    1.   <dependency>
    2.       <groupId>io.springfox</groupId>
    3.       <artifactId>springfox-swagger2</artifactId>
    4.       <version>${swagger.version}</version>      
    5.     </dependency>
    复制代码
    (2)在启动类上增加注解。

    1. @EnableSwagger2
    2. @EnableFeignClients
    3. @EnableScheduling
    4. @SpringBootApplication
    5. public class Init{
    6.   public static void main(String[] args) {
    7.     TimeZone.setDefault(TimeZone.getTimeZone("GMT+8"));
    8.     SpringApplication.run(InitActivity.class, args);
    9.   }
    10. }
    复制代码
    (3)在controller中增加controller的注释编写。

    1. @ApiOperation(value = "test", httpMethod = "POST", response = test.class, notes = "测试接口")
    2.   @RequestMapping(value = "/test", method = RequestMethod.POST, consumes = "application/json")
    3.   public String test(@RequestBody String reqBody)
    4. {}
    复制代码
    编写[url=]测试用例[/url]获取工程的Swagger在线接口页面的json数据并发送给ShowDoc。操作步骤如下:
      (1)首先,在工程中创建测试用例所在的目录和路径,如图所示。
      这里使用的路径名称是 /src/test/java/com/test。
      (2)编写测试类 SwaggerDocTest:
    1. @RunWith(SpringRunner.class)
    2. @SpringBootTest
    3. public class SwaggerDocTest {
    4.   private MockMvc mvc;
    5.   @Autowired
    6.   private WebApplicationContext wac;
    7.   @Before
    8.   public void getSession() throws Exception {
    9.     mvc = MockMvcBuilders.webAppContextSetup(wac).build();
    10.   }
    11.     @Test
    12.     public void createShowDoc() {
    13.       RestTemplate client = new RestTemplate();
    14.       String swaggerUiUrl ="http://";      //swagger的测试地址
    15.     String apiKey ="fakekey";      //showdoc上用的参数
    16.     String apiToken = "faketoken";    //showdoc上用的参数   
    17.     ResultActions ra;
    18.     String json = "";
    19.     try {
    20.       ra = mvc.perform(MockMvcRequestBuilders.get("/v2/api-docs")
    21.           .contentType(MediaType.APPLICATION_JSON)
    22.           .accept(MediaType.APPLICATION_JSON_UTF8)
    23.           );
    24.       ra.andExpect(MockMvcResultMatchers.status().isOk());
    25.       ra.andDo(MockMvcResultHandlers.print());
    26.       json = ra.andReturn().getResponse().getContentAsString();
    27.       
    28.     } catch (Exception e) {
    29.       e.printStackTrace();
    30.     }
    31.     HttpHeaders headers = new HttpHeaders();
    32.     HttpMethod method = HttpMethod.POST;
    33.     headers.setContentType(MediaType.APPLICATION_JSON_UTF8);
    34.     headers.add("Accept", MediaType.APPLICATION_JSON_UTF8.toString());
    35.     headers.add("apiKey", apiKey);
    36.     headers.add("apiToken", apiToken);
    37.     String reqBody = "{\"reqBody\":"+json+"}";
    38.     HttpEntity<String> strEntity = new HttpEntity<String>(json,headers);
    39. //获取swagger的json数据并发送到showdoc上
    40.     String result =
    41. client.postForObject("http://*****/**?swaggerUiUrl="+swaggerUiUrl, strEntity,String.class);
    复制代码
    本测试类的的用处在于通过访问本工程Swagger在线接口的地址,获取Swagger在线接口页面所展示的json数据,并将此json数据发送到ShowDoc上,ShowDoc将这些json数据转换成在线接口文档并保存历史[url=]记录[/url]
      发布工程,并执行测试用例,使其自动更新在线接口文档,测试或者前端开发人员观看ShowDoc在线接口的历史版本信息来查看接口的变化情况。步骤如下:
      (1)打开ShowDoc,并点击相应接口的历史版本。
      (2)展示历史版本的变化信息。



    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-23 02:45 , Processed in 0.067325 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表