自动化测试是什么
是把以人为驱动的测试行为转化为机器执行的一种过程。通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
自动化测试应用场景
软件测试自动化的研究领域主要集中在软件测试流程的自动化管理以及动态测试的自动化(如单元测试、功能测试以及性能方面)。在这两个领域,与手工测试相比,测试自动化的优势是明显的。首先自动化测试可以提高测试效率,使测试人员更加专注于新的测试模块的建立和开发,从而提高测试覆盖率;其次,自动化测试更便于测试资产的数字化管理,使得测试资产在整个测试生命周期内可以得到复用,这个特点在功能测试和回归测试中尤其具有意义;此外,测试流程自动化管理可以使机构的测试活动开展更加过程化,这很符合CMMI过程改进的思想。根据OppenheimerFunds的调查,在2001年前后的3年中,全球范围内由于采用了测试自动化手段所实现的投资回报率高达1500%。
一、熟练的编程能力
对于一个优秀的测试人员来讲,拥有熟练的编程能力是十分必要的,如果没有熟练的编程能力,就无法编写逻辑自动化测试脚本,大大降低了测试的效率。掌握编程方面的背景知识不仅可以简化自动化脚本,还可以改善与开发人员的沟通。不仅如此,一旦单元测试完成,还可以参与深入的功能测试。要具备这种技能,需要做到两个方面:
(1)学习好设计框架
需要对c#、Python、Java、Perl、SQL、XML以及HTML和CSS有全面的理解和编码技能。尽管如此,精通哪种语言取决于开发人员在项目中使用的编程语言
(2)能够熟练的创建测试脚本
在这个阶段,是否应该具有编程知识取决于所使用的自动化框架。如果项目正在使用SpecFlow或Cucumber进行测试自动化,那么可以用简单的英语编写脚本,而不必考虑后端逻辑或编码。只有对Selenium web驱动程序有足够的了解就足够了。但是,如果正在使用UFT或QTP,则应该对编程有全面的知识。
二、具备优秀的手动测试技能
要成为一名熟练的自动化测试人员,还需要具备敏锐的眼光和手动测试的经验。请记住以下几点
(1)眼睛有时比机器精确
当某样东西在测试时看起来有点不对劲时,人眼可以很容易地检测出来。使用自动化脚本很难检测到可视化问题。从用户的角度查看软件,可以帮助测试人员识别UI和可用性测试,以发现bug,这是在自动化脚本中难以编程的特性。
(2)人工测试也是必不可少的
自动化测试是一台机器,机器只做它被要求做的事。复杂的测试需要大量的准备和计划,也有一定的边界。然后脚本遵循协议并相应地测试应用程序,特别测试帮助测试人员回答诸如“当我遵循X而不是Y时会发生什么”之类的问题。它帮助测试人员使用最简单的方法进行思考和测试,而简单的方法很难在自动化脚本中编程。即使是可视化的跨浏览器测试也需要手工方法。而不是取决于一个自动化的脚本找到视觉差异,你可以手动检查的问题通过真正的浏览器和设备上的测试。
(3)自动化测试可能存在漏洞
自动化脚本就像另一段代码。无论多么优秀的程序员,错误总是存在的。在整个测试过程中进行手动操作,而不是完全依赖自动化,这将确保在执行脚本之后,测试结果不会出现问题。
三、需要掌握使用自动化工具的专业知识
在当前时代,行业要求速度和质量,客户都希望软件厂商能够在短时间内交付高质量的无bug应用程序。这就是自动化测试应用趋势上升的原因,每个厂商都希望自动化测试人员能够具备以下自动化工具的知识和经验。
(1) Selenium
Selenium 可能是网页应用中最流行的开源自动化测试框架,也是其他开源自动化测试工具比如 Katalon Studio,Watir,Protractor 和 Robot Framework 的核心框架。Selenium 支持多系统环境(Windows,Mac,Linux)以及多种浏览器(Chrome,FireFox,IE 以及无头浏览器(没有界面))。它的脚本可以由各种各样的编程语言编写,比如 Java,Groovy,Python,C#,PHP,Ruby 以及 Perl。
(2) 自动化测试平台-优测
优测是腾讯旗下的移动云测试平台,拥有50余名测试领域专家,300余人专业测试团队,10余年终端测试服务经验,提供兼容性测试、自动化测试、云真机,设备分享等多种服务方式,不仅支持标准能力输出,也可提供定制化测试解决方案,帮助企业打造完备的DevOps测试体系,以及具有互联网思维的质量团队。
(3)UFT
UFT(统一功能测试)是一个知名的功能测试方面的商用测试工具。它为 API,Web 服务,桌面 GUI 测试,网页,移动应用等多平台提供了全面的功能集。这个工具有先进的图像识别,重用测试组件和自动生成文档功能。
UFT 使用 VB 脚本来注册测试过程和对象控制。UFT 被集成到了 Mercury 商业流程测试和 Mercury 质量中心。这个工具也支持通过 CI 集成工具如 Jenkins 来支持 CI。
(4)Watir
Watir 是一个基于 Ruby 库的开源的网页自动化测试工具。Watir 支持跨浏览器测试,包括 Firefox,Opera,无头浏览器和 IE。它同样支持数据驱动测试和集成 BBD 工具,比如 RSpec,Cucumber 和 Test/Unit。
(5)Katalon Studio
Katalon Studio 是一个在网页应用、移动和网页服务方面功能强大的自动化测试解决方案。基于 Selenium 和 Appium 框架,Katalon Studio 集成了这些框架在软件自动化方面的优点。
这个工具支持不同层次的测试技能集。非程序员也可以快速上手一个自动化测试项目(如使用间谍对象记录测试脚本),同时也节省了程序员和高级测试人员构建新库和维护脚本的时间。
四、具备充分理解业务需求
一个熟练的自动化测试人员必须在测试阶段开始之前从前端和服务层的全面了解应用程序。他们必须知道:
(1)开发团队使用的编程语言;
(2)由终端用户运行应用程序的平台或设备需求;
(3)用于存储后端信息和用户数据的数据库;
(4)连接到系统的api或web服务及其使用方式;
(5)一旦应用程序启动,最终用户或涉众所期望的所有特性和功能;
(6)在测试阶段开始时是否执行了手工测试,如果有,如何执行?
(7)手动测试人员在测试应用程序时所花费的预期时间;
(8)在上一个版本中是否有任何重要的bug没有得到修复,以及它将如何影响业务;
(9)测试阶段需要完成的预期交付日期;
(10)浏览器差异
五、具备排除自动化工具故障的能力
流行的测试自动化工具非常大且复杂,在你的项目开始使用它们之前,它需要测试人员对工具本身有详细的技术知识。
在项目中,也可能会遇到这样的场景:
“脚本在测试结果中显示了一些错误,但是应用程序按照业务需求运行良好。脚本显示成功,但应用程序抛出了一些实时错误。”
这被称为假阴性和假阳性,通常发生在测试人员没有足够的知识来配置测试脚本的时候。他们只是继续使用模板,并期望测试能够成功运行。如果你想成为一个成功的自动化测试人员,你应该具备配置工具的详细知识,以及当出现诸如假阳性和假阴性之类的场景时,如何对它们进行故障排除。
六、具备使用测试管理工具的经验
自动化测试的主要目的是降低整个测试过程的复杂度。如果你是一个自动化测试人员,你应该具备一些测试管理工具的经验。因为它们是灵活的,允许用户记录任何错误,并根据错误如何影响项目根据优先级对它们进行排序。此外,它的可伸缩性允许团队成员之间轻松地交换信息。拥有一个测试管理工具将确保所有关于测试阶段的重要信息都是安全的,并且只允许你的团队和管理层访问。
七、了解不同的开发方法
团队不仅希望测试人员具备测试方面的知识。还需要了解不同的开发方法是如何工作的。如果项目遵循DevOps或敏捷,不要期望团队领导告诉你该做什么。及时交付工作,并为每天的会议做好准备,以防止涉众或经理对当前的工作阶段提出一些关键问题时出现任何尴尬的情况。了解开发方法也将帮助你的职业生涯能够走的更远。
总结:
这些技能将帮助测试人员在行业中获得非常高的价值。特别是对所有最新的自动化工具以及CI/CD工具(如Jenkins或GitLab)都有适当的了解,那么你不仅将成为团队中有价值的资源,而且还将成为行业中有价值的资源。
原创文章,作者:kepupublish,如若转载,请注明出处:https://blog.ytso.com/191223.html