在创建IT解决方案时,错误的代价很高,这在医学和人类银行中尤其明显,在医学中,人们的生活取决于软件的质量,而在银行中,则可能造成巨大的财务损失。 测试自动化使您可以组织对产品质量的持续检查。 让我们看看在什么情况下需要它。
一些公司错误地认为自动化是在浪费时间和金钱,而另一些公司则认为这是一种很酷的趋势,并且是所有疾病的“药丸”。 考虑什么是中间立场,自动化的重点是什么。

为什么要测试
该软件中的丝毫错误都会威胁到巨大的成本。 开发过程构建得越好,风险就越低。 但是,如果我们回顾事实,就会发现,即使是像Google,Microsoft或大型银行这样的巨头也会犯错。
例如,金融界最著名的“事故”之一发生在90年代末期的芝加哥第一国家银行:过夜,客户帐户增长了9亿美元,这是不合理的。 然后,该银行的高级副总裁詹姆斯·兰卡斯特(James Lancaster)承认这是“计算机中的软件错误”,幸运的是,没有人有时间使用它。
在看起来与IT没有直接关系的其他行业中,发生了代价高昂的错误。 一个著名的例子是航天技术发射时发生的事故,特别是在2017年,罗斯科斯莫斯
损失了价值26亿卢布
的卫星。
在使用大型IT解决方案(例如,远程银行系统(RBS))时,不仅要不断测试各个功能的运行,而且还要测试它们之间的交互,这一点很重要。 在时间紧迫的情况下,领先的银行每月都要更新其应用程序,因此无法手动检查所有内容-至少没有足够的时间进行此操作。
在为企业创建IT产品时,通常会结合两种方法:
- 在质量保证(QA)专家的帮助下手动进行检查;
- 在SDET(测试中的软件开发工程师)的专家的帮助下,结合了手动测试和关键测试用例的自动化。
SDET专家的工作涉及三个领域-开发,QA和DevOps,涵盖直接编写自动测试和其他任务。 例如,SDET可以将CI配置为自动交付和部署应用程序,维护文档并组织流程。 但是,在本文中,我们考虑一个方面-测试自动化。
是什么赋予了自动化
这是发展中相当新的方向之一,被许多神话包围。 通常,企业会相信自动化:
- 解决发行高质量软件的所有问题;
- 将允许拒绝手动测试;
- 仅仅因为这是一个“酷趋势”就必要;
- 加快发布发布;
- 在测试期间将增加平台和操作系统版本的覆盖范围。
显然,前三个陈述过分分类,因此(通常是错误的):为了确保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产品时,需要几个团队一起工作(例如,在银行应用程序中),并且那里有复杂的算法和业务逻辑,因此需要进行与自动化结合的手动测试。 这种方法有助于建立产品测试流程并减少高昂错误的风险,这在制定严格的发布计划时尤其重要。
感谢您的关注! 希望本文对您有所帮助!