良好的自动化测试套件可提供可行的反馈,有助于更快地修复错误,并能够快速交付软件。在云上良好的自动化测试套件可以使其更具成本效益。但是,通常情况下,在云上进行功能测试最终会延迟反馈,增加脆弱性并为故障提供零可见性-结果与最初的预期完全不符。最终阻碍了快速交付生命周期的步伐。

为了真正充分利用云上的功能测试,您必须重新考虑要遵循的测试实践。在这里,它们被整理成3部分(共12个步骤)的指南,以在云上进行更好的功能测试。其中大部分与您可以在设置、测试套件和解决方案提供商中进行的可行更改有关。

第1部分:设置

架构和系统设置会根据要优化的内容而变化。将针对速度,稳定性,成本等进行优化。这些并非互斥的。

稳定,经济高效的测试设置会让你:更快地运行测试,修复错误后重新运行测试,无论是单个测试(用于识别错误脚本)还是整个套件,轻松识别错误的提交。

可以按照以下方法优化设置哦,使其满足以上这些要求。

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日志,网络日志等。您无需编写自己的代码和逻辑来获取屏幕快照并保存,就可以了。在本地使用这些功能。提示:在可能的情况下,将测试组织到构建和项目中,并适当地标记它们。如果测试套件失败,则可以更轻松地将错误隔离到构建中并更快地进行调试。

第3部分:(云)解决方案提供商

云使您可以访问比本地工作站更多的浏览器(类型和版本)。它具有即时可伸缩性,并且无需维护。但是,要获得具有成本效益的按需可伸缩性,就要权衡网络延迟。

为了对代码质量和功能充满信心,有多种方法可以在云上进行智能测试。这里有一些建议。

8.在正确的浏览器和设备上测试

开发人员为最新版本的Chrome编写代码并进行测试。现在,如果您的所有最终用户都使用最新版本的Chrome,就足够了。但是您必须跨浏览器和版本进行跨浏览器测试。

受到最终用户青睐的产品,

在给定时间在您的目标市场/国家中具有最高使用趋势的产品,

与转化渠道中的大量下降(付款或注册等)相关的信息,

在这些浏览器上优先进行测试,而不是在云平台上可用的每个浏览器上进行测试。

如果您的云供应商拥有足够的并行线程/并发插槽,则可以在其他浏览器和版本上进行测试,而不会超出目标测试的完成时间。

9.测试不同的屏幕尺寸

专为开发人员使用而开发的产品不应在开发人员喜欢的大型监视器上崩溃。

您的前端开发人员花费了大量时间使您的网站适应不同的分辨率。如果不在不同的屏幕尺寸上进行测试,那将是一种浪费。如果您希望用户在不同的屏幕尺寸和分辨率下查看您的应用程序,请确保测试您的响应式设计。

10.在正确的移动设备上测试

云平台将拥有大量可以测试的真实移动设备。这并不意味着您必须对它们的每一个进行测试。就像浏览器和版本一样,在给定的时间找到在目标市场中流行的移动设备。

11.在真实用户条件下运行测试

在移动设备上发生了很多渠道转换(例如注册)。对于电子商务,超过40%的购买是通过移动设备进行的。错误的移动应用程序可以而且将直接影响您的收入。在现实条件下测试移动应用。创建时区,IP地址和位置,网络速度等变量,以模拟目标受众所在的环境。

12.设置警报,监视和错误跟踪

您无需等待测试完成就可以运行,而是可以设置实时警报,以准确地通知您测试/构建失败的时间和地点。您可以使用CI机或云测试平台(或其REST API)中的webhook来执行此操作,以获取测试运行的状态并为您自己和您的团队设置通知。(为此,我们有一个Slack集成,还有更多工作正在进行中)。通过将云平台与错误归档工具集成,可以进一步简化工作流程。这些将在您的错误跟踪工具中自动创建任务-并用开发人员重新创建和修复所需的所有数据填充这些任务。而且,如果您的设置将错误跟踪回特定的提交,则您将知道将其分配给谁。

尾注

自动化的功能测试可能会很痛苦。在云上进行功能测试可能会很痛苦,但是会增加网络延迟。这篇文章列出了一些简单的优化方法,这些优化方法不仅可以更好地进行测试,而且可以充分利用云测试平台。

欢迎点赞关注,老子爱你们。

功能测试常用6种方法_云端功能测试:更好的12种方法相关推荐

  1. dwr框架查看外放方法_硬核!教你三种方法,实现微信自定义修改地区!

    前几天,有小伙伴问怎样自定义修改微信地区?当时说的第二天分享,结果在录制第二种方法的时候,突发意外,出现"微信以停止运行"的状况,明明早上还好好的,怎么就打不开了呢?也木有做任何操 ...

  2. c++ 23种设计模式_使用Go实现GoF的23种设计模式(三)

    前言 上一篇文章<使用Go实现GoF的23种设计模式(二)>中,我们介绍了结构型模式(Structural Pattern)中的组合模式.适配器模式和桥接模式.本文将会介绍完剩下的几种结构 ...

  3. python实现单例模式的几种方式_基于Python中单例模式的几种实现方式及优化详解...

    单例模式 单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. ...

  4. python3中format方法_[翻译]python3中新的字符串格式化方法-----f-string

    从python3.6开始,引入了新的字符串格式化方式,f-字符串. 这使得格式化字符串变得可读性更高,更简洁,更不容易出现错误而且速度也更快. 在本文后面,会详细介绍f-字符串的用法. 在此之前,让我 ...

  5. python字典内置方法_柳小白Python学习笔记 12 内置方法之字典方法

    学习字典的时候只学习了最基本的字典定义和创建方式.今天再学习两种字典的创建方法及字典内置方法的使用. 现在春暖花开,所以我用花的元素创建了garden(花园)系列字典,字典的键是flowers(花名) ...

  6. python列出所有方法_如何在python中列出所有Faker方法

    如何以编程方式列出Faker生成器对象中的所有可用方法? Faker文档显示了如何创建faker生成器并生成数据: from faker import Faker fake = Faker() fak ...

  7. 台式计算机无法开机原因,台式电脑无法启动的原因和解决方法_电脑不能启动的原因与解决方法...

    电脑开不了机是一件很让人头疼的事情,相信许多人都遇到过这样的情况,而很多朋友却不知道如何解决此问题,其实电脑无法启动的原因多种多样,弄明白问题是由硬件还是软件引起有助于解决问题.那么台式电脑无法启动的 ...

  8. java中的invoke方法_详解Java中Method的Invoke方法

    在写代码的时候,发现从父类class通过getDeclaredMethod获取的Method可以调用子类的对象,而子类改写了这个方法,从子类class通过getDeclaredMethod也能获取到M ...

  9. 使用计算机五种严重违规行为,《保密法》规定的12种严重违规行为是什么?

    &nbsp&nbsp &nbsp&nbsp&nbsp 保密法列举了12种常见.典型的严重违规行为,这些违规行为导致保密措施失效,国家秘密失控,保密技术防护体系受 ...

最新文章

  1. “吴恩达deeplearningai”微信公众号上线,将发布《机器学习训练秘籍》
  2. 【CVPR 2022】只用一张图+相机走位,AI就能脑补周围环境
  3. android api (83) —— InputMethodSession [输入法]
  4. html5 内嵌网页_HTML5与CSS3基础语法自学教程(二)
  5. json 反序列化 父子类型_Json的序列化和反序列化
  6. Linux Shell 文本处理工具集锦
  7. 排序 - 冒泡法(改进)
  8. 我的Go语言学习之旅一:WIN下Go的安装
  9. Vue基础之表单控件绑定
  10. 获奖名单出炉,快来看看有没有你!
  11. Xcode6 管理provisioning profile
  12. row_number()over函数的使用(转)
  13. 使用deque模块固定队列长度,用headq模块来查找最大或最小的N个元素以及实现一个优先级排序的队列...
  14. Atitit.字节数组转字符串 base64 base16 Quoted-printable 编码原理设计 attilax 总结
  15. vscode中怎样格式化js代码_VSCode代码格式化设置
  16. linux项目实验ppt下载,实验一Linux系统的使用.ppt
  17. 百度地图 3.0 WEB离线开发
  18. 华为移动应用引擎安装第三方apk教程
  19. nagios监控 mysql 表结构
  20. 深度学习(4):NCHW和NHWC

热门文章

  1. ios内联函数 inline
  2. python 编码报错问题 'ascii' codec can't encode characters 解决方法
  3. 小强的HTML5移动开发之路(14)——Video标签详解
  4. no module named ‘cv2’解决办法
  5. Win11之C盘终极清理工具
  6. Android查看wakeLock调用情况
  7. C++ 命名空间三种用法
  8. tensorflow之读取jpg图像长和宽
  9. Java如何连接Mysql数据库
  10. svm分类代码_SVM的原理及实现垃圾邮件分类代码解析: