• 如何搭建接口自动化测试框架?


    经过了一年多的接口测试工作,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口结构验证、接口回归测试、线上定时巡检功能。

    一、框架的演进

    1. 界面 UI 做了优化,整个框架的画风突然不一样了(人靠衣装马靠鞍 实话)

    2. 加入了虚拟 DNS 切换技术

      1. <dependency>
      2. <groupId>io.leopard</groupId>
      3. <artifactId>javahost</artifactId>
      4. <version>0.3-SNAPSHOT</version>
      5. </dependency>

      可以动态配置 host 信息,对接口测试环境进行灵活切换
      Dns dns = new DnsImpl();
      dns.update(host,ip);

    3. 更换了 http 请求调用层,改为 rest-assure TesterHome
      这块怎么说呢,因为 rest-assured 也是封装的 HttpClient,如果只是调用入口,优势就不那么明显了,但如果要对各节点进行验证那么 rest-assured 的优势还是非常明显的。
      但我们平台主要验证结构,jsonpath 验证对于空结点处理存在一些问题,还是沿用了旧的 JSonArray 包进行处理。

    4. 框架抛弃了数据、业务逻辑的验证
      我们这边接口测试周期非常短,为了在有限的时间内完成测试任务,测试同学与服务端并行开发测试脚本,使用灰盒测试可以更加快速完成结构、数据、逻辑验证。(灰盒测试前期试行过程中发现此方法更适用于现有工作,所以框架抛弃了数据、业务逻辑的验证)

    5. 为业务测试提供一些测试小工具

    二、个人对自动化框架的看法

    1. 能够做好、落实一点或几点,就是成功的
    2. 能够为测试团队带来技术创新、测试质量或效率提高,就是成功的
    3. 一定要基于公司内部现状搞自动化
    4. 团队成员要达到统一认可、统一目标,一个人使劲一定比不过一群人使劲。
    5. 看到机会一定要抓住,再慢慢落实向前推进,执行过程中如不可行,一定要及时换路子......

    公司看重的是结果,过程不重要。。。。。但是对于团队成员来说过程是重要的,经过一年多的摸爬滚打,我们团队也已经从最初的功能测试、自动化测试到现在的灰盒测试,白盒测试,慢慢转变成了一个从技术角度推进质量的测试开发团队。

    不过话又说回来,有一个支持你的领导才是最重要的,起步最难,尤其是初期,建议先把团队的头拉到统一战线,后续工作才好进行!

    前言

    经过了一年的演进,旧的框架也做了一些新的调整,删除了很多冗余的功能,只保留了最基本的接口回归测试、线上定时巡检功能

    加入了虚拟 DNS 切换技术

    1. io.leopard
    2. javahost
    3. 0.3-SNAPSHOT
    4. 可以方例的配置 host 信息,对接口测试环境进行灵活切换
    5. Dns dns = new DnsImpl();
    6. dns.update(host,ip);

    更换了 http 调用层TesterHome

    目前在做接口测试方面的工作,结合部门现状,初步整理及搭建了 api 的自动化测试框架,现在把我的思路、框架结构和大家分享出来,一方面希望可以为大家提供一些参考,另一方面也希望大家多提意见,以便测试框架的改进~~

    主要目的:

    1, 各版本用例管理
    2, 结构验证、节点数据正确性校验
    3, 简单业务逻辑覆盖
    4, 各版本回归性测试
    5, 线上环境监控及预警
    6, 帮助开发、测试快速的执行接口测试,定位问题

     

    大体构建流程:

    一、.接口所涉及的信息都以数据结构形式进行存储。
    1,对接口、接口的输入、输出参数进行数据存储(POST、GET

    考虑到接口返回值一般都较庞大、逻辑关系较复杂,如果单靠人工进行采集的话工作量非常巨大,为了缓解压力提供了通过json串解析输出结构的功能。

     

    二、测试用例与接口进行关联,(支持自动、手工 case;正常、异常状态校验)
    将收集的输入、输出数据以树型结构展现,通过简单的勾选来完成测试用例的输入参数及预期输出结构进行关联生成测试用例。

    除了支持对JSON结构的校验,同时集成了selenium,实现对返回值为HTML的页面进行规则校验的功能

     

    三、测试用例的输入参数可配置,也支持与上行接口的输出参数进行关联。
    可以配置上行接口,取得相应节点对应值,自动赋予当前用例接口参数。
    

     
    
    1. 比如有些接口需要在登陆或其他的情况下去操作,那么就可以配置上行接口,模拟登陆,然后取得登陆key,用key做为参数去执行用例。

    2. 也支持选取规则配置中预先定义好的规则参数

     

    四、接口多种模式执行方式。
    提供多样的执行入口
    

    将接口各用例的执行情况(接口耗时 、成功与否、失败原因、异常节点等)信息,记入日志管理模块,同时为测试人员提供测试结果查询页面,对测试结果做大体的分析,尽可能的帮助测试人员去定位接口中存在的问题。
    

     

    对于频繁变动的接口,影响范围又比较模糊,完全可以以大版本进行自动化回归测试,排查影响范围,以减少人工遗漏。
    五、支持各类验证规则配置(集合、长度、类型、格式等)
    除了对输出结果进行简单的规则验证外,也支持输入参数集合绑定,可以对集合内所有项进行循环调用、循环验证排查。
    

     

    六、日常巡检、线上预警功能
    当接口打上巡检标识后,系统就会每天定时自动排查接口;同时协助线上环境监控及预警,自动生成预警邮件抄送相关负责人。
    

     
    
    1. 1,所有测试人员都可以通过WEB页面对接口进行录入、测试、生成测试报告。

    2. 2,在HOST配置中加入测试、开发、生产的IP地址后,系统就可以根据人员自动执行不同环境下的测试任务。

     感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

    这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

     

  • 相关阅读:
    MyBatis ognl.NoSuchPropertyException 或者 Invalid bound statement (not found)
    Chapter 7 Intermediate Shell Tool I
    按照xml文件和txt文件名,将对应名字的图象文件复制
    【公众号文章备份】你会喜欢慢下来的生活吗?
    JavaScript-作用域、预解析、对象
    Python —— excel文件操作(超详细)
    【紧急整理】《信息资源管理》信息资源管理的标准与法规,第5章
    说说对ajax、axios、jsonp的理解
    Unity计算着色器视频教程
    【算法】折半查找
  • 原文地址:https://blog.csdn.net/hlsxjh/article/details/134424135