阿里5年经验之谈 —— 浅谈自动化测试方法!

导读

在当今快节奏的软件开发环境中,高质量的代码交付至关重要。而针对经过多次迭代,主要功能趋向稳定的产品,大量传统的重复性手动测试方法已经无法满足高效、快速的需求。为了提高测试效率保证产品质量,本文通过产品实践应用,引入一种强大而易用的自动化测试方法——Python+Requests+Pytest。

Part 01

●  为什么使用自动化测试 ● 

自动化测试是一种使用软件工具和脚本来执行测试用例的方法,能够以比传统手动测试更高的效率、速度和准确性来验证软件的正确性。在不同阶段的开发周期中,自动化测试可以为团队带来诸多好处。

➤ 自动化测试提高了测试流程的效率

通过编写可复用的测试脚本,自动化测试能够快速而准确地执行大量用例,省去手动执行测试的繁琐过程。使得测试团队能够专注于更有意义的工作,如测试设计、缺陷管理和结果分析等。

➤ 自动化测试大大减少了人为错误的风险

相比于人工操作,自动化测试在执行测试过程中减少了潜在的人为错误,提高了测试的准确性和一致性。能够帮助团队更早地发现和修复问题,提高软件的稳定性和质量。

➤ 自动化测试可以提高测试覆盖率

通过编写全面的测试脚本,自动化测试能够覆盖更多的测试场景和边界条件,发现隐藏的缺陷并提前预防潜在问题,有助于降低软件开发周期中的风险,并提高用户体验。

在产品测试过程中,我们已经应用自动化测试并取得了显著的成果。无论是对于测试团队还是开发团队,自动化测试都能为我们节省大量时间和资源。传统的手动测试需要投入大量的人力和时间,而自动化测试可以帮助团队节约宝贵的时间和资源,让团队可以更好地应对快速迭代、紧张的发布计划和复杂的测试需求。

Part 02

●  常见的自动化测试方法对比 ● 

2.1 Python+Selenium

功能:主要用于自动化执行Web UI测试,可以模拟用户在浏览器中的行为,如点击、输入和页面导航等。

使用难度:需要基本的编程基础,编写脚本来模拟用户操作。

执行效率:需要实际运行浏览器来执行测试,可能会占用较多的系统资源和时间。尤其是在大型测试套件中,执行速度可能会受到影响。

生态系统与扩展性:作为Python的一部分,拥有强大的生态系统和丰富的第三方库,提供了大量的资源和支持。

2.2 Postman

功能:专注于接口测试和API测试,提供强大的界面和功能,可以轻松设置和发送HTTP请求,并验证返回结果。

使用难度:拥有直观友好的用户界面,无需编写代码,易于上手使用。即使没有编程经验,也可以通过简单的图形界面操作完成测试。

执行效率:由于直接发送HTTP请求,并且没有浏览器渲染的开销,因此执行速度相对较快,适合大规模的接口测试。

生态系统和扩展性:有庞大的用户社区和丰富的第三方插件,可以扩展测试的功能,例如生成报告、集成测试等。
 

现在我也找了很多测试的朋友,做了一个分享技术的交流群,共享了很多我们收集的技术文档和视频教程。
如果你不想再体验自学时找不到资源,没人解答问题,坚持几天便放弃的感受
可以加入我们一起交流。而且还有很多在自动化,性能,安全,测试开发等等方面有一定建树的技术大牛
分享他们的经验,还会分享很多直播讲座和技术沙龙
可以免费学习!划重点!开源的!!!
qq群号:822269834

2.3 Python+Requests

功能:灵活的HTTP库,用于发送各种类型的HTTP请求,如GET、POST、PUT和DELETE,并对响应进行验证。

使用难度:需要一定编程知识,通过编写Python脚本来发送HTTP请求和验证响应。对于有Python经验的开发人员来说会更加容易上手。

执行效率:具有较高的执行效率,适用于大型项目或需要频繁执行测试的情况。

生态系统和扩展性:作为Python的一部分,拥有庞大的社区和丰富的生态系统,可以轻松集成其他库和框架,满足复杂的测试需求。

通过从功能效果、使用难度、执行效率和功能扩展等多方面进行综合考量可以得出结论,Python+Selenium WebUi属于较重量级测试工具,要求产品界面稳定,功能变化小等要求;采用这种方式测试脚本输出的速度较慢,后期维护较为耗时间;而Postman的优点为上手较快,输出用例较快,但其缺点也比较明显,无测试套导致用例无法进行隔离,问题定位困难,团队协同开发存在一定困难;Python+Requests方法在覆盖度上较于UI自动化较弱,但无论是协同开发及登陆适配等,简单易用、轻量级、灵活性、可扩展性、丰富的资源和跨平台兼容性等均有一定优势,因此最终我们选择Python+Requests方法进行自动化测试。

Part 03

●  架构优势 ● 

自动化测试框架我们选择了Pytest,Pytest自动化框架主要具有以下优势:

简单灵活,容易上手

Pytest不需要使用繁琐的类继承和装饰器,而是使用了一种更简洁的测试函数和约定来组织测试代码;Pytest会自动查找项目中以"test_“开头或以”_test"结尾的文件、模块和函数,并将其识别为测试用例。此外,Pytest支持多种断言方式,包括内置的Assert语句、第三方的Assert库(如Pytest-assume、Pytest-check等)以及自定义的断言函数,可以选择最适合的断言方式,检查代码的正确性,快速定位问题,并及时修复。

支持参数化

Pytest支持参数化测试,可以使用@Pytest.mark.parametrize装饰器为测试函数传递不同的参数,并运行多次测试,简化重复测试代码的编写和维护,提高测试用例的重用性。

丰富的插件生态系统并且可以自定义扩展

Pytest拥有大量的第三方插件,可通过安装配置插件来扩展和定制测试框架的功能,从而满足各种测试需求。而且,Pytest可以和Allure结合生成非常易读的定制的报告,还可以和Jenkins实现持续集成。

总体来说,Pytest是一个功能强大、易用且灵活的自动化测试框架。无需手动管理测试套件,可以快速添加、删除或修改测试文件,简化了测试用例的组织和维护。它广泛应用于Python项目中,为测试团队提供了一种简洁、高效和可拓展的方式来编写和管理测试用例。Pytest的高灵活性和高扩展性,使得定制化测试框架变得非常简单。

Part 04

●  实践应用 ● 

根据自动化测试的特点,能够应用自动化测试的产品应是需求稳定,不会频繁进行变更,研发和维护周期较长,需要频繁执行回归测试,需要在多种平台上重复运行相同测试场景,且开发较为规范,系统可测试性高的产品。

目前,我们已经使用Python+Requests+Pytest自动化测试方法,在产品测试过程中进行实践应用,整体框架主要分为四层:

1、用例组织层:使用Pytest框架,包括TestCase,Allure测试报告模块,RunTestCase启动模块及操作日志记录,用例组织层主要用于最终的用例连跑,测试报告输出及日志记录输出。

2、自动化测试核心代码层:以页面为单位组织实现相关业务,提供给上层,即用例组织层进行业务判断。

3、Tools模块:主要常用工具模块,如日志模块,Token获取方法,读取参数工具,提供给上层使用。

4、配置文件模块:该层主要记录静态配置,如URL,Body体以及测试环境等相关信息。除Config配置文件,还需形成一个Excel文件,进行URL管理、URL别名管理、Body管理等。

在进行自动化脚本的编写过程中,我们主要遵循以下原则:

1、用例之间应是独立的,没有依赖关系,可以独立运行。

2、用例执行没有顺序要求,随机顺序可以正常执行。

3、每个用例都能重复运行,运行结果不会影响其他用例。

使用这种自动化测试方法,在对产品进行自动化测试时可自定义测试模块,在每次用例脚本连跑完成后,能够直接生成清晰、易读性高的测试报告。

 

Part 05

● 实践效果 ● 

当前该自动化测试方法已在中移系统集成有限公司智慧城市平台部7个产品进行实践应用,预计产生自动化功能用例超过1500个,当前已完成85%以上。我们完成了多个产品的自动化工程部署,支持一键式运行,测试模块可选择,测试环境可灵活变更,测试报告可实时生成在线查看,整体流程最快缩短至5分钟,加速了测试过程并极大地提升了测试效率,有力地保障产品质量及稳定性。


最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走!

 

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/250434.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

LeetCode(66)二叉树的最大深度【二叉树】【简单】

目录 1.题目2.答案3.提交结果截图 链接: 二叉树的最大深度 1.题目 给定一个二叉树 root ,返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1: 输入:root [3,9,20,null,null,15,7]…

DS考研真题总结——客观题(1)

开始整理真题中的客观小题,至于和算法有关的大题统一最后整理~ 定义背诵:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效…

C语言----文件操作(二)

在上一篇文章中我们简单介绍了在C语言中文件是什么以及文件的打开和关闭操作,在实际工作中,我们不仅仅是要打开和关闭文件,二是需要对文件进行增删改写。本文将详细介绍如果对文件进行安全读写。 一,以字符形式读写文件&#xff…

JVM学习之JVM概述

JVM的整体结构 Hotspot VM是目前市面上高性能虚拟机代表作之一 它采用解释器与即时编译器并存的架构 在今天,Java程序的运行性能已经达到了可以和C/C程序一较高下的地步 Java代码执行流程 具体图为 JVM架构模型 Java编译器输入的指令流基本上是一种基于 栈的指令…

关于负载和驱动能力的问题总结

这两天重新接触到了驱动能力这个说法,之前也听过,但是一直不理解是怎么回事儿,也就没有深究,现在想来,这里面还是有点门道的。 驱动能力,说的是什么呢?应该就是带载能力,而带载能力&…

Linux 中的网站服务管理

目录 1.安装服务 2.启动服务 3.停止服务 4.重启服务 5.开机自启 6.案例 1.安装服务 网址服务程序 yum insatll httpd -y 查看所有服务 systemctl list-unit-files 2.启动服务 systemctl start httpd 查看服务进程,确认是否启动 ps -ef|grep httpd 3.停止…

Windows Linux - 关于IP地址看这一篇就够了

目录 🥙1 IP地址简介 🥙2 IP地址分类 🥪分类方式1 🥪分类方式2 🥪特殊的IP地址 - 本机IP地址 🥙3 域名:便捷的记录IP地址 🥙4 常用命令 🥙5 查看网络IP和网关 &…

内网穿透工具,如何保障安全远程访问?

内网穿透工具是一种常见的技术手段,用于在没有公网IP的情况下将本地局域网服务映射至外网。这种工具的使用极大地方便了开发人员和网络管理员,使得他们能够快速建立起本地服务与外部网络之间的通信渠道。然而,在享受高效快捷的同时&#xff0…

windows电脑半夜突然睡眠自动唤醒的问题查找与治理

遇见几次了,半夜起来上厕所,发现休眠的电脑居然自己开了,还得跑过去把电脑再休眠,很烦。昨天晚上居然自动唤醒两次,忍无可忍了,于是开始查找原因。 查询原因如下,解决方面也在后面。 固件 S3 计…

深度学习记录--矩阵维数

如何识别矩阵的维数 如下图 矩阵的行列数容易在前向和后向传播过程中弄错,故写这篇文章来提醒易错点 顺便起到日后查表改错的作用 本文仅作本人查询参考(摘自吴恩达深度学习笔记)

Python学习路线 - Python语言基础入门 - 数据容器

Python学习路线 - Python语言基础入门 - 数据容器 数据容器入门为什么学习数据容器数据容器 数据容器:list(列表)列表的定义嵌套列表的定义列表的下标索引列表的下标(索引)列表的下标(索引) - 反向嵌套列表的下标(索引) 列表的常用操作列表的常用操作(方法)列表的查…

关联规则 关联规则概述

关联规则概述 关联规则 (Association Rules) 反映一个事物与其他事物之间的相互依存性和关联性。如果两个或者多个事物之间存在一定的关联关系,那么,其中一个事物就能够通过其他事物预测到。 关联规则可以看作是一种IF-THEN关系。假设商品A被客户购买&…

【TB作品】基于单片机的机械通风控制系统,实时温度和二氧化碳浓度

硬件: (1)51系列单片机,拟采用STC89C52RC; (2)DS18B20温度传感器; (3)二氧化碳浓度传感器:https://item.taobao.com/item.htm?spma21n57.1.0.0.1…

Unity升级到2022版本后,打开Spine会卡住

1)Unity升级到2022版本后,打开Spine会卡住 2)iPhone在同时播放多个音效的时候会压低某些音源的音量 3)在Y77手机上出现IMGSRV:GetMainShaderConstantBufferBaseAddress: Unsupported 4)UE4打包后在部分安卓机型出现“花…

函数栈帧的创建和销毁(编程底层原理)

本篇的内容格外的难写,里面包含了许多的专业术语名和汇编指令等晦涩难懂的东西,既不利于讲解,也不利于读者的理解。但我会尽力去讲述出里面的底层逻辑,帮助大家去理解里面的过程,理解编程的底层原理可以为我们后续更为…

NLP项目实战02:英文文本识别

简介: 欢迎来到本篇文章!今天我们将讨论一个新的自然语言处理任务——英文短文识别。具体而言,即通过分析输入的英文文本来判断其是比较消极的还是比较积极的。 展示: 1、项目界面 如下所示是项目启动后用户使用使用界面 2、布…

Redis常用内存淘汰策略?

从淘汰范围来说可以分为不淘汰任何数据、只从设置了到期时间的键中淘汰和从所有键中淘汰三类。而从淘汰算法来分,又主要分为 random(随机),LRU(最近最少使用),以及 LFU(最近最不常使…

终端安全管理软件安装详细攻略来了

随着信息技术的不断发展,终端安全管理软件在企业和组织中发挥着越来越重要的作用。为了确保终端设备的安全和稳定运行,安装终端安全管理软件是必不可少的。以下是一份终端安全管理软件的安装详细攻略,供大家参考。 一、选择合适的软件 首先&…

有哪些好用的运维管理软件?哪个工单管理系统的操作简单一些?

运维管理软件可以帮助企业更有效地管理公司内外的事务,比如现在不少公司就引入了工单管理系统来处理后勤和售后的事务。那么,有哪些好用的运维管理软件?哪个的操作简单一些呢?   随着技术的发展和成熟,现在的工单管理…

如何禁止服务器自动休眠

如何禁止服务器自动休眠 有时候服务器自己休眠,导致系统web站点无法访问,下面是解决办法! 禁止服务器自动进入休眠状态的具体方法可能会因使用的Linux发行版而有所不同。以下是一些通用的方法,你可以根据你的系统选择适用的&#…