1、背景
随着H5在各行业领域的运用,无论是在APP内嵌入H5页面的hybrid应用还是直接在微信公众号或者轻应用中使用H5页面都是非常的常见(比如前端页面通过HTTP 接口调用拉取数据进行交互,实现前后台分离)。 而随着此类技术的应用和发展,作为一个测试人员,跟上时代的变化,除了保证前端页面UI的正确性,也要保证HTTP接口的正确性,从而保证了整个业务功能逻辑的正确性,而接口如果手工测试,不仅工作量很大,而且效率比较地下,而它的特点更适合通过搭建自动化框架来测试,既能提升效率,又能保证质量。
HTTP 接口一般有两种请求方式,一种是POST,一种是GET, 需要关注发起请求headers(POST请求还要关注post 数据)和响应的headers和body,一般情况下返回的数据都是json格式。从Chrome的Network去分析一个网页的请求加载顺序大概就能看出,目前很多网页的请求顺序都是先去请求html,从html里得到css和js的地址,去请求css和js,从js里的http接口去请求相关的数据,如果拉取回来的数据还有很多图片或其他地址,在继续请求图片,回填内容到html网页里,网页内容不断更新变化,其实也就是接口拉取出来数据的变化,页面的样式基本都是一样的:
1.1、手工测试hold不住的问题
1) 如上图,视频分类很多,电影、电视剧、综艺、动漫等,每次都把各个频道测试一遍,比较耗时;
2) 在进行视频组合查询时,各种条件组合能拉取回不同的数据,而组合的方式有上千种,如何都保证查询过滤的正确性;
3) 前端页面都是正常的,可用户总反馈有时候拉取不到数据,到底哪里出了问题;
4) 写了用例,但是发现覆盖不全,因为组合场景太多,每个组合场景都测试,工作量又太大;
5) 线上出现问题了我们却不是第一个知道出问题了,没法对页面的内容进行很好的监控,因为用户场景变化多端;
1.2、怎么来通过HTTP接口测试很好的解决上面问题呢
1) 抽取接口(chrome爬取? http工具分析?手工提取)
2) 拿到接口后,怎么获取接口参数所有的值(通过线上数据去挨个查找?从运营平台获取数据?)
3) 怎么把所有线上接口都全部抓取并监控起来
4) 发现问题的反馈处理
5) 接口修改维护
带着这些问题,进行了下面整个自动化接口测试平台的搭建。
2、接口自动化测试思路
2.1、整个测试流程的梳理
根据上面1.2所描述将会遇到的问题,整理测试设计思路,每个大项划分出要完成的子项,流程图如下:
2.2、运行时机
设计这个测试,是为了更好的更快的发现问题,能尽早的完成测试闭环,找出产品缺陷,反馈开发同学,加快整个迭代的速度。具体有以下场景:
1)开发自测:开发同学开发完新的接口后,不知道对其他接口有没有影响,可以跑一遍接口测试来确定;
2)冒烟测试:开发提测后,可以把所有接口和参数都运行一遍,所需要修改域名为测试环境域名和新增接口;
3)线上监控:对已上线业务进行监控,当某些组合条件查询不到数据或者某些接口拉取不到数据时,能够及时提醒相关测试和开发人员。