• 0
  • 0
分享
  • 思考:如何让自动化框架更自动化——软件测试圈
  • 曼倩诙谐 2023-12-28 15:02:50 字数 2325 阅读 741 收藏 0

  一、引言

  对于大厂的同学来说,接口自动化是个老生常谈的话题了,毕竟每年的MTSC大会议题都已经能佐证了,不是大数据测试,就是AI测试等等(越来越高大上了)。不可否认这些专项的方向是质量智能化发展的方向,但是凡事都遵循2/8定律,80%的从事软件测试的同学或许对这些并不感冒,因为大部分测试同学分布于中小厂,而他们大多停留在如何更好更快地进行接口自动化的阶段。

  小厂质量团队地位低,在团队中发言分量轻,项目中往往处于劣势,项目的测试时间不能保证,更别提搞什么高大上的质量专项了,能把接口自动化测试做好就是大事一件,节省不少时间了。

  因此,聊聊接口自动化还是非常有必要的。

  二、“JMeter式”的自动化设计思路

  毫无疑问,聊起接口自动化,大家可能第一时间联想的就是自动化工具、自动化框架,例如JMeter、Postman等。这些工具学习成本小,掌握这些工具用法算是一条腿迈进了自动化测试大门。当然我建议大多数测试菜鸟先从工具的使用学起,话说“读书百遍,其义自见”,用多了你也就理解了工具本身的设计(模式)精髓,为将来自己动手设计工具打好基础。

1-1.png

  我也曾设计过接口测试工具,但是现在回过头再看看开发出来的东西,或多或少有些JMeter的影子!是的比葫芦画瓢,JMeter已经在你脑海里先入为主了,你开发的接口测试工具有它的影子也不足为怪。换句话说,这或许是JMeter式的重复造轮子。

  以我之前设计的测试工具为例,使用它就要动手搜集接口信息,动手组装入参,动手写断言。。这TM就是和使用JMeter写用例要做的事情一样的嘛!

  JMeter式的自动化测试,我认为是“高级”的手工测试。自研的测试框架写用例往往需要代码基础,但是写过的都知道,业务用例代码重复度挺高的。而更重的在于用例的维护,毕竟大家写的代码风格迥异,维护的难度更大,甚至不如JMeter的用例维护来的方便。

  意识到这个问题后,我也尝试在github上搜索stars比较多的开源自动化工具,遗憾的是这些框架始终摆脱不了这个“设计套路”。例如:

1-2.png

  当然,说上面这些并非不建议大家开发接口自动化测试框架,自研的接口测试框架同样有很多优点。

  1、测试工具开发的测试用例往往不易于维护,试想一下当你维护JMeter生成的各种JMX文件场景。

  2、大量的测试用例可重用性差,例如登陆模块,每个接口调用前都要获取cookie,而登陆则是前置模块,使用JMeter开发用例需要每个JMX文件都要包含登陆,重复度太高。

  3、无法满足自动化平台诉求,短期内确实可以快速实现自动化,但是这些工具对于平台非自动化能力的拓展成本较高,毕竟改动开源工具的成本比自研高很多。

  4、使用开源工具不利于提升团队在自动化技术方面的成长。自动化能力的提升离不开编程能力的提升,使用开源工具能提升工具学习使用能力,最终你的成长无外乎又掌握了一个测试工具的使用。

  那么,如何摆脱JMeter式的传统思路,用更多的自动化代替手工??

  三、让自动化框架更自动化

  接口自动化的核心是什么?接口、数据、断言。

  正如上文说的,这也是我们手工重复度比较高的工作内容,也是痛点所在。

  传统的自动化用例设计,往往需要人工采集接口信息(例如抓包,然后写脚本提取接口信息HTTP Type、Method、Request等),人工造入参数据等,这些重复度是极高的。更进一步来说,人工造入参数据更是痛中之痛,毕竟不同的业务需要构造的request内容是不同的。

  那么如何自动化实现呢?

  不妨大家先考虑我们是在哪里获取的这些信息。例如接口信息,你是否有过通过开发者工具提取接口信息?是否有过解析Charles工具har文件提取接口信息?以及解析swagger等接口文档工具。。。。然后通过提取的接口信息生成自动化框架所需的接口请求service。

  但是,接口信息就在那里,为什么还要将其从一种载体中提取出来再转化为另一种类型的接口信息。难道直接使用类似har文件、swagger的接口信息就不行吗?当然是可以的。例如美团的Lego测试平台。

1-3.png

  可以直接解析其他接口测试工具文件里的接口信息,以下拉列表的方式供测试使用者选择要写用例的接口,当然该接口request、Method等信息要同步填充到对应的输入框。这样就省去手工输入接口信息的时间。

  刚刚说了,构造入参数据是痛中之痛?这部分如何自动化?

  我的答案,入参数据从线上服务器日志里去取。试问,我们构造的数据难道有线上业务真实跑出来的数据更贴合我们要测试的业务吗?当然没有。

  so,线上服务器的日志格式务必要规范化,这样可以方便我们提取xx接口的请求数据。有条件的公司可能会有自己的分布式链路追踪,这样可以基于trace提取出某个接口的请求和响应的所有信息。

  断言怎么自动化?

  其实这个的解法和第2个问题一样,我们在从日志中提取接口信息的同时,肯定也是有xx request参数下的xx response相应信息,我们可以将此次的响应信息作为基准,下次相同的request再次请求的时候,得到的响应和基准响应做比较就行了。当然,这个其实也是流量回放的思路。

  四、总结

  本文是我对此前设计的一个测试框架的反思,当时设计框架的“上下文”(即团队基建能力、以及自身的设计水平和负责的项目的业务架构等背景)和现如今所在的公司质量基建是有很大差别的(有时候很多想法的实现是需要一定基建能力支撑的)。在一定程度上,也算是站的更高,看的更远吧。


作者:佚名    

来源:http://www.51testing.com/html/66/n-7792766.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 之前写Kafka Client Go实践的时候,跟一位粉丝交流,Go语言的channel实现和Java的多线程实现的性能问题。就想做一次两者的性能测试进行对比。可惜Go语言用得少,还没形成快速进行性能测试的基础能力。所以得建设一些基础设施之后才行,今天分享一下,基于Go语言的动态QPS压测模型实现,算是基础能力建设的一部分了。本文基于上期提到的Go语言的协程池,查到很多资料,有的不建议复用协程。原因主要两点:1. 协程本身创建开销非常小,可以忽略。频繁创建和销毁协程并不会导致明显的性能瓶颈。2. 协程设计本来基于简单化,使用协程池破坏了使用便捷性对于第一个观点,以我现在知识和实践经验来说,不是...
            0 0 876
            分享
          • 最近公司需要开发一个简单的报名系统,供外网用户提供报名服务,由于我们公司是个初创的微型公司,开发人员都是刚毕业不久,开发经验相当缺乏。对于服务器性能测试这块的经验更是少得可以忽略。迫使不得不让我们去尝试了解测试的知识。首先我们的需求场景如下:服务器硬件:(只有一台) 系统:Windows 2003 WebServer:Tomcat 7.0 Jdk:7.0 CPU:8核 2.9GHz两个 内存:16G报名应用系统:只需要向外提供一个报名和找回报名号的接口。我们需要:测试服务器能同时承受多少条HTTP请求。通过各种百度后发现LoadRunner是好,但是使用起来短时间...
            10 11 1765
            分享
          • 把做Android开发以来碰到的一些不错的性能分析工具做个整理汇总...Debug GPU Overdraw类型:系统自带功能UI渲染检测功能(打开Settings,然后到 Developer Options -> Debug GPU Overdraw 选择 Show overdraw areas,手机系统设置中文的孩纸,自行对照翻译进去哈)作用:用来检测UI的重绘次数,开发者可以用来优化UI的性能。使用心得:检测UI性能的利器,对于开发者做UI优化的帮助挺大的。因为大量的重绘容易让app造成卡顿或者直接导致丢帧的现象。开发者熟悉View的绘制原理可以结合对一些布局或者自定义控件做相应的...
            13 13 878
            分享
          •   边缘计算和云计算之间的主要区别是什么?  在计算机中,使用短语“边缘计算”。 它使计算能力和存储更接近计算机,它们对于信息源来说是真正必要的。 数据不在云端扫描,通过众多数据中心传输; 相反,每个人都可以访问云。 这种分配减少了滞后并节省了存储空间。 与“物联网技术”相比,边缘计算是进入计算机世界的一种不同方法。 可以访问实时数据的通道的“边缘”是数据源所在的位置。 它是关于将虚拟机放置在尽可能靠近物理产生数据的位置,而不是整合的云、数据库服务器或数据存储设施。  边缘计算使得除了传输通道之外,还可以通过单个计算基础设施部署计算资产和通信技术。 采用边缘计算可以更轻松地满足计算需求。 实时...
            0 0 63
            分享
          •   苹果与医疗科技公司 Masimo 之间的专利纠纷持续发酵,近期更是发展到 ITC 裁决苹果侵犯 Masimo 专利,可能导致 Apple Watch Series 9 和 Apple Watch Ultra 2 在美国禁售的地步。  根据最新消息,苹果正在探索多种解决方案,其中之一便是通过 Apple Watch OS 10 系统的软件更新尝试规避 Masimo 的专利。  IT之家此前报道,今年 10 月,ITC 裁定苹果手表的血氧传感器侵犯了 Masimo 的两项专利,涉及五项独立的专利侵权行为。目前该案件已进入为期 60 天的总统审查期,将于 12 月 25 日截止。拜登政府可以介入...
            0 0 875
            分享
      • 51testing软件测试圈微信