原标题:什么样的项目适合做自动化?自动化测试人员应具备的能力?
1.关于什么样的项目适合做自动化测试
其实是没有一个统一标准的,因为自动化是相较于人工而言的,强调的也是长期获益的过程,但是我们可以大致通过以下几方面来判断当前的项目是否适合做自动化测试,如果项目情况和下面描述一致,那么引入自动化测试是没有问题的。
(1)项目维护周期长
如果维护周期太短,自动化框架有可能还没开发完,产品已经下线了。
(2)比较频繁的回归测试
如果选用手工测试,轮可能还没完,第二轮就开始了。
(3)产品比较稳定,不会频繁变动
如果产品不稳定,维护自动化用例成本太大,自动化测试投资回报率太低。
2.自动化测试人员应具备的7大技能
一、熟练的编程能力
对于一个优秀的测试人员来讲,拥有熟练的编程能力是十分必要的,如果没有熟练的编程能力,就无法编写逻辑自动化测试脚本,大大降低了测试的效率。掌握编程方面的背景知识不仅可以简化自动化脚本,还可以改善与开发人员的沟通。不仅如此,一旦单元测试完成,还可以参与深入的功能测试。要具备这种技能,需要做到两个方面:
(1)学好设计框架
需要对c#、python、java、perl、sql、xml以及html和css有全面的理解和编码技能。尽管如此,精通哪种语言取决于开发人员在项目中使用的编程语言
(2)能够熟练的创建测试脚本
在这个阶段,是否应该具有编程知识取决于所使用的自动化框架。如果项目正在使用specflow或cucumber进行测试自动化,那么可以用简单的英语编写脚本,而不必考虑后端逻辑或编码。只有对seleniumweb驱动程序有足够的了解就足够了。但是,如果正在使用uft或qtp,则应该对编程有全面的知识。
二、具备优秀的手动测试技能
要成为一名熟练的自动化测试人员,还需要具备敏锐的眼光和手动测试的经验。请记住以下几点
(1)眼睛有时比机器精确
当某样东西在测试时看起来有点不对劲时,人眼可以很容易地检测出来。使用自动化脚本很难检测到可视化问题。从用户的角度查看软件,可以帮助测试人员识别ui和可用性测试,以发现bug,这是在自动化脚本中难以编程的特性。
自动化测试是一台机器,机器只做它被要求做的事。复杂的测试需要大量的准备和计划,也有一定的边界。然后脚本遵循协议并相应地测试应用程序,特别测试帮助测试人员回答诸如“当我遵循x而不是y时会发生什么”之类的问题。它帮助测试人员使用最简单的方法进行思考和测试,而简单的方法很难在自动化脚本中编程。即使是可视化的跨浏览器测试也需要手工方法。而不是取决于一个自动化的脚本找到视觉差异,你可以手动检查的问题通过真正的浏览器和设备上的测试。
(3)自动化测试可能存在漏洞
自动化脚本就像另一段代码。无论多么优秀的程序员,错误总是存在的。在整个测试过程中进行手动操作,而不是完全依赖自动化,这将确保在执行脚本之后,测试结果不会出现问题。
在当前时代,行业要求速度和质量,客户都希望软件厂商能够在短时间内交付高质量的无bug应用程序。这就是自动化测试应用趋势上升的原因,每个厂商都希望自动化测试人员能够具备以下自动化工具的知识和经验。
1.selenium
selenium可能是网页应用中最流行的开源自动化测试框架,也是其他开源自动化测试工具比如katalonstudio,watir,protractor和robotframework的核心框架。selenium支持多系统环境(windows,mac,linux)以及多种浏览器(chrome,firefox,ie以及无头浏览器(没有界面))。它的脚本可以由各种各样的编程语言编写,比如java,groovy,python,c#,php,ruby以及perl。
2.katalonstudio
katalonstudio是一个在网页应用、移动和网页服务方面功能强大的自动化测试解决方案。基于selenium和appium框架,katalonstudio集成了这些框架在软件自动化方面的优点。
这个工具支持不同层次的测试技能集。非程序员也可以上手一个自动化测试项目(如使用间谍对象记录测试脚本),同时也节省了程序员和高级测试人员构建新库和维护脚本的时间。
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。
四、具备充分理解业务需求
一个熟练的自动化测试人员必须在测试阶段开始之前从前端和服务层的全面了解应用程序。他们必须知道:
(1)开发团队使用的编程语言;
(2)由终端用户运行应用程序的平台或设备需求;
(3)用于存储后端信息和用户数据的数据库;
(4)连接到系统的api或web服务及其使用方式;
(5)一旦应用程序启动,最终用户或涉众所期望的所有特性和功能;
(6)在测试阶段开始时是否执行了手工测试,如果有,如何执行?
(7)手动测试人员在测试应用程序时所花费的预期时间;
(8)在上一个版本中是否有任何重要的bug没有得到修复,以及它将如何影响业务;
(9)测试阶段需要完成的预期交付日期;
(10)浏览器差异
五、具备排除自动化工具故障的能力
流行的测试自动化工具非常大且复杂,在你的项目开始使用它们之前,它需要测试人员对工具本身有详细的技术知识。
在项目中,也可能会遇到这样的场景:
“脚本在测试结果中显示了一些错误,但是应用程序按照业务需求运行良好。脚本显示成功,但应用程序抛出了一些实时错误。”
这被称为假阴性和假阳性,通常发生在测试人员没有足够的知识来配置测试脚本的时候。他们只是继续使用模板,并期望测试能够成功运行。如果你想成为一个成功的自动化测试人员,你应该具备配置工具的详细知识,以及当出现诸如假阳性和假阴性之类的场景时,如何对它们进行故障排除。
六、具备使用测试管理工具的经验
自动化测试的主要目的是降低整个测试过程的复杂度。如果你是一个自动化测试人员,你应该具备一些测试管理工具的经验。因为它们是灵活的,允许用户记录任何错误,并根据错误如何影响项目根据优先级对它们进行排序。此外,它的可伸缩性允许团队成员之间轻松地交换信息。拥有一个测试管理工具将确保所有关于测试阶段的重要信息都是安全的,并且只允许你的团队和管理层访问。
七、了解不同的开发方法
团队不仅希望测试人员具备测试方面的知识。还需要了解不同的开发方法是如何工作的。如果项目遵循devops或敏捷,不要期望团队领导告诉你该做什么。及时交付工作,并为每天的会议做好准备,以防止涉众或对当前的工作阶段提出一些关键问题时出现任何尴尬的情况。了解开发方法也将帮助你的职业生涯能够走的更远。3.总结
最后,这些技能将帮助你在测试行业中获得非常高的价值。特别是如果你对所有最新的自动化工具以及ci/cd工具都有适当的了解,那么你不仅将成为团队中有价值的资源,而且还将成为行业中有价值的资源。上面讨论的自动化测试人员的技能将帮助你从初学者提升到领导或架构师级别的资源。所以,努力工作,对你的职业表现出奉献和激情,很快,你就会成为厉害的自动化测试员。