技能一:掌握编程语言基础知识
编程语言对于自动化工作的开展非常重要,如果没有掌握编程语言的一些基本知识,你就无法编写自动化测试脚本,就不能顺利进行自动化测试。有一点编程方面的背景知识不仅可以简化这些自动化脚本,还可以帮助你改善与开发人员的沟通。不仅如此,一旦单元测试完成,你还可以参与深入的功能测试。想要具备这种技能,需要做到两个方面,(1)学习好设计框架
你需要对c#、Python、Java、Perl、SQL、XML以及HTML和CSS有全面的理解和编码技能。尽管如此,你应该精通哪种语言取决于开发人员在项目中使用的编程语言。例如,如果项目使用的是Ruby,那么你至少应该具备Ruby基础知识背后的基本知识。
(2)能够熟练的创建测试脚本
在这个阶段,你是否应该具有编程知识取决于所使用的自动化框架。如果你的组织正在使用SpecFlow或Cucumber进行测试自动化,那么可以用简单的英语编写脚本,而不必考虑后端逻辑或编码。只有对Selenium web驱动程序有足够的了解就足够了。但是,如果你正在使用UFT或QTP,你应该对编程有全面的知识。这里是一个用于跨浏览器测试的Selenium WebDriver教程。
技能二:具备优秀的手动测试技能
要成为一名熟练的自动化测试人员,您还需要有敏锐的眼光和手动测试的经验。记住以下几点:(1)人的视角才是最重要的
当某样东西在测试时看起来有点不对劲时,人眼可以很容易地检测出来。使用自动化脚本很难检测到可视化问题。从实时用户的角度查看软件,可以帮助测试人员识别UI和可用性测试,以发现bug,这是在自动化脚本中难以编程的特性。
(2)有些测试只能人工完成
自动化是一台机器,机器只做它被要求做的事。复杂的测试需要大量的准备和计划,也有一定的边界。然后脚本遵循协议并相应地测试应用程序,特别测试帮助测试人员回答诸如“当我遵循X而不是Y时会发生什么”之类的问题。它帮助测试人员使用开箱即用的方法进行思考和测试,而开箱即用的方法很难在自动化脚本中编程。即使是可视化的跨浏览器测试也需要手工方法。而不是取决于一个自动化的脚本找到视觉差异,你可以手动检查的问题通过真正的浏览器和设备上的测试。
(3)自动化测试可能存在漏洞
自动化脚本就像另一段代码。无论你是一个多么优秀的程序员,错误总是存在的。在整个测试过程中进行手动操作,而不是完全依赖自动化,这将确保在执行脚本之后,测试结果不会出现问题。
技能三:需要掌握使用自动化工具的专业知识
在当前Agile时代,行业要求速度和质量。全世界的客户都希望软件厂商能够在短时间内交付高质量的无bug应用程序。这就是为什么自动化测试的应用呈上升趋势,并且作为一个熟练的自动化测试人员,每个厂商都希望你具备以下自动化工具的知识和经验。Selenium
Selenium能够支持所有主流浏览器,在自动化测试领域,Selenium已经成为一个家喻户晓的名字。几乎所有主流浏览器都确保Selenium是其中的一个本机部分。随着WebDriver的引入,Selenium确保了基于浏览器的web应用程序自动化测试的完美执行。无论你是新手还是经验丰富的测试自动化工程师。你应该有硒方面的知识或工作经验。而且,它是开源的。
惠普——UFT
以前,HP将此工具称为QTP,它仍然是业界最好的工具,可以确保应用程序自动功能测试和回归测试的顺利执行。如果你是一个回归测试者,你应该有知识和经验,以及UFT认证。
SoapUI
测试web服务和API的完美工具。这个工具支持SOAP和REST服务,如果您的项目需要对API进行自动化测试,那么您至少应该了解这个用于功能测试的无头工具的开源版本。
RFT
Rational Functional Tester是IBM内部开发的自动化工具。无论您的应用程序使用什么技术,RFT都支持。Net、Java、SAP、Adobe Flex、Visual Basic和Dojo。如果您正在进行功能测试或回归测试,您会发现学习这个工具非常有用。
Appium
在当前的移动优先时代,许多组织都在开发复杂的移动应用程序。Appium是最好的开源软件,它使自动化测试成为任何混合或原生移动应用程序的现实。此外,它兼容所有操作系统,如Android、iOS或Windows,并且必须了解移动应用程序测试是否是您的领域。
Apache JMeter
最初,该工具用于测量应用程序的性能和负载测试。在当前版本中,此工具还用于API性能和服务测试。作为第三大最流行的自动化测试工具,您的组织将期望任何熟练的自动化测试人员都具有相关的知识和经验。即使你不会用,你也可以开始自学,因为这个工具是开源的。
技能四:具备充分理解业务需求的技能
一个熟练的自动化测试人员必须在测试阶段开始之前从前端和服务层的全面了解应用程序。他们必须知道:(1)开发团队使用的编程语言;
(2)由终端用户运行应用程序的平台或设备需求;
(3)用于存储后端信息和用户数据的数据库;
(4)连接到系统的api或web服务及其使用方式;
(5)一旦应用程序启动,最终用户或涉众所期望的所有特性和功能;
(6)在测试阶段开始时是否执行了手工测试,如果有,如何执行?
(7)手动测试人员在测试应用程序时所花费的预期时间;
(8)在上一个版本中是否有任何重要的bug没有得到修复,以及它将如何影响业务;
(9)测试阶段需要完成的预期交付日期;
(10)浏览器差异:
除了随着越来越多的开源浏览器的使用而增加的主流浏览器之外,一个熟练的自动化测试人员应该关注网站的浏览器兼容性测试。测试人员应该有足够的知识来创建浏览器兼容性矩阵,以及使用Selenium WebDriver进行自动跨浏览器测试,或者使用基于云的平台(比如LambdaTest)来确定他所工作的站点是否在所有目标浏览器上都能完美呈现。然而,上面提到的要点是最基本的,它们的复杂性取决于应用程序的性质以及开发方法。
技能五:具备排除自动化工具故障的技能
流行的测试自动化工具非常大且复杂,在你的项目开始使用它们之前,它需要测试人员对工具本身有详细的技术知识。在你的项目中,也可能会遇到这样的场景:“脚本在测试结果中显示了一些错误,但是应用程序按照业务需求运行良好。脚本显示成功,但应用程序抛出了一些实时错误。”这些在业界称为假阴性和假阳性,通常发生在测试人员没有足够的知识来配置测试脚本的时候。他们只是继续使用模板,并期望测试能够成功运行。如果你想成为一个成功的自动化测试人员,你应该具备配置工具的详细知识,以及当出现诸如假阳性和假阴性之类的场景时,如何对它们进行故障排除。特别是,如果你是测试负责人,你必须确保应用程序的体系结构与用于运行自动化测试的工具兼容。尝试使用与应用程序不兼容的工具将导致不成功的测试用例和无法预见的错误,这些错误可能很难排除。
技能六:具备使用测试管理工具的经验
自动化测试的主要目的是降低整个测试过程的复杂度。如果你是一个自动化测试人员,你应该具备一些测试管理工具的经验。因为,它们是灵活的,允许用户记录任何错误,并根据错误如何影响项目根据优先级对它们进行排序。此外,它的可伸缩性允许团队成员之间轻松地交换信息。如果你是一名测试人员,你可以在工具中报告你的活动,如果你是一名测试负责人,你可以实时报告你手下的资源以及他们正在做什么。这有助于分析当前项目中正在发生的事情,并加速整个活动,因为在跟踪资源时不会浪费时间。
最后但并非最不重要的是,你可以不担心安全问题。拥有一个测试管理工具将确保所有关于测试阶段的重要信息都是安全的,并且只允许你的团队和管理层访问。
技能七:了解不同的开发方法
记住,你的团队不仅希望你具备测试方面的知识。还需要了解不同的开发方法是如何工作的。如果你的项目遵循DevOps或敏捷,不要期望你的团队领导告诉你该做什么。及时交付你的工作,并为每天的scrum会议做好准备,以防止涉众或经理对你当前的工作阶段提出一些关键问题时出现任何尴尬的情况。了解开发方法也将帮助你的职业生涯能够走的更远。这些技能将帮助你在测试行业中获得非常高的价值。特别是如果你对所有最新的自动化工具以及CI/CD工具(如Jenkins或GitLab)都有适当的了解,那么你不仅将成为团队中有价值的资源,而且还将成为行业中有价值的资源。上面讨论的自动化测试人员的技能将帮助你从初学者提升到领导或架构师级别的资源。所以,努力工作,对你的职业表现出奉献和激情,很快,你就会成为厉害的自动化测试员。