自动化测试的调研-偏向B/S

工具篇

自动化测试:2018年某项研究表明:pc端常用自动化测试工具中,selenium占比39%,QTP/UFT占比23%。

2018年公司常用pc端自动化测试工具/框架-摘自51测试


1、Selenium

简介:

Selenium主要用于Web应用程序的自动化测试,并支持所有基于Web的管理任务自动化。

功能:web网页端脚本录制、功能测试

优点:

1、开源、免费

2、简单(API简单)、灵活(用开发语言驱动)

3、支持多种语言:pathon、java、.net

4、多种浏览器支持

5、多平台支持:Linux、Windows、MAC

6、支持分布式测试用例执行

7、支持移动测试

8、与Agile,DevOps,持续交付工作流程集成;

Ps:由于它可以在所有平台上移植,并且通常不需要学习新语言,因此Selenium可以提供无与伦比的灵活性

9、Selenium可以轻松集成各种开发平台,如Jenkins,Maven,TestNG,QMetry,SauceLabs等。

10、使用Selenium Grid进行并行测试可以让开发人员更快地收到反馈并立即处理更改,而不是等待一夜之间进行测试。

缺点:

1、仍然需要部分代码知识的能力,对于未接触过代码的测试人员而言,其学习可能比较困呐

2、没有内置的图像比较(可以通过集成sikuli解决)

3、没有报告功能,不支持测试结果通过图标、表格等显示显示

4、主要针对Web页面的录制和脚本编写,对于一些移动端的测试不是很友好

5、不支持文件上传功能

总结:selenium因其开源的特点,存在大量学习文档和学习者,且其功能基本能满足UI自动化和接口自动化,是测试人员选择自动化测试的不二之选。

2. QTP/UFT

简介:

QTP是QuickTest Professional的简称,是一种自动化软件测试工具。在软件的测试过程中,QTP主要来用来通过已有的测试脚本执行重复的手动测试,用于功能测试和回归测试。

功能:界面测试、api测试、业务流程测试、

优点:

1、支持B/S、C/S模式

2、图像识别

3、重用测试组件

4、自动生成文档

5、使用VB脚本注册测试过程和对象控制

6、支持通过CI集成工具,如jenkins

7、使用简单易用的图形化操作界面,初学者容易上手

8、功能强大,技术支持多

缺点:

1、商业、收费

2、运行UFT自动化脚本需要很纯净的测试环境,运行时关闭其他杀毒软件比如(360,瑞星,金山等)

3、UFT在系统上只支持windows系统

4、产生的脚本过大,如果分割Action的话占用的就更多,而且每个Action都需要独立的sheet所以会在维护、转移、版本控件方面存在巨大的困难,每次打开Action都需要打开UFT进行改动这也是增加了脚本的维护难度,每次批量运行需要调度Action的脚本

5、只支持VBS语言,缺乏更强大的和灵活的编码支持

6、UFT不能多个testcase同时运行,所以不能多线程运行

总结:UFT虽然功能强大,技术支持多,但是因为其是一个商业软件,价格昂贵,支持系统少等缺点,不推荐小公司使用。

3. Katalon Studio

简介:

Katalon Studio是一款功能强大的Web应用程序,移动和Web服务测试自动化解决方案。 Katalon Studio建立在Selenium和Appium框架的基础之上,利用这些解决方案实现集成软件自动化。

功能:录制脚本、可视化脚本编写

优点:

1、支持不同级别的测试技能集(小白测试和高级自动化测试都可以使用)

2、可以集成到CI / CD流程中

3、可以集成qTest,JIRA,Jenkins和Git

4、可以通过度量,图表和图表的仪表板为用户提供测试执行报告的全面视图

5、免费

6、支持多系统

7、录制的脚本可读性好

8、安装环境简单

缺点:

1、因为2015年刚推出,因此国内使用用户少,相关的使用文档少,但是官方文档相对详细

2、不支持中文

3、可视化的工作方式导致灵活性欠佳,不如seleium和Appium灵活

总结:Katalon Studio是一款功能强大的工具,但是因为推出时间不长,中文使用者较少,因此推荐外企尝试该测试软件。

性能测试:2018年某项研究表明:常用的性能测试工具中,jmeter占比51%,LoadRunner占比42%。

2018年公司常用的性能测试工具/框架统计-摘自51测试

5. Jmeter

简介:基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。

功能:通过中间代理将指令发送到服务器,并通过监控服务器获得反馈结果

优点:

1、不依赖界面

2、编写脚本不需要编程,只需要熟悉http请求,熟悉业务流程

3、测试脚本维护方便,可以将测试脚本复制,并且可以将某一部分单独保存

4、可以跳过页面限制,向后台程序添加非法数据,这样可以测试后台程序的健壮性。

5、利用badboy录制测试脚本,可以快速的形成测试脚本

6、使用参数化以及Jmeter提供的函数功能,可以快速完成测试数据的添加修改等

7、功能测试和性能测试均可完成

8、开源

缺点:

1、使用Jmeter无法验证JS程序,也无法验证页面,所以需要手工去验证

2、Jmeter的断言功能不是很强大

3、就算是jmeter脚本顺利执行,依旧无法确定程序是否正确执行,有时候需要进入程序查看,或者查看Jmeter的响应数据。

4、Jmeter脚本的维护需要保存为本地文件,而每个脚本文件只能保存一个测试用例,不利于脚本的维护。

5、Jmeter的测试脚本的管理不可以纳入版本控制

6、内置报表比较少,但是可以集成ant工具

总结:Jemeter是一款可以同时进行性能测试和自动化测试的强大工具,且国内资料较多,操作方便,可集成插件多,十分适合进行性能测试。

5. LoadRunner

简介:LoadRunner是一种具备高规模适应性的、自动负载测试工具,它能测试系统行为,优化系统性能。

功能:通过中间代理将指令发送到服务器,并通过监控服务器获得反馈结果

优点:

1、LoadRunner controller运行稳定

2、支持多个load generator一起施加压力

3、监控指标相对齐全

4、性能测试结果颗粒细致

5、预留有性能结果

6、报表强大

7、商业软件,有技术支持

缺点:

1、非开源软件,但是可以破解

2、支持底层协议差

3、错误提示方面不够细

4、安装麻烦

5、对比jemeter,不能进行功能测试

总结:LoadRunner作为一款性能测试工具,相比jmeter更专业,但是因为其是商业软件,受欢迎程度不及jemter,但是对于专业的性能测试,推荐使用LoadRunner。

自动化测试框架

1.robot framework

语言:python、java、.net

功能:接口自动化、UI自动化

优点:

1、关键字驱动,测试用例的可读性强

2、关键字驱动,易于创建,易于上手

3、开源

4、API众多,可以支持扩展

5、对于测试人员而言,减少了代码编辑量

6、偏向于接口自动化

7、提供很多测试库和可使用的工具

8、结果报告和日志采用html格式,易于阅读

缺点:

1、对于开发人员而言,语言不是自己熟悉的java,如果帮助测试人员进行自动化测试,可能对自己的java语言提升不高

2、Robot Framework作为一款关键字驱动的自动化测试框架,对于代码的要求不高,对于开发人员而言,这种通过关键字驱动的操作存在大量重复性工作,对自己本身的能力提高不明显

3、安装较复杂

4、自定义HTML报告较为麻烦

总结:如果是针对大范围的库和扩展的KDT自动化测试,建议使用此跨平台框架。如果想要添加新的关键字(通过 RF 测试库 API ),需要具备 Java / Python / C 语言的基础知识。


2. serenity

语言:java

功能:接口自动化

优点:

1、能够很好的生成测试报告

2、可以和jira集成

3、在selenium和BDD框架上重新包装了一层,使测试更简单

缺点:

1、国内不常见,估计学习资源不好找

总结:该框架在国内并不普及,资源不好找,因此不推荐使用


3.Xunit(JUnit、NUnit、PUnit)

语言:java、python等

功能:单元测试、接口自动化

优点:

1、无需安装

2、开源

3、适合单元测试

4、可以使测试代码与产品代码分开

5、易于集成到测试人员的构建过程中,JUnit和Ant的结合可以实施增量开发

缺点:

1、要求会对应的语言,java、.net或者C++

2、仅支持同步的测试

总结:XUnit主要针对单元测试,不推荐使用该框架进行自动化测试。


4. testNG

测试工具:

语言:java

功能:单元测试、功能测试、端到端、集成测试

优点:

1、开源

2、容易整合到maven循环中

3、使开发人员能够编写灵活而强大的测试

4、支持数据驱动测试(DDT)

5、支持多线程测试、并行测试、组测试、负载测试

6、支持测试集成类

7、注释很容易理解

缺点:

1、只支持Java,至少需要具备 Java 编程语言的基础知识。

2、必须投入时间进行框架设置和设计

总结:如果你使用Java,并正寻找端到端的自动化测试框架,同时愿意投入一点时间去设置框架,你应该考虑使用 TestNG 。

5. Testcafe

语言:JavaScript,TypeScript

功能:UI自动化

描述:是Node.JS编写的Web端UI自动化测试框架。

优点:

1、开源

2、官方提供的资料充足

3、支持所有能支持JS的浏览器

4、简单易学

5、安装简单

缺点:

1、国内学习者不多,国内资料较少

总结:Testcafe从收费到开源不久,学习人员不多,国内关于它的资料很少,因此当前不推荐使用,但是等它普及开来,可以尝试学习并应用。


6. Appium

语言:java、python、ruby等语言

功能:移动端UI自动化、移动端接口自动化

描述:

优点:

1、跨平台,支持android和ios

2、支持原生、混合、移动端web测试

3、新手容易上手

4、功能强大

5、不需要重新编译APP,可以进行自动化测试

6、社区活跃,参考资料较多

7、支持webView

缺点:

1、需要掌握一门语言,例如:java

2、文本框输入速度慢,且不支持中文输入

总结:Appium作为一款移动端的自动化框架,其功能强大,且社区活跃,进行移动端自动化测试是非常合适的。


推荐组合:

1、接口自动化框架:

① java+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine

② python+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine

③ python+robot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine

④ jmeter+Maven/Ant+Jenkins+MySQL+testlink/redmine

2、UI自动化测试框架

① java+selenium/appium+testNG/Junit+Maven/Ant/Gradle+Jenkins+MySQL+testlink/redmine

② python+selenium/appium+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine

③ python+robot framework+unittest/pytest+Git+Jenkins+MySQL+testlink/redmine