软件测试是用来验证软件解决方案或产品是否符合要求和期望的过程。软件测试旨在发现缺陷,并证明软件是适合使用的。有许多测试方法、类型和技术可用于验证功能和非功能需求。
测试自动化是使用其他软件来自动化手动测试或在应用程序中执行手动用户操作的过程。在手动测试不可能或费时的情况下,用其他软件的帮助来验证软件是一个好主意。
自动化测试是使用专门的软件工具验证软件解决方案,通常涉及自动化功能作为测试过程的一部分。
自动化测试是使用特殊的软件,与被测试的软件分开,来控制和执行测试,包括实际结果与预测结果的比较和报告。应用程序被称为被测应用程序(AUT the application under test)或被测系统(SUT system under test ),用于测试的软件被称为自动测试工具(ATT automated testing tool)。
测试对于所有的IT系统都是必要的,有许多IT系统在没有适当的测试的情况下上线,最后出现了缺陷,造成了经济和声誉的损失。测试是任何IT解决方案开发的核心活动,独立于软件开发生命周期(SDLC software development life cycle )方法,如DevOps、精益、敏捷或瀑布。
IT项目和测试是在三个约束条件下进行的:成本、时间和范围。这三个因素,通常被称为 "三重约束"。三重约束的任何变化都会对质量产生相关的影响,而这一影响是通过测试来衡量的。
基于风险的测试(RBT Risk-based testing)是广泛使用的优化测试时间和努力的方法之一,测试自动化是另一种方法。基于风险的测试和测试自动化可以结合起来。
基于风险的测试是管理质量风险的一个很好的解决方案,因为它减少了时间。基于失败风险的测试工作分配是优化测试的高效和有效的方法之一。基于风险的测试方法的主要好处之一是确保从计划的测试活动中获得最大的价值,即使在完成测试执行的时间减少的情况下。
一些常见的测试方法:
·尽早开始测试或测试准备,例如在计划和安排的测试之前进行非正式测试。
· 作为商业案例开发或设计阶段的一部分,从一开始就让测试团队参与进来。
· 减少重复的测试,如系统测试(ST)和用户验收测试(UAT)中的普通测试。
· 连接或合并测试周期,例如,系统集成测试(SIT)的最后一个周期和UAT的第一个周期。
· 引入质量保证(QA)过程作为一种积极的措施。
· 使用测试技术,如探索性测试来发现缺陷。
· 引入测试自动化。
测试自动化是一个软件开发项目,包括软件开发生命周期中的大多数阶段。
测试自动化框架是一个编程框架,包括一套全面的准则,以产生测试自动化活动的有益结果。自动化框架是由ATT提供的,或者在某些情况下,是一个定制的工具,它管理测试自动化,以产生更好的结果。测试自动化框架通常为自动化工具提供一个适合其目的的结构。大多数测试自动化工具为SUT的自动化提供了一个默认的框架;然而,自动化工具可以针对特定的要求进行定制,例如自动化框架可以按照最适合特定需求的方式安排各种测试任务,生成自定义的测试报告。
有许多方法可以使软件测试高效,而测试自动化是其中的佼佼者。
测试自动化是减少测试工作的关键方法,但它不是所有测试活动的万能药。测试自动化可以在测试周期的不同阶段引入,如:
· 产品开发或解决方案的实施
· 测试管理
· 功能和回归测试
· 支持(上线后)或运营
· 测试生成
· 测试数据的生成
· 测试结果的检查和评估
· 合规性
测试自动化在各个行业和应用中被广泛使用,并产生巨大的效果。软件开发方法,如DevOps、Agile、Waterfall和它们的不同风格,广泛使用测试自动化来降低成本,提高效率和准确性,并加快回归测试。
测试自动化是在充分的数据和分析基础上做出的战略决策。然而,许多项目和组织把测试自动化作为简单的降低成本的方法,最后却惨遭失败。它不是降低成本、节省时间和提高软件测试质量的捷径,也不应该被这样对待。在考虑将自动化作为测试的一部分之前,各种因素如SUT、技术和生命周期起着重要作用。如果使用得当,测试自动化是成功和安全地提供软件测试的最可靠方法之一。在实施成功的自动化过程中,有许多挑战,如工具识别、技能要求和工作方式。
转载自网络