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

news2024/11/15 20:46:53

导读

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

Part 01

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

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

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

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

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

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

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

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

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

Part 02

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

2.1 Python+Selenium

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

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

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

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

2.2 Postman

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

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

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

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

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

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分钟,加速了测试过程并极大地提升了测试效率,有力地保障产品质量及稳定性。

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

软件测试面试文档

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python接口自动化测试之token参数关联

前言 在做自动化接口测试时,有时候会遇到token的动态关联,例如查询余额接口,需要关联登录接口的token动态值,如何利用python脚本进行接口token关联呢?今天我们爱学习一下吧! 一:获取登录接口返回的token…

研发项目管理系统对比:找到最适合的高效工具

研发部门是企业非常重要的部门,代表着企业未来能否在市场上拥有优秀的技术,站稳市场份额。很多企业的研发方式往往是瀑布式的,所以项目的阶段规划,然后每个阶段的需求分配给开发人员,可以随时查看每个需求的开发进度和…

Redis学习5——有序集合Zset数据类型的操作

有序集合Zset 常用命令 数据结构 跳跃表 跳跃表

移远通信EM060K系列LTE-A Cat 6模组完成全球认证覆盖

近日,移远通信LTE-A Cat 6模组EM060K系列顺利完成全球认证覆盖,将以卓越的性能和品质助力海内外客户终端大规模部署,为其提供畅快的高速网络连接。同时,凭借着有竞争力的性能和成本优势,EM060K系列将加速释放海外固定无…

[架构之路-235]:目标系统 - 纵向分层 - 数据库 - 数据库系统基础与概述:数据库定义、核心概念、系统组成

目录 一、核心概念 1.1 什么是数据与信息 1.2 数据与数据库的关系 1.3 什么是数据库 1.4 数据库中的数据的特点 1.5 数据库与数据结构的关系 二、数据库系统 2.1 什么是数据库管理系统 2.2 什么是数据库系统 2.3 数据库相关的人员 2.4 数据库的主要功能 2.5 Excel表…

Vuex的基础使用存值及异步

目录 一、概述 ( 1 ) 讲述 ( 2 ) 概念 ( 3 ) 作用 二、取值 1. 安装 2. 菜单栏 3. 模块 4. 引用 三、改值 四、异步&后台请求 带来的获取 一、概述 ( 1 ) 讲述 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的…

【Linux初阶】多线程1 | 页表的索引作用,线程基础(优缺点、异常、用途),线程VS进程,线程控制,C++多线程引入

文章目录 ☀️一、深入理解页表☀️二、Linux线程概念🌻1.什么是线程(重点)⚡(1)线程的概念⚡(2)线程库初识 🌻2.线程的优点🌻3.线程的缺点🌻4.线程异常&…

为什么设置静态代理IP后无法正常上网,怎么解决?

静态代理IP是一个固定的IP地址,因为其出色的稳定性和安全性而得到广泛应用,常用于一些对网络质量要求高、需要长期稳定和持续可靠连接的业务。设置静态代理IP后无法上网是用户常见的网络问题,通常有多种原因: 1. 静态代理IP不可用…

【Flutter学习】AppBar

App Bar 可以视为页面的标题栏,在 Flutter 中用AppBar组件实现。 一个简单的AppBar实现代码如下: import package:flutter/material.dart;void main() {runApp(const AppBarTest()); }class AppBarTest extends StatelessWidget {const AppBarTest({Key…

【AGC】云托管新建站点时间过长的问题排查方法

【问题描述】 开发者按照指导文档使用云托管服务,已经申请了域名,在创建站点时页面显示证书配置最长需要12小时,然而,在等了两天后依然是激活中的状态,没有如期上线。 ​ 【解决方案】 卡在上线中的状态有以下几个原…

F. Vasilije Loves Number Theory

Problem - F - Codeforces 思路:分析一下题意,对于第一种操作来说,每次乘以x,那么nn*x,然后问是否存在一个a使得gcd(n,a)1并且n*a的约数个数等于n,有最大公约数等于1我们能够知道其实这两个数是互质的&…

圆满完成重保网络防护行动,持安科技获西南兵工致信感谢

近日,因积极协助西南兵工有限责任公司开展重保网络防护行动中,提供强大零信任网络安全产品和专业技术力量配合,持安科技收到了来自西南兵工有限责任公司的致信感谢。 持安为西南兵工提供的应用层零信任解决方案,是持安科充分吸取了…

Hibiki Run 市场火爆,“Listen to Earn”赛道的现象级应用?

在 9 月 18 日,以“Listen to Earn”为特点的 Web3 数字音乐类项目 Hibiki Run,在包括 DAOStarter、Spores Network、BitMart 在内的 三个平台,开启了实用通证 $HUT 的 IDO / IEO 活动。据悉,在本轮认购开启后的短时间内所有平台均…

Python 图形化界面基础篇:更改字体、颜色和样式

Python 图形化界面基础篇:更改字体、颜色和样式 引言 Tkinter 库简介步骤1:导入 Tkinter 模块步骤2:创建 Tkinter 窗口步骤3:创建文本标签步骤4:更改字体步骤5:更改颜色步骤6:更改样式 完整示例…

数字图像处理实验记录一(图像基本灰度变换)

文章目录 基础知识图像是什么样的?1,空间分辨率,灰度分辨率2,灰度图和彩色图的区别3,什么是灰度直方图? 实验要求1,按照灰度变换曲线对图像进行灰度变换2,读入一幅图像,分…

使用python查找指定文件夹下所有xml文件中带有指定字符的xml文件

文件夹目录如下(需要递归删除文件夹下的.DS_Store文件): labels文件夹下面是xml文件: import os import os.pathpath "name/labels" files os.listdir(path) # 得到文件夹下所有文件名称 s []for xmlFile in files:…

成为领导心腹:新入行的测试人员,如何快速提升自己的影响力?

作为一名新入行的测试人员,如何提高自己在工作中的影响力呢?可能有人会问了:“测试人员不是只要安分守己的做好自己的测试工作不就行了吗?又不是当管理者,为什么要提高影响力呢?”说实话,我刚入…

“比特币震荡中的秘密信号?技术分析揭示最近走势的关键!“

技术分析 比特币维持在 27,000 美元的支撑位,甚至在此价格水平上形成了新的更高低点。这标志着一个非常有利的发展,表明每小时和每日时间框架上的看涨趋势。 然而,当考虑每周和每月的观点时,我们仍然遇到阻力,这可以…

【开源系统开发框架】:一招高效实现办公流程化发展!

实现高效化办公是很多职场人的愿望。毕竟这能提高企业的办公效率,高效利用内部资源,创造顺畅无阻的流程化办公,因此也成为很多企业的追求。什么样的平台软件可以助力实现?低代码技术平台的优势多,轻量级、易操作、简单…

陀螺仪传感器解读-Gyro Acce,1

加速度计和陀螺仪的简介 https://www.cnblogs.com/zdxgloomy/articles/4171937.html 加速度计和陀螺仪的使用指南 ,代码部分 https://www.amobbs.com/forum.php?modviewthread&tid5510930&_dsign972b156c 模拟加速度计: 1. Accelerometer prinicple. 加…