云测试是使用云端所找到的资源对基于云端的应用程序进行测试的一种方法。所谓的资源是指执行测试所必需的任何元素(硬件,软件和基础架构)。云测试提供了一种端到端的解决方案,可以改变测试的方式,并可以通过降低测试成本来提升其竞争力,而不会对关键任务生产应用程序造成负面影响。通过利用云计算解决方案进行测试,可以缩短配置时间,因为云可以根据需要配置测试服务器。这有助于确保未使用的服务器不会闲置。通常,超过80%的验证过程是重复的,测试人员在每个新构建中手动执行相同的测试步骤。
1 为什么选择Selenium?
Selenium的普及主要归结于其灵活性和内置工具提供的相对完善的服务。Selenium对于不同的服务器都有良好的兼容性,在编写文本脚本方面也有极大的灵活性。同时,对于不同的编程语言,包括C#, Java, Python, Ruby,提供强大的支持。即使是对这些语言仅有一些基础的认识,也足够使用Selenium进行操作。下面列出了Selenium的优势:
2 应用Selenium的自动化云测试
现在的软件应用程序大多是基于Web的,云基础设施越来越突出,它们大部分部署在云服务器上并行执行。
Selenium是毫无争议的用于测试项目最广泛的开源工具。Selenium和云平台结合可以很好地对web应用进行跨浏览器、跨平台测试。Selenium通过与web浏览器进行互动来测试行为、输入和预期输出来提高设备和平台的覆盖。
3 VOLANSYS云测试自动化框架
自动化框架是一种自动化策略,提供结构化的方式来完成兼具质量、数量和效率的工作。Selenium中内置有预定义的一些框架,包括Junit、TestNG、NUnit等。
VOLANSYS对不同的Selenium自动化框架进行了全面分析,发现没有任何一个有完全的优势。因此,Volansys开发了一个数据驱动的框架来为自动化云测试提供一个端到端的解决方案。
4 VOLANSYS Selenium数据驱动框架方法
VSDDF是一种对功能模块化和抽象层的实现。它是一个基于自动化框架的Excel。它有3个层次:
●外部层(测试用例层)
●应用功能层(其中包含了应用相关的功能)
●框架层(其中包含了核心框架功能)
在VSDDF中,所有的测试用例都处于外部层,从应用功能层调用函数,并会调用框架层的功能。这个框架是基于Excel的,所有的测试用例和测试数据会再一个单独的excel文件中,使得框架更易于管理。用户可以从Excel文件中选择他们想运行的测试用例,同时可以将他们的测试数据存放在这个Excel文件中。
在VSDDF中,我们将所有对象存储库都保留在配置文件中,这个配置文件可以在运行时读取,以便易于维护元素定位。同样,还存在一个配置文件来管理相关数据。
我们已经将持续集成工具Jenkins和代码控制管理库Git集成到VSDDF中。
5 自动化框架流图
6 VOLANSYS Selenium数据驱动框架特征
●搭配不同浏览器都可强力运行,例如Mozilla, Chrome还有Opera等
●VSDDF是基于maven的框架,所以不存在依赖管理问题
●可以通过Jenkins或者本地一键触发
●当Git管理的代码发生变化后,可以通过Jenkins自动触发
●VSDDF可以通过Test Rail提供的API将测试结果上传到Trst Rail
详细的报告包括应用程序日志、统计图表、平台详细信息、测试执行细节,例如通过次数、失败次数、总测试用例数、每个测试用例逐行测试步骤、失败情况的截图等。
7 VOLANSYS Selenium数据驱动框架优势
●由于脚本编写是通过Excel进行的,因此创建测试用例很简单。一旦了解定制方法以及如何从应用程序中追踪元素,手动测试人员也可以编写测试用例。
●手工测试用例和自动化测试用例可以维护在同一张表中。
●具有高效性和可拓展性
●通过减少人工工作降低成本
8 使用Selenium数据驱动框架的投资回报
9 实践中面临的挑战
由于Web应用前端使用的AngularJS,所以大多数情况下我们无法获取唯一的元素定位。
由于使用slick-grid(一个JS表格插件)进行延迟加载,所以从web表格中获取数据变得困难。
某些元素是在运行时使用动态定位值创建的,因此在运行时没有被识别。
数据导入相关的测试脚本会由于与窗口弹出的交互而失败。
因为开发人员以不允许选择的方式制作了单选按钮,造成无法正常选择单选按钮,从而导 致测试用例发生故障。
花费过多时间运行Selenium测试脚本
10 VOLANSYS解决问题的方法
●唯一定位的问题:在无法获取到唯一元素的地方使用JavaScript执行器。
●从slick-grid获取数据的问题:我们使用slick函数和java脚本从Web表中提取数据。
●动态元素:我们使用正则表达式和ancestor、sibling关系来识别这些元素
●数据导入失败:我们使用Auto IT / Robot类来处理弹出窗口
●单选按钮选择问题:我们与开发团队密切合作,识别单击单选按钮执行的操作,使用JavaScript调用该功能
●Selenium脚本的性能问题:对于这个问题,我们已经做了大量的研发,并在下面实现了
改进性能:
●执行测试脚本时仅检查一次数据依赖关系并解决数据依赖
●尽可能使用快速定位器
●根据业务功能将测试用例分组
●尽可能消除静态等待
●改变测试执行流程,缩短执行时间
11 结论
使用Selenium作为功能测试工具,大大减少了测试执行时间以及手动重复的工作。 同时,Selenium是一种开源自动化工具,降低了HP UFT(统一功能测试)等许可工具所产生的成本。