测试技术的发展
互联网发展风起云涌的几十年,背后是计算机技术的更新迭代,软件开发经历了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是一个简化代码编写的一站式测试框架。
- 测试方法是带有注解@Test的java方法
- 将测试信息添加到testng.xml文件或者build.xml
- 可以在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自动化测试是作为辅助,如果是初学者,我们先花精力掌握接口自动化测试框架,后续再不断精进。