Ruby 不同类型的测试
ruby 测试主要可以分为以下几种: 单元测试,功能测试,验收测试,性能测试,烟雾测试
单元测试 单元测试的级别非常低,接近应用程序的源代码。它们包括测试软件使用的类、组件或模块的单个方法和功能。单元测试的自动化成本通常很低,而且可以通过持续集成服务器快速运行。 集成测试 集成测试验证应用程序使用的不同模块或服务是否能够很好地协同工作。例如,它可以测试与数据库的交互,或者确保微服务按预期协同工作。这些类型的测试运行起来成本更高,因为它们需要启动和运行应用程序的多个部分。
功能测试 功能测试主要关注应用程序的业务需求。它们只验证某个操作的输出,在执行该操作时不检查系统的中间状态。 集成测试和功能测试之间有时会出现混淆,因为它们都需要多个组件相互交互。不同之处在于,集成测试可能只是验证您可以查询数据库,而功能测试则希望从产品需求定义的数据库中获取特定值。 端到端测试 端到端测试在完整的应用程序环境中复制软件的用户行为。它验证了各种用户流是否按预期工作,可以像加载网页或登录一样简单,也可以像验证电子邮件通知、在线支付等更复杂的场景一样简单。。。 端到端测试非常有用,但它们执行起来很昂贵,而且在自动化时很难维护。建议进行一些关键的端到端测试,并更多地依赖较低级别的测试类型(单元测试和集成测试),以便能够快速识别破坏性的更改。 验收测试 验收测试是为了验证系统是否满足其业务需求而执行的正式测试。它们要求整个应用程序启动并运行,并专注于复制用户行为。但他们也可以更进一步,衡量系统的性能,如果某些目标没有实现,他们会拒绝改变。 性能测试 性能测试检查系统在显著负载下的行为。这些测试是非功能性的,可以有各种形式来理解平台的可靠性、稳定性和可用性。例如,它可以在执行大量请求时观察响应时间,或者在大量数据的情况下观察系统的行为。 从本质上讲,性能测试的实施和运行成本非常高,但它们可以帮助您了解新的更改是否会降低系统的性能。 烟雾测试 烟雾测试是检查应用程序基本功能的基本测试。它们旨在快速执行,其目标是确保系统的主要功能按预期工作。 在新构建完成后,冒烟测试可以用于决定是否可以运行更昂贵的测试,或者在部署完成后,用于确保应用程序在新部署的环境中正确运行。 如何自动化测试 一个人可以执行上面提到的所有测试,但这样做会非常昂贵,而且会适得其反。作为人类,我们以可重复和可靠的方式执行大量动作的能力有限。但机器可以轻松快速地完成这项工作,并将测试登录/密码组合是否第100次有效,而不会有任何抱怨。 要使测试自动化,首先需要使用适合应用程序的测试框架以编程方式编写测试。你可以分别使用PHP和PHRST框架来测试PHP和PHRST。每种语言都有很多选择,因此您可能需要做一些研究,并要求开发人员社区找出最适合您的框架。 当您的测试可以通过终端的脚本执行时,您可以让Bambor之类的持续集成服务器或Bitbucket Pipelines之类的云服务自动执行测试。这些工具将监视您的存储库,并在将新更改推送到主存储库时执行测试套件。 探索性测试 代码中的特性和改进越多,就越需要测试以确保所有系统正常工作。然后,对于您修复的每一个bug,最好检查它们是否在新版本中恢复。自动化是实现这一点的关键,编写测试迟早会成为开发工作流程的一部分。 所以问题是,是否仍然值得进行手动测试?简而言之,答案是肯定的,它应该专注于所谓的探索性测试,目的是发现不明显的错误。 探索性测试会议不应超过两个小时,并且需要有一个明确的范围,以帮助测试人员专注于软件的特定领域。一旦所有测试人员都了解了情况,他们就可以尝试各种操作来检查系统的行为。这种类型的测试本质上很昂贵,但对于发现UI问题或验证复杂的用户工作流非常有帮助。每当有一项重要的新功能被添加到应用程序中,帮助理解它在边缘情况下的行为时,这是一件特别值得做的事情。
关于测试的说明 为了完成本指南,重要的是讨论测试的目标。虽然测试用户是否可以使用您的应用程序(我可以登录,我可以保存一个对象)很重要,但测试您的系统在执行错误数据或意外操作时是否不会中断也同样重要。您需要预测当用户输入错误、试图保存不完整的表单或使用错误的API时会发生什么。你需要检查是否有人可以轻易泄露数据,访问他们不应该访问的资源。一个好的测试套件应该尝试打破你的应用程序,帮助你理解它的局限性。 最后,测试也是代码!因此,在代码审查期间不要忘记它们,因为它们可能是生产的最后关口。
关于测试的标准格式,可见这个网站: https://www.betterspecs.org/
|