首页 > 编程知识 正文

软件自动化测试技术(软件测试吧)

时间:2023-05-06 18:10:03 阅读:376 作者:2790

随着科技的发展,互联网技术正在全面赋能传统劳动密集型产业。除了产品设计、技术架构、软件编码、项目控制等核心环节之外,质量控制是满足产品交付标准的最后一个环节,其核心目标是保证生产出稳定可靠、满足需求的产品。其中,自动化测试作为软件质量控制的一种新的重要手段,在替代大量重复任务、提高回归测试效率方面具有很大优势,对我们敏捷开发优秀的科技产品具有重要意义。

一.背景介绍

软件测试最基本的形式是手工测试,即软件测试的整个活动过程由软件测试工程师通过鼠标、键盘、麦克风、手机屏幕触摸等手工完成。

图1:手动测试

软件自动测试是将人的测试行为转化为机器的测试行为的实践。对于服务器接口的API测试,是指自动化测试工具模拟一系列需要在软件接口上手动操作的接口请求,自动验证结果是否达到预期。

图2:自动化测试

事实上,自动化测试涵盖了从UI(接口测试)到契约(接口测试)和底层代码方法(单元测试)的整个过程。

图3:自动化测试

(1)单元单元测试

金字塔底层的单元测试通常由开发人员编写,质量控制基本上已经成为开发的工作。因此,这种水平的测试对整个研发的技术和人员有很高的要求;d测试团队,过于理想化,难以普及。

(二)用户界面测试

顶层UI测试占比小,因为UI界面的不稳定性和UI定位脚本的识别难度高,对前端代码标准化也有一定的要求,所以脚本的维护成本在一定程度上也很高。自动化UI测试更适合测试需要大量重复的单一场景,测试功能的稳定性和兼容性。

(3)服务测试

模型中间是Service测试,也就是接口API测试。API接口测试介于单元测试和接口测试之间,是一种灰盒测试方法。当前端接口没有完成时,测试人员可以独立验证内部接口功能的完整性。与UI自动化测试相比,它具有自动化成本低、测试效率高的特点,也将是我们测试自动化研究和应用的重要组成部分。

二、技术预研目标

基于以上背景,我们知道这项技术预研的方向是开发一套能够满足公司现有产品和未来规划(微服务等)的接口自动化测试工具、代码框架或平台。).

(一)纯脚本语言自动化框架

1.研究框架:基于python语言的pytest、unittest、Robot Framewor等。

2.优点:使用python语法的框架代码美观、功能强大;使用IDE进行编写和调试很方便。unittest和pytest分别是python的标准测试库和第三方开源库,可以编写流程复杂、断言性更强的测试场景。RF框架功能更全面,可以提供更多可用的关键字,增强了代码可读性。这些开源框架都有非常丰富的插件系统和繁荣的社区。

3.缺点:对测试人员的脚本能力要求高;多人同时编写项目脚本时,需要掌握代码维护和冲突解决的能力。亮豆芽很难控制成员的界面编写过程和进度。

图4:纯语言脚本框架

(2)工具

4.研究工具:邮差、ApiFox等

5.优点:门槛低,动手快,界面操作简单方便,有各种代码模块,可以根据需要使用,也可以用js语言编写脚本进行复杂的处理。有了第三方库newman,直接在服务器上运行进行持续集成就很方便了。支持包抓取、多数据源读取、带插件的数据库操作等。ApiFox还附带了Mock服务,非常适合枚举测试场景。

6.缺点:工具自动化功能简单,适用于流程简单的系统。接口定义与测试收集模块耦合。

1330140778908c446b0c3f805?from=pc">

图5:postman工具

(三)平台类

7.调研类:Nei、Rap、Yapi、FasterRunner等

8.优点:保证大型企业级项目的管理、扁平化的权限设计、嵌入Mock服务、提供接口文档管理,且大部分为开源产品,可二次定制开发。

9.缺点:基于浏览器的操作可能存在漏洞,相对没有桌面软件便捷稳定,抓包困难,暂时不适合做枚举测试。

无论选择框架还是平台,归根到底只是帮助我们更好完成自动化工具,自动化测试体系的核心资产是测试用例,是测试覆盖率,而不是无用的炫技的代码堆砌出来的东西。个人认为结合公司规模、系统级别、测试人员的素质模型,以及综合三类测试手段的优缺点等,开源的平台类产品,并在之上进行二次定制化开发,更满足现在大部分以业务为导向的企业技术的预研目标方向,使其成为完成接口自动化的利器。

三、相关产品调研

我们调研了市面上开源的接口自动化测试产品,其中具有代表性的分别是网易Nei、阿里Rap、去哪儿Yapi、大疆HttpRunner。

(一)网易Nei(Github start:109)

Nei 是网易前端事业部的产品,在平台类的自动化产品中功能做得较完善,但是 Nei 的主要定位是做 saas 服务,基础模块是跟网易通行证有关,所以它只开源了部分代码,有些基础模块需要自己重新开发。而对于企业来说,购买sass服务,公司机密的接口数据放到第三方平台是个危险的操作。

图7:网易Nei平台

(二)阿里Rap(Github start:6k)

Rap 是阿里妈妈 MUX 团队2013年出的一款产品,从时间上看是同类产品中最早的,现在已新出Rap2版本,但是界面操作不友好,缺少接口测试功能,而后端使用其他工具(postman)测试接口,将导致不能及时更新接口文档。

图6:阿里Rap平台

(三)大疆HttpRunner(Github start:2.1k)

HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本, 即可实现自动化测试、性能测试、线上监控、持续集成等多种测试需求,但是他只提供了底层能力,没有平台界面,需要配合工具和编写脚本。而基于大疆开源HttpRunner测试做的FasterRunner的前端界面功能不完善,不能满足需求。

(四)去哪儿Yapi平台(Github start:16.3k)

Yapi是去哪儿公司开源的接口自动化测试平台,基本包含了前面几款产品的全部功能,优秀特性如下:

1.接口文档管理,将测试集合与接口定义解耦;

2.整合postman接口调试功能;

3.整合mock.js,内置mock server服务,且提供高级mock期望功能;

4.强大的 pre-script 和可视化表达式功能,处理复杂脚本逻辑;

5.插件机制、非常便于功能扩展,且开源社区有众多优秀插件;

6.基于MongoDB高性能数据库,满足企业级测试用例量级;

7.支持浏览器端和服务端自动化测试,测试报告美观;

8.官网文档齐全,开源易部署,方便二次开发扩展功能;

9.扁平化权限设计,保证大型企业级项目的管理,界面美观易用

10.代码可维护性高,最后一次更新时间13天前,社区活跃;

图8:去哪儿Yapi平台

四、Yapi平台预研成果

Yapi平台相较于其他同类型平台优势较高,且二次开发起来非常方便,适用于大多数的企业做定制化的接口管理和自动化测试平台。具体关于Yapi如何使用以及如何在内网部署&二次开发,我将在下一篇文章详细介绍。

1.Yapi官方文档:https://hellosean1025.github.io/yapi/

2.码云镜像地址:https://gitee.com/mirrors/YApi

图9:私有化Yapi平台

3.接口管理

4.测试集合

5.测试报告

6.脚本应用:

7.Yapi支持二次开发,目前我们内部部署的Yapi平台已扩展文件上传功能,优化测试集用例排序方式,解决部分报错bug等,并已使用Git代码管理。

8.Yapi支持与Jenkins集成,目前已可与Jenkins配合使用。

福利彩蛋

我组建了一个【Python自动化测试交流群】,大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,助你快速进阶Python自动化测试/测试开发,走向高薪之路。

如果你想要入群学习交流,请关注+私信回复:“入群”,就可以拉你进入【Python自动化测试交流群】。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。