自动化测试 2019-11-05
良好的自动化测试套件可提供可行的反馈,有助于更快地修复错误,并能够快速交付软件。在云上良好的自动化测试套件可以使其更具成本效益。但是,通常情况下,在云上进行功能测试最终会延迟反馈,增加脆弱性并为故障提供零可见性-结果与最初的预期完全不符。最终阻碍了快速交付生命周期的步伐。
为了真正充分利用云上的功能测试,您必须重新考虑要遵循的测试实践。在这里,它们被整理成3部分(共12个步骤)的指南,以在云上进行更好的功能测试。其中大部分与您可以在设置、测试套件和解决方案提供商中进行的可行更改有关。
架构和系统设置会根据要优化的内容而变化。将针对速度,稳定性,成本等进行优化。这些并非互斥的。
稳定,经济高效的测试设置会让你:更快地运行测试,修复错误后重新运行测试,无论是单个测试(用于识别错误脚本)还是整个套件,轻松识别错误的提交。
可以按照以下方法优化设置哦,使其满足以上这些要求。
1.确定可接受的测试执行时间
这个想法是为了更快地获得高质量的构建,但这是一个平衡的举动:必须在相当短的时间内运行最佳数量的测试。举例为十分钟是公司对于用户的一般标准,但是它可能会因你的测试策略而异。
旨在在目标测试执行时间内完成所有自动化测试。这可以帮助您更好地计划并确定测试设置中的意外故障(或脆弱性)。
2.对每个请求请求进行测试(如果不是在每次提交后进行)
如果不需要永远运行测试,则可以自由地更频繁地运行它们。
云测试平台会根据并行化要求(即,同时运行多个测试的能力)而不是使用频率来向您收费。
要在生命周期的早期隔离错误,请在每次提交后运行测试。这可能会令人不知所措,因此一种替代方法是在每个拉取请求上运行测试。
目的是在整个发布周期中分散测试,并避免最终出现瓶颈。
3.配置CI以提高效率
将要根据团队的需求,测试频率,并行测试的项目以及打算运行的测试数量来重新考虑CI设置。大多数团队在CI中使用主从配置,以便主计算机处理调度作业,监视这些作业并报告结果。这是因为大量工作使CI机器繁忙而无响应,从而导致测试缓慢且不稳定。
最后,确保计算机可以并行处理测试所处理的请求。
注意:从地理上讲,如果您的云供应商的数据中心离您很近,则可以最大程度地减少CI机器和云测试平台之间的网络延迟。
第2部分:测试套件
在工作站/设备上快速运行的测试通常需要成倍的时间才能在云上运行。这是由于机器和测试平台之间的网络延迟,浏览器设置(或设备启动)时间,网页加载延迟等因素引起的。
尽管有这些因素,还是可以采取一些措施来大大加快测试速度。
4.保持测试简短
缩短测试时间不仅可以缩短执行时间,还可以减少测试的不稳定性(并且更易于迭代或稍后修复)。这是我们的建议:
避免测试(和重新测试)不需要测试(和重新测试)的元素。
谨慎使用Selenium请求。每个请求都会增加您的测试执行时间。(例如elementID,尝试使用显式等待,而不是使用if-else条件循环请求直到收到为止。
如果可以将测试用例拆分为多个较小的用例,请将其拆分。
5.拥抱并行化
与其将它们排成一行(依次)运行,不如将它们与并行化并行运行。
大多数现代的测试框架和云解决方案都支持这种现成的方式。例如,如果有一个测试脚本来测试20个无效输入,请将其拆分为20个较小的脚本,然后一次运行所有脚本。
6.优化以防止排队
大多数云测试平台都对其浏览器和设备设置了软限制,以满足高峰时间的需求,防止滥用并避免拒绝服务攻击。达到这些限制后,您的测试将在当前测试完成后排队等待运行。
为了避免达到这些软限制,请开始进行“混合”。
混合基本上是在浏览器之间分发测试-因此,可以并行运行更多测试,而不会达到任何一个浏览器的软限制。
因此,如果有100个要分别在Chrome,Firefox和IE上运行的测试,并且每种浏览器类型有80个测试的软限制,则将能够在浏览器上运行80个测试,其余20个将排队。
为了避免排队,您可以一次在Chrome和Firefox上运行前50个测试。完成后,请在Chrome和Firefox上运行其余的50个测试。
7.使用内置的调试选项
云供应商提供内置的调试帮助-例如每个请求(或每个失败)的屏幕快照,测试会话的视频记录,Selenium日志,网络日志等。您无需编写自己的代码和逻辑来获取屏幕快照并保存,就可以了。在本地使用这些功能。提示:在可能的情况下,将测试组织到构建和项目中,并适当地标记它们。如果测试套件失败,则可以更轻松地将错误隔离到构建中并更快地进行调试。
云使您可以访问比本地工作站更多的浏览器(类型和版本)。它具有即时可伸缩性,并且无需维护。但是,要获得具有成本效益的按需可伸缩性,就要权衡网络延迟。
为了对代码质量和功能充满信心,有多种方法可以在云上进行智能测试。这里有一些建议。
8.在正确的浏览器和设备上测试
开发人员为最新版本的Chrome编写代码并进行测试。现在,如果您的所有最终用户都使用最新版本的Chrome,就足够了。但是您必须跨浏览器和版本进行跨浏览器测试。
受到最终用户青睐的产品,
在给定时间在您的目标市场/国家中具有最高使用趋势的产品,
与转化渠道中的大量下降(付款或注册等)相关的信息,
在这些浏览器上优先进行测试,而不是在云平台上可用的每个浏览器上进行测试。
如果您的云供应商拥有足够的并行线程/并发插槽,则可以在其他浏览器和版本上进行测试,而不会超出目标测试的完成时间。
9.测试不同的屏幕尺寸
专为开发人员使用而开发的产品不应在开发人员喜欢的大型监视器上崩溃。
您的前端开发人员花费了大量时间使您的网站适应不同的分辨率。如果不在不同的屏幕尺寸上进行测试,那将是一种浪费。如果您希望用户在不同的屏幕尺寸和分辨率下查看您的应用程序,请确保测试您的响应式设计。
10.在正确的移动设备上测试
云平台将拥有大量可以测试的真实移动设备。这并不意味着您必须对它们的每一个进行测试。就像浏览器和版本一样,在给定的时间找到在目标市场中流行的移动设备。
11.在真实用户条件下运行测试
在移动设备上发生了很多渠道转换(例如注册)。对于电子商务,超过40%的购买是通过移动设备进行的。错误的移动应用程序可以而且将直接影响您的收入。在现实条件下测试移动应用。创建时区,IP地址和位置,网络速度等变量,以模拟目标受众所在的环境。
12.设置警报,监视和错误跟踪
您无需等待测试完成就可以运行,而是可以设置实时警报,以准确地通知您测试/构建失败的时间和地点。您可以使用CI机或云测试平台(或其REST API)中的webhook来执行此操作,以获取测试运行的状态并为您自己和您的团队设置通知。(为此,我们有一个Slack集成,还有更多工作正在进行中)。通过将云平台与错误归档工具集成,可以进一步简化工作流程。这些将在您的错误跟踪工具中自动创建任务-并用开发人员重新创建和修复所需的所有数据填充这些任务。而且,如果您的设置将错误跟踪回特定的提交,则您将知道将其分配给谁。
自动化的功能测试可能会很痛苦。在云上进行功能测试可能会很痛苦,但是会增加网络延迟。这篇文章列出了一些简单的优化方法,这些优化方法不仅可以更好地进行测试,而且可以充分利用云测试平台。
欢迎点赞关注,老子爱你们。