在软件测试的过程中,多多少少都是会接触到一些测试工具,作为辅助测试用的,以提高测试工作的效率,使用好了测试工具,能对测试起到一个很好的作用,同时,有些公司,也会要求掌握一些测试工具,或者,是在面试时,也会被问到测试工具的,比如,在面试时,最常见的问题便是,你在测试时,用的是什么测试工具?或者,要做性能测试时,要用什么测试工具进行测试等等问题。
作为测试人员,了解下现在有哪些工具可以用,这些工具是运用在什么方面的,然后,选择几个较为主流的测试工具,深入研究,并且运用它们,对于提高测试技能,是很有必要的。
一、 测试管理工具
① Jira
Jira 是 Atlassian 公司开发的项目管理工具,常常用于缺陷管理。通过高度的自定义性,实现缺陷管理、任务管理、工数管理,进度管理,日程管理等整个项目的管理。可统一管理多个项目的进度和任务。此外,JIRA提供了插件支持测试用例的管理,并在此基础上实现需求、测试用例、缺陷的可追溯性。
官网地址:https://www.atlassian.com/software/jira
②禅道
禅道是国内第一款开源项目管理软件,其核心管理思想基于敏捷方法scrum,内置了产品管理和项目管理,同时又根据国内研发现状补充了测试管理、计划管理、发布管理、文档管理、事务管理等功能,在一个软件中就可以将软件研发中的需求、任务、bug、用例、计划、发布等要素有序的跟踪管理起来,覆盖了项目管理的核心流程。
官网地址:https://www.zentao.net/
③TestLink
TestLink是一个开源的用于项目管理、缺陷跟踪和测试用例管理的测试过程管理工具。TestLink遵循集中测试管理的理念,通过使用TestLink提供的功能,可以将测试过程从测试需求、测试设计、到测试执行完整的管理起来,同时,它还提供了好多种测试结果的统计和分析。
官网地址:https://www.testlink.org/
④TAPD
TAPD是腾讯敏捷协作平台,是一款由腾讯公司自主研发的协作及软件研发管理平台。TAPD 沉淀了腾讯十余年敏捷研发文化、研发模式和实践成果,能够帮助企业高效协作和提升研发效能。
官网地址:https://www.tapd.cn/
二、接口测试工具
Fiddler:HTTP协议调试代理工具,简单点就是抓http包的工具,支持web测试和手机测试。因为是基于HTTP协议,fiddler支持接口测试。
官网地址:https://www.telerik.com/fiddler
postman:Google工程师开发的一个浏览器插件,可以安装到chrome浏览器上,开发人员用的比较多,适合半手工和半自动化接口测试。
官网地址:https://www.postman.com/
SoupUI:基于Java开发,支持多个平台,有开源免费和企业版收费。支持接口自动化测试和接口性能测试,也支持和jenkins做持续集成测试。
官网地址:https://www.soapui.org/
python接口自动化测试:python有一个功能强大的第三方库requests,可以方便创建接口自动化用例。另外,python一般采用unittest、pytest作为单元测试框架。而且,可以和jenkins做持续集成测试。
Java接口自动化测试:为什么要用代码做接口自动化测试呢。因为,有些工具功能是有限制,很多公司,需要一些特定的功能,工具不支持,只好用代码进行开发。一般用Java做自动化测试,主要是利用httpclient.jar这个包,然后利用junit或者testng这样的单元测试工具,进行测试用例的开发,然后在jenkins上创建一个job,进行持续集成测试。
Jmeter:一般用JMeter做接口性能测试。例如java+Jmeter+ant+jenkins做接口性能巡检测试。官网地址:https://jmeter.apache.org/
三、自动化测试工具
① Robot Framework
如果要使用python自动化测试框架进行测试自动化,则Robot Framework是比较好的选择。Robot Framework是基于Python的,但是也可以使用 Jython(Java)或IronPython(.NET)语言进行脚本用例的编写。
Robot Framework使用关键字驱动的方法使测试用例易于创建。
Robot Framework还可以测试MongoDB、FTP、Android、Appium等。
它拥有非常多的测试库,包括Selenium WebDriver库和其他常用的的工具。
Robot Framework具有许多API,可帮助使其尽可能地扩展。
官网地址:https://robotframework.org/
② Cypress
Cypress是一个以开发人员为中心的测试自动化框架,该框架使TDD测试驱动开发对开发人员而言成为现实。它的设计原理是能够非常简单地将所有内容打包并捆绑在一起以进行整个端到端测试。Cypress的架构与Selenium不同。Selenium WebDriver在浏览器外部远程运行,而Cypress在其内部运行。这种方法有助于了解浏览器内部和外部发生的所有事情,以提供更一致的测试结果。
③ selenium
selenium是Web应用程序中最受欢迎的开源测试自动化框架之一。Selenium具有跨平台和跨浏览器功能,它还可以用作许多其他测试工具的基础。Selenium支持多种编程语言,例如Java、C#、PHP、Python、Ruby等。它拥有最大的在线社区之一,因此更加易于维护。Selenium可以通过广泛的库和API进行高度扩展,以满足每个团队的需求。Selenium是测试人员首选的测试框架,因为可以编写更高级的测试脚本来满足各种复杂程度。它提供了用于测试创作的回放工具,而无需学习特定的脚本语言。
④ Appium
Appium是一个开源的、跨平台的自动化测试工具,支持IOS、Android和FirefoxOS平台。通过Appium,开发者无需重新编译app或者做任何调整,就可以测试移动应用,可以使测试代码访问后端API和数据库。它是通过驱动苹果的UIAutomation和Android的UiAutomator框架来实现的双平台支持,同时绑定了Selenium WebDriver用于老的Android平台测试。开发者可以使用WebDriver兼容的任何语言编写测试脚本,如Java, OC, JS, PHP,Python, Ruby, C#,Clojure 和Perl语言。
⑤ Jmeter
JMeter是一款用于性能测试的自动化工具。它可以对Web应用程序、FTP服务器和数据库等进行测试,并提供了多种测试模式,如负载测试、持续集成测试和功能测试等。JMeter还可以模拟真实场景中的用户并发访问,从而可以为应用程序的性能评估提供准确的数据,java+Jmeter+ant+jenkins做接口自动化测试。
官网地址:https://jmeter.apache.org/
⑥Python接口自动化
python有一个功能强大的第三方库requests,可以方便创建接口自动化用例。另外,python一般采用unittest、pytest作为单元测试框架。而且,可以和jenkins做持续集成测试。
⑦Java接口自动化测试
为什么要用代码做接口自动化测试呢。因为,有些工具功能是有限制,很多公司,需要一些特定的功能,工具不支持,只好用代码进行开发。一般用Java做自动化测试,主要是利用httpclient.jar这个包,然后利用junit或者testng这样的单元测试工具,进行测试用例的开发,然后在jenkins上创建一个job,进行持续集成测试。
四、性能测试工具
① Jmeter
JMeter是一款用于性能测试的自动化工具。它可以对Web应用程序、FTP服务器和数据库等进行测试,并提供了多种测试模式,如负载测试、持续集成测试和功能测试等。JMeter还可以模拟真实场景中的用户并发访问,从而可以为应用程序的性能评估提供准确的数据。
② LoadRunner
LoadRunner是一款由美国赛门铁克(Micro Focus)公司开发的性能测试工具,用于测量一个系统或应用程序在各种负载条件下的性能表现,包括负载压力、响应时间、并发用户数和吞吐量等指标。它可以帮助测试人员模拟真实的用户行为,记录和分析系统的性能数据,找出性能瓶颈和问题,并提供丰富的图表和报告来展示测试结果和分析。
③ Locust
Locust是一个开源负载测试工具,可让您使用Python代码定义用户行为,并同时让数百万用户涌入您的系统。它是一个高度分布式和可扩展的性能测试工具,支持跨多台机器运行测试,让您轻松模拟大量用户。
此外,该工具经过实战考验,具有弹性,即使在交通高峰期也能轻松承受重载。它具有基本和直接的编码,而不涉及笨重的UI或丰富的XML。相反,您可以编写简单的Python代码。
④ ApacheBench(ab)
ApacheBench(ab)是一款针对HTTP协议做性能压测的命令行工具。ApacheBench具备如下特性:
具有较好的扩展性。
支持协议单一。对HTTP协议支持度较好,不支持主流的HTTPS、WebSocket等协议。
支持请求总数、并发数、压测时长控制。
作为一款命令行压测工具,上手较为简单。
单机压测工具,无分布式施压能力,无可视化界面。
不支持链路编排、场景管理等功能,无法做带业务含义的复杂压测。
单次压测,只能对单个域名或地址发起流量请求。
压测统计指标维度少,缺少压测过程中的统计数据,无法获取系统负载等指标。
⑤ wrk
wrk是一款针对HTTP协议的基准测试工具。wrk具备如下特性:
轻量级性能测试工具,安装简单。
学习成本低。
基于异步事件驱动框架,单机支持并发高。
单机压测工具,无分布式施压能力。
只支持HTTP协议。
无可视化界面,不支持流程编排、断言等能力,无法满足复杂压测需求。
五、安全测试工具
一、AWVS
Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。在漏洞扫描实战过程中,一般会首选AWVS,因为这个能扫描出来的漏洞很多,而且使用比较简单。点评:强大的漏洞扫描器,漏洞库大而全,可以说市面上最出色的漏洞扫描器。
官方网站:https://www.acunetix.com/
二、APPScan
IBM AppScan是一款非常好用且功能强大的Web 应用安全测试工具,曾以 Watchfire AppScan 的名称享誉业界,Rational AppScan 可自动化 Web 应用的安全漏洞评估工作,能扫描和检测所有常见的 Web 应用安全漏洞,例如 SQL 注入(SQL-injection)、跨站点脚本攻击(cross-site scripting)、缓冲区溢出(buffer overflow)及最新的 Flash/Flex 应用及 Web 2.0 应用曝露等方面安全漏洞的扫描。点评:AppScan 好处在于误报是最少的,相比AWVS扫描更慢,建议配合使用。
官方网站:https://www.hcltechsw.com/products/appscan
三、SQLmap
SQLmap是数据库的SQL注入接管工具。支持的数据库平台包括MySQL,SQLite,Sybase,DB2,Access,MSSQL,PostgreSQL。SQLmap是开源的,可以自动化利用数据库服务器和SQL注入漏洞的过程。优点:检测并映射漏洞。为所有注入方法提供支持:Union,Time,Stack,Error,Boolean。在命令行运行软件,可以下载Linux,Mac OS和Windows系统
官网地址:https://sqlmap.org/
四、Burp Suite
Burp Suite是一款信息安全从业人员必备的集 成型的渗透测试工具,它采用自动测试和半自动测试的方式,包含了 Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块;Proxy功能可以拦截HTTP/S的代理服务器(手机和web);Spide功能-智能感应的网络爬虫;Intruder功能可以对web应用程序进行自动化攻击等,非常适合做安全测试。通 过拦截HTTP/HTTPS的web数据包,充当浏览器和相关应用程序的中间人,进行拦截、修改、重放数据包进行测试,是web安全人员的一把必备的瑞士军刀。
官网:https://portswigger.net/burp/
六、接口mock工具
①EasyMock
EasyMock 是一套用于通过简单的方法对于给定的接口生成 Mock 对象的类库。它提供对接口的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令 Mock 对象返回指定的值或抛出指定异常。通过 EasyMock,我们可以方便的构造 Mock 对象从而使单元测试顺利进行。
②Mockito
Mockito 无需准备昂贵的前期启动。他们的目标是透明的,让开发人员专注于测试选定的行为。
Mockito 拥有的非常少的 API,所有开始使用 Mockito,几乎没有时间成本。因为只有一种创造 mock 的方式。只要记住,在执行前 stub,而后在交互中验证。你很快就会发现这样 TDD java 代码是多么自然。
③ Yapi
YApi是去哪儿网移动架构组开发的一个开源项目,YApi的 Mock 功能可以根据用户的输入接口信息如协议、URL、接口名、请求头、请求参数、返回数据、生成 Mock 接口,这些接口会自动生成模拟数据,创建者可以自由构造需要的数据。mock模拟数据基于mock.js。
Mock.js 是一款模拟数据生成器,旨在帮助前端独立于后端进行开发,帮助编写单元测试。提供了以下模拟功能:
根据数据模板生成模拟数据
模拟 Ajax 请求,生成并返回模拟数据
基于 HTML 模板生成模拟数据
④ Moco
Moco 是一个简单搭建 stub 的框架,主要用于测试和集成。
Moco本身支持API和独立运行两种方式。通过使用API,开发人员可以在JUnit、JBehave等测试测试框架里使用Moco,极大程度地降低了集成点测试的复杂度
Moco可以提供以下服务:
HTTP APIs
Socket APIs
REST API
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:【文末小卡片领取】
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!