工具篇
自动化测试:2018年某项研究表明:pc端常用自动化测试工具中,selenium占比39%,QTP/UFT占比23%。
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%。
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