常见自动化测试工具及框架有哪些?怎么选?

news2024/11/24 4:44:15

目录

一、自动化测试简介

1、什么是自动化测试

2、它可以做自动化测试么

二、工具篇

1、UFT(QTP)

2、Selenium

3、Appium

4、工具对比

三、框架篇

1、TestNG

2、unittest

3、pytest

4、Robot Framework

5、框架对比

四、如何选择

总结


一、自动化测试简介

1、什么是自动化测试

        软件测试是软件产品开发过程中不可或缺的环节,众所周知,软件测试的分类方法非常多,根据不同的分类,测试可以分为很多种不同的测试方式。如果根据不同的测试点分类,可以将测试分类划分为功能测试、性能测试,这也是我们最常见的的软件测试范畴。而我们的自动化测试,一般意义上来说,是指对功能、性能进行脱离手工的自动化的测试。

        对于自动化测试,更广泛的意义,是对界面功能的自动化测试。因此,按照对软件测试的自动化程度,可以分为手工测试、自动化测试。再进一步细分,界面自动化测试,又可根据平台的不同,分为Web自动化测试、移动端自动化测试,而他们的测试工具及框架基本是大相径庭的。

        本文,我将依托Web UI自动化测试(网页界面功能自动化测试),简单谈谈我对几款常用的自动化工具及框架的看法。

2、它可以做自动化测试么

        关于自动化测试的适用性,一定要明确一点,那就是:不是所有的系统都适合做自动化测试!甚至有的系统根本无法做自动化测试。那么什么样的系统适合做自动化测试呢?总结几点重要因素,如下图所示。

python自动化测试视频教程:2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0

 

二、工具篇

1、UFT(QTP)

        UFT 就是以前最常用的自动化测试工具QTP,用来进行Web UI自动化测试的。QTP实现的是独占屏幕操作,仿真实际用户操作,一般用于回归测试和新版本测试。

        它的特点是:支持Windows平台,使用VBScript编写测试脚本,相比Java/C#这类语言,显然更受测试人员欢迎。

        它的测试流程是:【制定测试计划】-【创建测试脚本】-【增强测试脚本】-【运行测试】-【分析测试结果】。QTP的脚本生成是通过轨迹录制,再进行增强优化,最后实现回放。因此VBScript脚本的逻辑比较松散,因此对于复杂页面情况的处理能力比较弱,脚本维护的成本就非常高。最重要的是,QTP是收费的,QTP11.5版本发布改名为UFT。下图是UFT的工作台界面。

2、Selenium

        Selenium是目前最常用的一种Web自动化测试工具,是开源的,它可并行测试,模拟用户操作,贴近用户实际操作,测试效果直观。它的优势,首先,兼容性好,兼容多平台,多浏览器,多语言编写脚本,因此它从测试脚本开发,到部署运行,都比较稳定;其次,API丰富,可以实现对浏览器、页面元素、鼠标键盘、JS窗口等几乎所有的用户操作,执行效率较高。

        当前Selenium已发展到第3代,包含三大组件,Selenium IDE + WebDriver + Selenium Grid。

        Selenium IDE是Firefox中的一个组件,可以录制操作轨迹,自动生成脚本并进行回放,但它的缺点是不稳定,生成的代码效率低,定位大多采用自动的xpath方式定位,定位繁琐,回放成功率低,且不适用于复杂系统。

        Selenium Grid是用于实现分布式测试。

        WebDriver是Selenium核心组件,它就是实现页面操作的组件,利用浏览器原生的API,封装成一套更加面向对象的SeleniumWebDriverAPI,直接操作浏览器页面里的元素,执行效率更高,且稳定性依赖于浏览器厂商,显然更加稳定,因此各大常见浏览器都有对应的WebDriver,例如Chrome对应chromedriver,Firefox对应geckodriver,IE对应iedriver,甚至比较高版本的selenium还自带了部分常用浏览器的驱动,使用起来非常方便。它的优势显而易见,使用浏览器源厂的驱动来进行自动化控制,给我们带了更高的安全感。

3、Appium

        Appium是目前最常用的一款移动端自动化测试工具,是开源的,它支持Android和iOS平台的原生应用、web应用和Hybrid应用。它的优势,支持跨平台,多语言脚本编写。因此,兼容性很好,开发便捷。

        Appium是C/S架构,提供了基于Selenium WebDriver协议的统一接口。那么这里就需要说明一下Appium与Selenium的关系了。Appium封装了标准的Selenium客户端类库,Appium继承了Selenium中的WebDriver,因此也是通过WebDriver实现界面的定位及操作。而Appium实现的是PC端连接移动端的桥梁作用,这样才能通过PC端对移动端进行自动化测试。

4、工具对比

        由于Selenium和Appium都是使用的WebDriver实现操作的,因此这里只对比UFT和Selenium。下面这个表格,充分体现了两者之间的优势与劣势,测试人员可以根据需要选择合适的测试工具,以实现最高的测试效率。

     python自动化测试视频教程:2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75

 

三、框架篇

        时下比较主流的自动化测试框架,有TestNG、unittest、pytest、Robot Framework。第一个框架基于Java,后三者基于Python,Java和Python是编写自动化测试脚本最常用的两种语言。下面就简单介绍这四款框架。

1、TestNG

        Test NG是一款基于Java的自动化测试框架。说到TestNG就不得不提到JUnit,两者都是基于Java的测试框架,功能差异不大,但是TestNG底层调用的是JUnit,因此TestNG的使用对于测试人员来说更友好。而JUnit更偏向白盒测试,所以开发人员用来做单元测试比较多,而且测试结果可读性对测试人员也有一定难度。Test NG使用更便捷,例如并发测试JUnit需要调用第三方库,TestNG则不需要。一般TestNG主要测试人员使用。

        TestNG的主要特点有:(1)涵盖单元测试、功能测试、集成测试等;(2)基于Annotation(注解)机制,测试方法更灵活,当我们想执行一部分测试脚本的时候,就可以使用xml配置文件进行配置,在xml配置文件里,可以选择某些需要执行的测试脚本,排除不需要运行的测试脚本;(3)支持多线程测试,这一点很重要,可以大大提高执行效率。

        TestNG还可以自动生成html、xml格式的测试报告。测试报告位于 "test-output" 目录下,只需要执行测试用例时使用TestNG执行即可自动生成,无需配置,使用便捷。同时还可以对报告内容的详细程度进行设置,可以说是比较完善的测试报告了,测试报告的样式如下图所示,展示比较直观、简明,可以直接看到共执行了多少个用例,成功/失败分别是多少个,设置级别更高的报告,还可以查看具体的失败情况。

        TestNG的使用方法,是将测试用例生成测试套件,通过执行测试套件来执行测试用例,常用的组件如下图所示:

        @Test表示一个测试用例;

        @BeforeMethod/@AfterMethod表示在每一个方法执行前/后执行一次;

        @BeforeTest/@AfterMethos表示在每个测试用例执行前/后执行一次;

        例如,在使用TestNG框架时,就可以将“启动浏览器”的操作步骤封装在@BeforeTest中,“关闭浏览器进程”的操作封装在@AfterTest中,这样就提高了代码复用性。

2、unittest

        unittest是一款常用的单元测试框架。它更偏向底层,二次开发方便,因此对于测试人员来说,就具备一定的难度了。它的优势是Python自带框架,可生成HTML测试报告,使用的是HTMLTestRunnerNew库。由此,若基于Python开发的测试代码,就非常适合采用unittest测试框架。只需要使用自带的方法生成测试套件,执行测试套件,即可完成多种组合方式的测试。因此,针对Python的自动化测试,unittest可谓是最佳拍档,可以轻松完成大部分的测试功能。

        unittest也可以将浏览器启动、关闭等通用方法封装,生成测试用例,再将测试用例生成测试套件来执行,如下图所示。

        unittest也可以自动生成测试报告,报告形式如下图所示,报告的内容与TestNG生成的报告内容相似,展势执行用例的数量、结果等信息,也可以设置详细等级、标题等信息。

3、pytest

        pytest是基于unittest扩展的第三方测试框架,比unittest更简洁高效。 pytest可以执行unittest风格的测试用例,无须修改unittest用例的任何代码,有较好的兼容性。pytest插件丰富,比如returnfailures插件,可用于用例出错重跑;还有xdist插件,可用于设备并行执行测试用例。可使用pytest-HTML插件生成测试报告。pytest也可用来进行验收测试,适合复杂度不是很高的系统。

4、Robot Framework

        Robot Framework也是一款功能强大的自动化测试框架,基于Python的关键字驱动测试框架,自带报告生成,功能完善。因此它易用性更高,测试人员使用成本低,但灵活性就偏低了。一般多用于验收测试和验收测试驱动开发的自动化测试框架。支持跨平台(Windows/Linux/MacOS)。

        它的特点,关键字驱动测试(KDT),简化自动化过程,对测试人员来说更易读,测试数据语法也简单易用,扩展性高,例如支持Selenium第三方类库可进行Web UI自动化测试,支持Selenium Grid执行并发测试,并且可生成html测试报告但操作较麻烦。表格式的测试数据语法和关键词驱动测试使得易用性较高。

5、框架对比

        TestNG是基于Java的测试框架,unittest、pytest、Robot Framework是基于Python的测试框架。其实测试框架的选择,更主要还是根据系统的特性,选择适合的框架。

        对于unittest、pytest、Robot Framework这三个测试框架,都可支持跨平台,语言单一支持Python,差别并不大,主要如下表所示,而实际选用,可结合系统、框架的优势对号入座,以带来更高的自动化测试开发效率。

四、如何选择

        这篇文章对比了一些具有相似性的工具、框架,主要是为了大家在做自动化测试时,选择具体的工具、框架做准备。但这里并不存在绝对的优劣,主要还是取决于项目的测试需求及系统的特点。

        业内常传说,不会编程,有钱,就用UFT,会编程,没钱,就用Selenium,其实总结的很通俗了。UFT很强大,通过录制就能实现自动化测试,不需要会编程,你只需要有输入、输出值,就可以做自动化测试,听起来当然很好,但它的维护是需要费用的。而Selenium和Appium其实底层是一样的,API的使用也基本相同,只是针对Web和移动端APP做了不同程度的二次封装,但是Selenium和Appium的使用当然需要一定的代码基础,这样可以针对庞大的复杂系统,做PageObject页面封装设计的自动化测试,可以降低维护成本,但可以做到一定程度上的“一劳永逸“。

        而对于框架,其实原理是相同的,都是将测试用例封装成测试套件,通过设定用例的执行方式,来执行测试套件,实现一定程度的“封装“。除此之外,框架还有一些其他复苏功能,例如很实用的自动生成测试报告,不同的框架测试报告的风格也不同,这就根据自己的需求和喜好来选择就可以了。

        自动化测试的目的是为了一定程度上的解放人工测试,提高测试的效率,避免人工反复进行同样的操作测试。虽然如此,人工测试仍然是不可替代的重要的软件测试手段之一,不要盲目地进行自动化测试。因此,在选择自动化工具及框架时,一定要根据被测系统的特点,充分利用工具及框架的优势,这样才能真正达到节省人力、提高效率的目的。

总结

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片领取,千万不要错过哦。

2023最新合集Python自动化测试开发框架【全栈/实战/教程】合集精华,学完年薪40W+_哔哩哔哩_bilibiliicon-default.png?t=N3I4https://www.bilibili.com/video/BV1AF411T7qJ/?spm_id_from=333.999.0.0&vd_source=6e2d6c374fd551babe1ac6a5e60c5a75

 

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

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

相关文章

ES6知识点

目录 1、let、cons、var的区别 2、const对象的属性可以修改吗 3、如果new一个箭头函数会怎么样 4、箭头函数和普通函数的区别: 5、扩展运算符的作用及使用场景 1、let、cons、var的区别 1️⃣:块级作用域:块作用域由{}包括,le…

Flink 常用API(1)—— 源算子

目录 执行环境(Execution Environment) 创建执行环境 执行模式配置 触发程序执行 源算子(Source) 从集合中读取数据 从文件中读取数据 从Socket读取数据 从Kafka读取数据*** 自定义 Source(数据源&#xff0…

【结构与算法】—— 游戏概率常用算法整理 | 游戏中的常见概率设计分析

📢博客主页:肩匣与橘📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!📢本文由肩匣与橘编写,首发于CSDN🙉📢生活依旧是美好而又温柔的,你也是✨ …

Smartbi X 广州轻工集团,打造集团价值创造型总部

广州轻工工贸集团有限公司(简称“广州轻工集团”)是广州市第一家工贸合一的大型企业集团公司,最早起源于1950年9月成立的广州市合作事业管理局,逐渐演化形成广州市轻工业局。1995年10月,广州市轻工业局成建制改建为经济…

【C++】搜索二叉树

文章目录 📕 概念📕 搜索二叉树的实现框架插入节点查找节点★ 删除节点 ★ 📕 源代码 📕 概念 二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树: 若它的左子树不为空&…

5。STM32裸机开发(2)

嵌入式软件开发学习过程记录,本部分结合本人的学习经验撰写,系统描述各类基础例程的程序撰写逻辑。构建裸机开发的思维,为RTOS做铺垫(本部分基于库函数版实现),如有不足之处,敬请批评指正。 &a…

全景描绘云原生技术图谱,首个《云原生应用引擎技术发展白皮书》发布

5月12日,由神州数码主办、北京经开区国家信创园、中关村云计算产业联盟协办的2023通明湖论坛-云原生分论坛在京召开。论坛期间,神州数码联合北京通明湖信息技术应用创新中心、中国信通院和通明智云正式发布了《云原生应用引擎技术发展白皮书》&#xff0…

干货 | 心理学人电脑选购指南来了!

Hello,大家好! 这里是壹脑云科研圈,我是喵君姐姐~ 当我们在选择电脑时经常会无从下手,不知道该如何才能选择一款既能满足我们的科研需要又具有良好性价比的电脑。 本期我们邀请到了唐仙和梦马来为我们详细解答心理学…

我的Makefile模板

OBJxxxxCFLAGS -g -Wall${OBJ}:${OBJ}.o main.o%*.o:%*.c.PHONY:clean clean:${RM} *.o ${OBJ} core xxxx → xxxx.c xxxx.h main.c 比如: 包含了:

PhotoScan拼接无人机航拍RGB照片

目录 背景 拼接步骤 1.新建并保存项目 2.添加照片 3.对齐照片 4.添加标记(Markers) 5.添加地面控制点 6.建立批处理任务 7.使用批处理文件进行批处理 8.导出DEM 9.导出DOM 背景 本文介绍使用地面控制点(GCPs)拼接​​…

Java面试知识点(全)- Java面试基础部分一

Java基础 语法基础 面向对象 封装 利用抽象数据类型将数据和基于数据的操作封装在一起,使其构成一个不可分割的独立实体。数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,只保留一些对外接口使之与外部发生联系。用户无需知道对…

如何解决ChatGPT网络错误的问题,让AI对话更丝滑~

前言 在当今人工智能技术的飞速发展中,ChatGPT 作为一款大型语言模型备受瞩目。近期,其在各大社交媒体平台上的表现更是引来了一片关注之声。无论是与用户进行有趣的对话,还是帮助人们解决实际问题,ChatGPT 展现出了其强大的自然…

谷歌慌了!想发论文得审批,优先开发产品,让OpenAI没得看

来源 | 机器之心 ID | almosthuman2014 众所周知,谷歌就像人工智能领域的「黄埔军校」,自深度学习兴起后培养出了整整一代机器学习研究人员和工程师。很长一段时间里,谷歌就是领先 AI 技术的代名词。 人们已经习惯跟随谷歌的脚步&#xff0c…

操作符(算术操作符、移位操作符、位操作符、赋值操作符、单目操作符、关系操作符、逻辑操作符)

目录 算术操作符 移位操作符 移位规则 位操作符 交换两个整形变量的写法 赋值操作符 单目操作符 sizeof和数组的纠缠 和--运算符 多组输入的方案 关系操作符 逻辑操作符 算术操作符 -- 加法操作符():用于将两个值相加。 -- 减法操…

算法修炼之练气篇——练气八层

博主:命运之光 专栏:算法修炼之练气篇 前言:每天练习五道题,炼气篇大概会练习200道题左右,题目有C语言网上的题,也有洛谷上面的题,题目简单适合新手入门。(代码都是命运之光自己写的…

cv2BGR转化为RGB

import cv2 import matplotlib.pyplot as plt img cv2.imread(1.png,1)#1加载彩图 0加载灰度图 img2 cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#cv2读取是BGR 如果使用plt包要转换为RGB plt.subplot(1,2,1) plt.imshow(img2) plt.subplot(1,2,2) plt.imshow(img) plt.savefig(&qu…

【Java零基础入门篇】第 ⑥ 期 - 异常处理

博主:命运之光 专栏:Java零基础入门 学习目标 掌握异常的概念,Java中的常见异常类; 掌握Java中如何捕获和处理异常; 掌握自定义异常类及其使用; 目录 异常概述 异常体系 常见的异常 Java的异常处理机制…

【数学】通俗理解泰勒公式(牛顿迭代法有用到)

【数学】通俗理解泰勒公式(牛顿迭代法有用到) 文章目录 【数学】通俗理解泰勒公式(牛顿迭代法有用到)1. 介绍2. 通俗理解2.1 近似计算 3. 泰勒公式的推导4. 泰勒公式的定义5. 扩展 — 麦克劳林公式参考 1. 介绍 最近在看一些机器…

java异常的分类(常见的异常类型)

异常的分类 1. 编译时异常 在程序编译期间发生的异常,称为编译时异常,也称为受检查异常(Checked Exception) public class Person {int age;private String name;private String gender;// 想要让该类支持深拷贝,覆写Object类的clone方法即…

C语言—字符函数和字符串函数

字符函数和字符串函数 strlenstrcpystrcatstrcmpstrncpystrncatstrncmpstrstrstrtokstrerrorperror字符分类函数字符转换函数memcpymemmovememmcmpmemset C语言中对字符和字符串的处理很是频繁,但是C语言本身是没有字符串类型的,字符串通常放在 常量字符…