热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

自动化测试框架详解【2022】

测试技术的发展互联网发展风起云涌的几十年,背后是计算机技术的更新迭代,软件开发经历了c、php、java、python、go等语言百家争鸣࿰

测试技术的发展

互联网发展风起云涌的几十年,背后是计算机技术的更新迭代,软件开发经历了c、php、java、python、go等语言百家争鸣,在软件测试领域同样是长江后浪推前浪,白盒、自动化、持续集成等技术和理念不断推陈出新。

ibm的staf(Software Testing Automation Framework,软件测试自动化框架) 起源于2006年,在2010-2012年迎来全盛时期,之后计算机技术迎来快速发展,测试领域也诞生了更为高效的自动化测试方式。2016年 STAF停止维护,到今天几乎销声匿迹,基本退出了历史舞台。

随着计算机技术人员的大量增加,通过编写代码来进行测试成为一种更为高效的测试方式,由此而诞生了以计算机语言为基础的自动化测试方案,当然测试工程师需要具备代码能力。


如图,是近20年来编程语言的流行走势。

今天我们就结合当前的主流编程语言,分别讲述java和python语言环境下各自的自动化测试框架。

通用工具介绍

测试框架并不是一成不变的,事实上它就像搭积木一样,是由具有各种功能的工具组合而成,可以根据需求自由组合,下面介绍几个通过的基础工具。

jenkins(可以支持java、python等大多数语言的项目)

jenkins是一个基于java语言开发的,可以取代繁杂的手动集成,用于监控持续重复工作的持续集成工具,简单说就是一个可以设置定时任务,自动执行并报告结果的工具。

优点:解放双手,极大地提高了效率,jenkins通常用来自动化执行各种任务,包括构建、测试和部署软件。

学习资料:https://www.yiibai.com/jenkins

selinum

selenium是一个模拟人对web端页面操作的测试工具库。

selinum通常需要搭配chromedriver一起使用,chromedriver是Chrome浏览器驱动,是selenium 模块用来模拟打开谷歌浏览器所必须的一个文件。

优点:解放双手,Selenium+chromedriver能够驱动浏览器模拟人的操作,如鼠标单击、键盘输入等,同时也可以实现目标内容的获取和自动下载等。

学习资料:selenium库的基本使用 - 码农教程

appium

appium 是一个模拟人对移动端操作的测试工具库,appium是一个合成词,分别由“application”的前三个字母和“Selenium”的后三个字母组成,它的作用与selenium 其实一样的。

appium 类库封装了标准 Selenium 客户端类库。

优点:解放双手,可以实现多点触控手势和屏幕方向等操作。

学习资料:https://www.jianshu.com/p/3c5ee599a20d

java语言环境下的工具

maven

maven是一个java项目构建和管理的工具,最主要的功能在于可以方便的进行二进制库及依赖的管理

打个比方,有一个工人,去哪儿干活儿要随身携带所有的工具,说不定什么时候会用,后来,他有了一张神奇清单,上面写着他的工具名称,出去干活再也不用带沉甸甸的工具了,只要打开神奇清单,需要的工具自动就来了。

而maven对于程序员来说就是那张神奇清单,它会帮我们维护好编程所需的各种依赖。

优点:Maven 在美国是一个口语化的词语,代表专家、内行的意思,约等于北京话中的老炮儿。有老炮儿在手,干活儿不愁。

学习资料:Maven 教程 | 菜鸟教程

testng

testng是一个简化代码编写的一站式测试框架。

  1. 测试方法是带有注解@Test的java方法
  2. 将测试信息添加到testng.xml文件或者build.xml
  3. 可以在suite/test/test method三个级别来执行测试方法

优点:简化代码编写,提高测试效率。

学习资料:测试框架TestNG使用介绍_进行


OkHttp

OkHttp是一个当下比较流行的轻量级的网络请求框架,易用性,复用性都比较好。一般使用时,最好再对它进行再次封装,以符合具体场景的使用需求。

优点:拿来即用,不需关心底层实现,简单易上手。

学习资料:OkHttp简介 - 风一样的码农 - 博客园


最后根据实际场景组合所需的各个工具得到自动化测试框架:

  • java自动化接口测试:jenkins+maven+testng+okhttp
  • java自动化web测试:jenkins+maven+testng+selinum
  • java自动化app测试:jenkins+maven+testng+appium

Python语言环境下的工具

pytest

pytest是一个非常成熟的全功能的python测试框架。类似的工具还有python原生的unittest,但pytest完全兼容unitest,并且含有非常丰富的插件,能够支持简单的单元测试和复杂的功能测试和接口自动化测试。

优点:插件丰富,可以很好地和jenkins集成。

学习资料:超详细的 pytest 教程(一)使用入门篇 - 测试派

requests

requests是用于发送HTTP请求的第三方库。我们实现请求的时候并不需要实现底层的细节,只需要引入一个 requests 就可以了。类似的工具有很多,比如urllib、httplib等。

优点:requests使用简单、强大高效。

学习资料:requests库 · Python爬虫 · 看云

allure

allure是一款开源的,用来展示测试结果的工具。pytest可以生成html格式的报告,但是allure不仅可以与pytest做集成生成美观易读的测试报告,同时可以集成到jenkins,所以推荐使用。

优点:可以生成美观的报告,并集成到jenkins。

学习资料:allure测试报告_测试之道.的博客-CSDN博客_allure测试报告

pytest、requests、allure、jenkins等工具的关系如下图:


结合通用的工具,不同的自动化测试场景下对应的自动化测试框架如下

  • python自动化接口测试:jenkins+pytest+requests+allure
  • python自动化web测试:jenkins+pytest+selinum+allure
  • python自动化app测试:jenkins+pytest+appium+allure

自动化测试是测试工程师从初级到中高级的分界线,也是入职大厂的必备技能。

上文介绍了多个自动化测试框架,如果是初学者,你可能会头大:这么框架我一下子学不会啊~

别慌,其实目前业内真正广泛使用的是接口自动化测试,web及app自动化测试是作为辅助,如果是初学者,我们先花精力掌握接口自动化测试框架,后续再不断精进。


推荐阅读
  • Retrofit+Rxjava+OkHttp
    为什么80%的码农都做不了架构师?参考:http:duanyytop.github.io20160806Retrofit%E7%94%A8%E6% ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • Ubuntu 9.04中安装谷歌Chromium浏览器及使用体验[图文]
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 如何搭建Java开发环境并开发WinCE项目
    本文介绍了如何搭建Java开发环境并开发WinCE项目,包括搭建开发环境的步骤和获取SDK的几种方式。同时还解答了一些关于WinCE开发的常见问题。通过阅读本文,您将了解如何使用Java进行嵌入式开发,并能够顺利开发WinCE应用程序。 ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • JavaWeb中读取文件资源的路径问题及解决方法
    在JavaWeb开发中,读取文件资源的路径是一个常见的问题。本文介绍了使用绝对路径和相对路径两种方法来解决这个问题,并给出了相应的代码示例。同时,还讨论了使用绝对路径的优缺点,以及如何正确使用相对路径来读取文件。通过本文的学习,读者可以掌握在JavaWeb中正确找到和读取文件资源的方法。 ... [详细]
  • 本文介绍了使用Rust语言编写、保存和编译程序的简单步骤。首先,打开记事本文件并编写程序代码,然后将代码保存到一个以.rs为扩展名的文件中。接下来,使用rustc命令来编译运行程序。最后,通过命令行运行编译后的程序,得到输出结果。如果遇到编译错误,可以下载Build Tools for Visual Studio 2017来解决。 ... [详细]
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • yii2 绑定框架事件
    后端开发|php教程php,yii2后端开发-php教程我想要添加自定义代码处理yii2框架的Application::EVENT_BEFORE_REQUEST时触发的事件,但是不 ... [详细]
  • 注意:以下分析都是基于Retrofit2转载请注明出处:http:blog.csdn.netevan_manarticledetails51320637本节是《Retrofit的使 ... [详细]
  • 目前正在做毕业设计,一个关于校园服务的app,我会抽取已完成的相关代码写到文章里。一是为了造福这个曾经帮助过我的社区,二是写文章的同时更能巩固相关知识的记忆。一、前言在爬取教务系统 ... [详细]
  • 对okhttp网络请求的简单介绍publicclassAppextendsApplication{OkHttpClient实例是唯一的,所有的请求都会通过 ... [详细]
  • 使用正则表达式爬取36Kr网站首页新闻的操作步骤和代码示例
    本文介绍了使用正则表达式来爬取36Kr网站首页所有新闻的操作步骤和代码示例。通过访问网站、查找关键词、编写代码等步骤,可以获取到网站首页的新闻数据。代码示例使用Python编写,并使用正则表达式来提取所需的数据。详细的操作步骤和代码示例可以参考本文内容。 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
author-avatar
2414220942_d5ab70
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有