开源自动化测试框架介绍

news2024/12/29 12:56:56

开源自动化测试框架介绍

  • 一、Junit(白盒测试、API自动化、UI自动化)
    • 【官网】
    • 【简介】
    • 【使用场景】
  • 二、Selenium(Web自动化、爬虫)
    • 【官网】
    • 【简介】
    • 【使用场景】
  • 三、TestNG(白盒测试、API自动化、UI自动化)
    • 【官网】
    • 【简介】
    • TestNG 和 JUnit 还有两个比较明显的区别:
    • 【使用场景】
  • 四、Cucumber(API自动化、UI自动化)
    • 【官网】
    • 【简介】
    • 【使用场景】
  • 五、pytest(白盒测试、API自动化、UI自动化)
    • 【官网】
    • 【简介】
    • 【使用场景】
  • 六、Appium(移动端的UI自动化测试)
    • 【官网】
    • 【简介】
  • 七、ATX(移动端的UI自动化测试)
    • 【官网】
    • 【简介】
    • 【使用场景】
  • 总结
    • 1、Java的白盒测试、API自动化、UI自动化:
    • 2、python的白盒测试、API自动化、UI自动化:
    • 3、API自动化、UI自动化:
    • 4、移动端的UI自动化测试:
    • 5、UI自动化、爬虫:

框架在精而不在多,毕竟还是得以我们测试工程师平常用的最多的为基准。精通以下7个框架,应该能满足你工作中的基本需求了。

一、Junit(白盒测试、API自动化、UI自动化)

【官网】

https://junit.org/junit5/

【简介】

Junit是一个面向Java编程语言的单元测试框架。

单元测试:针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,对Java编程语言进行单元测试,说白了就是对Java的方法进行测试。

用 Junit 编写单元测试的好处有:

  • 非常简单地组织测试代码,并随时运行它们。
  • 可以自动生成测试报告,收集成功的测试用例和失败的测试用例,统计测试成功率和代码覆盖率。
  • 几乎所有的IDE工具都集成了Junit。
  • 任何Java开发者都应当学习并使用Junit编写单元测试;同时,Java 技术栈的测试或者测试开发工程师,也可以学习 Junit 来作为自动化测试底层框架。

Junit目前最新版本是5。

【使用场景】

  • 常用于单元测试(白盒测试)
  • 自动化测试的用例管理和用例执行框架(API自动化、UI自动化)。
    在这里插入图片描述
    在这里插入图片描述

二、Selenium(Web自动化、爬虫)

【官网】

https://www.selenium.dev/

【简介】

Selenium 是使用最为广泛的 Web 自动化测试(UI自动化)框架之一。

Selenium 可以完全模拟用户对主流浏览器进行操作,主要包括鼠标事件和键盘事件。

  • 鼠标事件:右击、双击、拖动、悬停。
  • 键盘事件:Keys()类提供了键盘上几乎所有按键的方法,可以模拟各种键盘输入。

Selenium 支持八种元素定位方式:

  • id定位: find_element_by_id()
  • name定位: find_element_by_name()
  • class定位:find_element_by_class_name()
  • tag定位:find_element_by_tag_name()
  • link定位:find_element_by_link_text()
  • partial_link定位:find_element_by_partial_link_text()
  • xpath定位:find_element_by_xpath()
  • CSS定位:find_element_by_css_selector()
  • 兼容性方面,Selenium 支持 Chrome、FireFox、Safari 等主流浏览器;

并且 Selenium 对 Java 和 Python 都提供了便捷的API调用。

【使用场景】

  • UI 自动化
  • 爬虫
    在这里插入图片描述

三、TestNG(白盒测试、API自动化、UI自动化)

【官网】

https://testng.org/doc/index.html

【简介】

TestNG 是 Java中一个很流行实用的单元测试框架。

它的灵感来源于 Junit ( java 的单元测试框架) 和 Nunit ( .net 的单元测试框架)。

但是它又在此基础上引入了新的东西,使得它更加强大。

关于注解特性方面,可以参考下表:
在这里插入图片描述

TestNG 和 JUnit 还有两个比较明显的区别:

  • 在Junit 4 中,如果我们需要在方法前面使用 @BeforeClass 和 @AfterClass ,那么该测试方法则必须是静态方法。TestNG 在方法定义部分则更加的灵活,它不需要类似的约束。
  • TestNG 中子类不会运行父类中的 @BeforeClass 和 @AfterClass, 而在Junit中会先运行父类的@BeforeClass,再运行自己的 @BeforeClass;而 @AfterClass 是先运行自己的,再运行父类的。
    经过一番对比之后,TestNG 在参数化测试、依赖测试以及套件测试(组)方面功能比 Junit 更加强大,并且包含了几乎 Junit 的所有功能,所以建议优先选择 TestNG。

【使用场景】

常用于单元测试(白盒测试)
自动化测试的用例管理和用例执行框架(API自动化、UI自动化)。

四、Cucumber(API自动化、UI自动化)

【官网】

https://cucumber.io/

【简介】

自动化测试用例越写越多,也越来越难维护。

开发看不懂测试写的代码,测试也看不懂测试写的代码,那是因为代码不讲人话。

如何才能做到面向“注释”编程?BDD给出了答案。

BDD:Behavior-Driven Development ,也就是行为驱动开发。

BDD使用的叫做Gherkin的语言,它的理念是使用自然语言来描述功能,而且强调的是使用例子来说明需求功能。是不是跟敏捷开发中的用户故事(User Story)很像?嗯,因为它们都是一个妈生的。

使用这种方法可以让非技术人员、客户可以参与到需求的确认与验收当中。

以下是用 Cucumber 写出的 BDD 风格的测试用例 Demo :

// Given 前置(预置)条件。(一般用于定义一个变量等)
@Given("today is Sunday")  
public void today_is_Sunday() {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}
 
// When 当xxx的时候(相当于 if )
@When("I ask whether it's Friday yet") 
public void i_ask_whether_it_s_Friday_yet() {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}
 
// Then 那么将要做xxx操作。
@Then("I should be told {string}")
public void i_should_be_told(String string) {
    // Write code here that turns the phrase above into concrete actions
    throw new io.cucumber.java.PendingException();
}

就像讲故事一样,来梳理代码逻辑。

【使用场景】

自动化测试用例管理和用例执行(API自动化、UI自动化)。
在这里插入图片描述

五、pytest(白盒测试、API自动化、UI自动化)

【官网】

https://docs.pytest.org/en/6.2.x/

【简介】

pytest 是 python 语言中一款强大的单元测试框架(也是最好用的单元测试框架,不服来战),用来管理和组织测试用例,可应用在单元测试、自动化测试工作中。

当然,如果你是个 pythoner 的话,你可能也多多少少听说过 unittest。

其实论用途而言,pytest 和 unittest 用途不多,都是优秀的单元测试框架。

但是 pytest 在 unittest 的基础上,丰富了不少功能,而且比 unittest 更简洁高效,pytest + allure 还可以输出更加美观的测试报告,pytest在数据驱动上的支持,也是略优于unittest。

所以还是可以优先选择 pytest。

【使用场景】

常用于单元测试(白盒测试)
自动化测试的用例管理和用例执行框架(API自动化、UI自动化)。
在这里插入图片描述

六、Appium(移动端的UI自动化测试)

【官网】

http://appium.io/

【简介】

在移动端的 UI自动化 测试领域,带头大哥当属 Appium。

Appium 是基于 Nodejs 的一款 UI自动化 测试框架。

支持多平台(Android、iOS等)

支持多语言(python、java、ruby、js、c#等)

Appium是跨平台的,可以用在OSX,Windows以及Linux桌面系统上运行。
在这里插入图片描述
之前曾看过一则新闻,Appium 已经进军 AI 测试(基于AI查找控件)的领域了,不愧是龙头大哥。

【使用场景】

移动端的UI自动化测试
一般会结合单元测试框架去开发UI自动化测试框架。

Java:TestNG + Appium + Jenkins

Python:Pytest + Appium + Allure + Jenkins
在这里插入图片描述

七、ATX(移动端的UI自动化测试)

【官网】

https://github.com/NetEaseGame/ATX

【简介】

ATX(AutomatorX) 是一款(网易)开源的自动化测试工具,支持测试iOS平台和Android平台的原生应用、游戏、Web应用。

使用Python来编写测试用例,混合使用图像识别,控件定位技术来完成游戏的自动化。

附加专用的IDE来完成脚本的快速编写。

ATX的生态圈:

[底层驱动]

  • 安卓(Android) https://github.com/openatx/uiautomator2 简称u2
  • 苹果(iOS) https://github.com/openatx/facebook-wda

[元素定位]

  • Weditor https://github.com/openatx/weditor

[设备管理]

  • atxserver2 https://github.com/openatx/atxserver2

[测试框架]

  • ATX-Test pengchenglin/ATX-Test

【使用场景】

移动端的UI自动化测试
一般会结合单元测试框架去开发UI自动化测试框架。

Python:Pytest + uiautomator2/wda + Allure + Jenkins

总结

1、Java的白盒测试、API自动化、UI自动化:

  • Junit(对Java的方法进行测试);
  • TestNG(相比Junit,参数化测试、依赖测试以及套件测试更好用,建议优先选这个);

2、python的白盒测试、API自动化、UI自动化:

  • pytest(功能更多,更简洁高效,优于unittest )。

3、API自动化、UI自动化:

  • Cucumber(面向“注释”编程)。

4、移动端的UI自动化测试:

  • Appium(基于 Nodejs,多平台多语2言,OSX、Win和Linux上也能用 )
  • ATX(只支持iOS、Android)

5、UI自动化、爬虫:

  • Selenium(兼容性好,Web自动化必选)。

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

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

相关文章

Linux文件系统架构和共享文件方法

我是荔园微风,作为一名在IT界整整25年的老兵,今天来聊聊 Linux文件系统架构和共享文件方法。 在Linux环境中使用文件和目录是工作中不可回避的环节。当然,在我的博客里成立windows程序员看linux这个专题,主要还是因为微软也发布了…

LwIP系列(4):ARP协详解

前言 对于应用程序而言,我们与其他设备、服务通信,主要通过域名、IP进行通信,而以太网底层驱动,最终是通过MAC地址来表示设备的唯一标识,即IP是逻辑地址,并不是物理地址。在上一篇文章中,我们也…

【ArcGIS Pro二次开发】(45):手搓一个工具执行进度框

我在之前做的工具中,UI这部分基本没怎么深入,都是直接用的现成的控件。 其中有一个问题比较突出,就是没有工具执行的进度框提示。曾经也用过系统自带的信息提示框和进度条,但太简陋,确实不好用。于是就想抄一个进度框…

Linux 读文件 - readahead预读算法

顺序读场景 intmain{charc[ 4096];intin -1;in open( "news.txt", O_RDONLY);intindex 0;while(read(in, &c, 4096) 4096){printf( "index: %d,len: %ld.\n",index, strlen(c));memset(c, 0, sizeof(c));index;} 数据结构 /** Track a single fi…

CentOS7 静默方式安装 Oracle19C

CentOS7 静默方式安装 Oracle19C 操作系统:CentOS7 Oracle: 19C 安装常用工具和依赖 yum -y install vim tar net-tools wget perl python3 readline* deltarpm python-deltarpm \zip unzip bc compat-libcap1* compat-libcap* binutils compat-libstdc…

最近的感悟与总结

目录 一、判别填鸭、与被填鸭的思考讲解人:听者: 二、最近感悟:三、再来三道数学题吧:四、总结 一、判别填鸭、与被填鸭的思考 讲解人: 1.是否在讲解过程中增加了知识认识的维度?(具体是什么,…

08_Linux按键输入

目录 Linux下按键驱动原理 修改设备树文件 添加KEY设备节点 按键驱动程序编写 编写测试APP 运行测试 Linux下按键驱动原理 按键驱动和LED驱动原理上来讲基本都是一样的,都是操作GPIO,只不过一个是读取GPIO 的高低电平,一个是从GPIO输出高低电平。实现按键输入,在驱动程序…

nginx的安装与自启动配置

1. nginx源码下载 nginx源码下载 2. nginx编译安装 2.1 解压安装包 tar -zxvf nginx-1.24.0.tar.gz2.2 编译安装 cd nginx-1.24.0 ./configure make make install执行./configure时可能出现如下的error,需要安装依赖库: 缺少pcre库 下载pcre安装包…

链码的安装、实例化、查询、调用

目录 1、首先保证网络已经处于启动状态 2、进入CLI容器 3、检查当前节点已经加入到哪些通道中(刚进来,默认是 peer0.example.com) 链码的安装 1、检查通道名称是否设置正确 2、使用install安装链码 3、实例化链码 4、查詢链码 发起交易 …

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二

English Learning - L3 作业打卡 Lesson7 Day52 2023.6.27 周二 引言🍉句1: And that is when it dawned on me that I didn’t have to be 5,5 ft. anymore.成分划分弱读连读爆破语调 🍉句2: I could be as tall as I wanted, or as short as I wanted …

【电子学会】2023年05月图形化三级 -- 躲避陨石

文章目录 躲避陨石1. 准备工作2. 功能实现3. 设计思路与实现(1)角色、舞台背景设置a. 角色设置b. 舞台背景设置 (2)脚本编写a. 角色:Rocketshipb. 角色:Ball 4. 评分标准5. 知识块 躲避陨石 飞船在陨石乱飞…

MySQL数据库第一课 ---------安装

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com 目录 虚拟环境虚拟环境 安装虚拟机 自主安装 简易安装 ———————————————————————————————————————— 虚拟环境虚拟环境 我们现在运行代码的环境是在 PyCharm…

大型语言模型作为属性化训练数据生成器

大型语言模型作为属性化训练数据生成器,提出一种使用多样化属性提示的数据生成方法,可以生成具有多样性和属性的训练数据,从而提高了模型的性能和数据生成的效率。 动机:大型语言模型(LLM)最近被用作各种自然语言处理(NLP)任务的…

从零开始——腾讯云服务器安装运行部署教程

一、腾讯云 1、购买腾讯云服务器 现在腾讯云服务器有优惠活动(大家可以在网上搜索各个服务器的优惠活动,有很多) 活动链接:上云精选_云服务器秒杀_开发者上云推荐-腾讯云 (tencent.com) 这里我选2G/2核/4M/50G轻量级服务器 这…

Linux基础服务6——Apache

文章目录 一、基本了解1.1 自带工具1.2 服务配置文件1.3 访问控制法则1.4 web相关的命令1.4.1 curl命令1.4.2 httpd命令 二、安装配置2.1 安装服务2.2 访问网页2.3 虚拟主机配置2.3.1 相同ip,不同端口2.3.2 相同端口,不同ip2.3.3 域名访问 三、https3.1 …

深度剖析 Linux 伙伴系统的设计与实现

目录 伙伴系统的核心数据结构 总结: 到底什么是伙伴 伙伴系统的内存分配原理 伙伴系统的内存回收原理 伙伴系统的实现 从 CPU 高速缓存列表中获取内存页 伙伴系统的核心数据结构 如上图所示,内核会为 NUMA 节点中的每个物理内存区域 zone 分配一个…

《计算机网络--自顶向下方法》第四章--网络层:数据平面

4.1网络层概述 每台路由器的数据平面的主要作用是从其输入链路向其输出链路转发数据报;控制平面的主要作用是协调这些本地路由器转发动作,使得数据报沿着源和目的地主机之间的路由器路径进行端到端传送 路由器具有截断的协议栈,即没有网络层…

[RISC-V]Milk-V开发板 i2c测试oled及波形输出

I2C3 引脚图 修改i2c3复用功能 build\boards\cv180x\cv1800b_sophpi_duo_sd\u-boot\cvi_board_init.c //I2C3 pin6 7 PINMUX_CONFIG(SD1_CMD, IIC3_SCL); PINMUX_CONFIG(SD1_CLK, IIC3_SDA);扫描I2C3上的设备 [rootcvitek]~# i2cdetect -y -r 3 0 1 2 3 4 5 6 7 8 9 a b c …

大数据Doris(五十四):BACKUP数据备份原理和语法

文章目录 BACKUP数据备份原理和语法 一、BACKUP数据备份原理 1、快照及快照上传 2、元数据准备及上传 二、BACKUP数据备份语法 BACKUP数据备份原理和语法 通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份,除了export方式之外,Doris 还…

高压线路零序电流方向保护程序逻辑原理(二)

二、零序电流方向保护的采样中断服务程序 零序电流方向保护与其他微机保护的采样中断服务程序相同,均有电压求和自检和电流求和自检及相电流差突变量起动元件DI1。零序电流方向保护的采样中断服务程序中最突出的问题是通过3U。突变量元件来实现闭锁保护&#xff0c…