什么使测试自动化

在创建IT解决方案时,错误的代价很高,这在医学和人类银行中尤其明显,在医学中,人们的生活取决于软件的质量,而在银行中,则可能造成巨大的财务损失。 测试自动化使您可以组织对产品质量的持续检查。 让我们看看在什么情况下需要它。

一些公司错误地认为自动化是在浪费时间和金钱,而另一些公司则认为这是一种很酷的趋势,并且是所有疾病的“药丸”。 考虑什么是中间立场,自动化的重点是什么。



为什么要测试


该软件中的丝毫错误都会威胁到巨大的成本。 开发过程构建得越好,风险就越低。 但是,如果我们回顾事实,就会发现,即使是像Google,Microsoft或大型银行这样的巨头也会犯错。

例如,金融界最著名的“事故”之一发生在90年代末期的芝加哥第一国家银行:过夜,客户帐户增长了9亿美元,这是不合理的。 然后,该银行的高级副总裁詹姆斯·兰卡斯特(James Lancaster)承认这是“计算机中的软件错误”,幸运的是,没有人有时间使用它。

在看起来与IT没有直接关系的其他行业中,发生了代价高昂的错误。 一个著名的例子是航天技术发射时发生的事故,特别是在2017年,罗斯科斯莫斯损失了价值26亿卢布卫星。

在使用大型IT解决方案(例如,远程银行系统(RBS))时,不仅要不断测试各个功能的运行,而且还要测试它们之间的交互,这一点很重要。 在时间紧迫的情况下,领先的银行每月都要更新其应用程序,因此无法手动检查所有内容-至少没有足够的时间进行此操作。

在为企业创建IT产品时,通常会结合两种方法:

  • 质量保证(QA)专家的帮助下手动进行检查;
  • SDET(测试中的软件开发工程师)的专家的帮助下,结合了手动测试和关键测试用例的自动化。

SDET专家的工作涉及三个领域-开发,QA和DevOps,涵盖直接编写自动测试和其他任务。 例如,SDET可以将CI配置为自动交付和部署应用程序,维护文档并组织流程。 但是,在本文中,我们考虑一个方面-测试自动化。

是什么赋予了自动化


这是发展中相当新的方向之一,被许多神话包围。 通常,企业会相信自动化:

  1. 解决发行高质量软件的所有问题;
  2. 将允许拒绝手动测试;
  3. 仅仅因为这是一个“酷趋势”就必要;
  4. 加快发布发布;
  5. 在测试期间将增加平台和操作系统版本的覆盖范围。

显然,前三个陈述过分分类,因此(通常是错误的):为了确保IT产品的质量,重要的是要考虑多个参数的复杂性,而不仅仅是测试自动化。

反过来,最后两个陈述确实是正确的:强大的测试自动化功能既可以加快发布速度,又可以提高案例覆盖率。 同时,手动质量保证和自动化通常同样重要,并且可以组合使用。 此外,每个项目都是单独的,有时不需要自动化。

需要自动化时


  • 具有许多业务功能的大型应用程序
  • 应用程序的有效寿命(从1年或更长时间开始)
  • 实施CI / CD,定期发布+少数QA专家

自动化任务


通常,我们请SDET专家解决以下问题:

  • 常规检查和频繁检查的自动化,减轻了质量检查专家的负担。
  • 监视应用程序的主要功能并跟踪产品中的更改。
  • 具有测试大量设备,浏览器版本和操作系统的能力。
  • 在同时处理大量数据和用户的情况下测试应用程序性能。

结果


自动化有助于建立平衡:

  • 手动检查需要人工关注的内容(通常多达25%);
  • 自动化其他情况。

同时,从长远来看,自动化可以降低测试成本和与人为因素相关的风险。

此外,如有必要,您可以加快发布速度。 例如,如果您需要在一个开发冲刺中检查大约400个案例,那么手动验证将需要长达两周的时间,并且可以在夜间执行自动测试并在4小时内进行分析。

借助自动化,企业可以随时获得机会来确保系统的关键功能正常工作并检查错误(如果有的话,它们是什么)。

例子


假设目前在移动银行中,您需要处理多达700个案例,每个案例每年需要处理70至100次。 不到25%的案件需要人工验证,其余75​​%的案件可以自动化。

手动验证所花费的时间:

-30小时

自动化时间:

夜间测试运行需要8个小时,但无需人工干预,因此未考虑在内。

其他时间费用:

  • 8小时用于手动验证无法进行自检的案例(25%);
  • 6小时用于分析结果,并在必要时检查故障(最多测试的10%)。

总计:测试自动化可以将花费的时间从30小时减少到14小时

当然,每种情况都有其自身的特征,因此花费的时间可能会有所不同。 我们不断分析编写自动测试,支持和结果分析所花费的时间。

平均而言,自动化至少可以节省30%到50%的时间,例如,您可以分配更多的时间来开发和改进产品。

测试自动化如何工作


与其他工作流程一样,每个IT公司在测试自动化方面都有自己的特点。 在SimbirSoft,我们坚持以下方法,可帮助您快速构建客户项目的工作。

测试过程始于制定策略-测试计划,这是编译各个测试用例的基础。 为了使SDET自动化,工程师选择了使用该产品的用户经常使用的关键场景-这些场景可带来约80%的业务价值。

此后,我们为进一步的自动测试奠定了基础,建立了与之合作的支架和工作流程,CI定期在各个分支机构进行测试。 我们选择将使用的准备测试数据的方法(API,访问数据库,合成数据的生成,销售数据的使用)。 SDET工程师编写的测试涵盖了使用该产品的关键方案,分析结果以及进一步自动化的需求。

我们使用所有最受欢迎的编程语言-Java,Python,Kotlin等开发自动化测试。我们的主要工具和技术是Appium,TestNG | Java。 JUnit,RobotFramework | Pytest,硒| Senenide,Allure,TeamCity,Jenkins,JMeter。

首先需要自动进行哪些测试,取决于特定产品的功能。 大多数公司会自动执行烟雾测试,回归测试以检查现成的功能,以及案例检查各种参数(例如,注册期间的有效和无效数据)。

在我们的实践中,我们在开发开始时就已经建立了测试自动化流程,同时进行了手动测试。 这项工作不是一次性的,而是持续的,特别是在包括银行在内的大型项目上。

总结一下


手动和自动测试之间的平衡使您能够不断监视IT产品的质量。 某些项目是手动检查的,而其他任务则可以借助自动化来更成功地解决。 手动测试用于无法替代的情况,例如,如果您需要本地化,错误描述,手动可用性测试。 在小型项目中,开发人员经常编写测试。

当创建大型IT产品时,需要几个团队一起工作(例如,在银行应用程序中),并且那里有复杂的算法和业务逻辑,因此需要进行与自动化结合的手动测试。 这种方法有助于建立产品测试流程并减少高昂错误的风险,这在制定严格的发布计划时尤其重要。

感谢您的关注! 希望本文对您有所帮助!

Source: https://habr.com/ru/post/zh-CN477670/


All Articles