测试网络服务引擎:最佳实践

软件测试 自动化测试 网络服务
2022-01-24 14:18:14

我目前正在从事一个网络服务测试项目。Web 服务引擎处理大量输入数据并返回一些经过大量计算和过滤的数据。我们遵循的测试方法是:创建一个并行应用程序,该应用程序根据 Web 服务的要求执行与被测引擎相同的功能。我们将相同的输入数据应用于我们的测试应用程序和被测应用程序,并比较它们每个返回的数据。

有没有人遵循任何不同的方法?您认为这种方法有多好?

4个回答

分享一下我的想法,

  • 我曾为 OLTP 应用程序开发 Web 服务。这是 Web 服务通过执行一些存储过程从数据库中获取值。

  • 即使对于您的案例信息,数据库中也会保留/此 Web 服务必须是 CRUD 操作的某种方法(如果您有更多关于 Web 服务功能上下文的信息,请添加)

  • 一种方法是通过查询后端系统并验证 Web 服务正确返回数据集来获取测试数据

  • 调用存储过程,使用相同的测试数据调用 Web 服务。验证两种情况下的结果是否相同

  • 如果完成了任何翻译(例如国家名称、位置,如果它在结果中被缩写和扩展),您可能需要在 Web 服务输出中进行验证,此更改可能在您的代码中完成,可能不在存储过程中总是

  • 我不确定您为什么需要创建并行应用程序?为什么要编写另一个应用程序,您总是可以检查 SOAP UI、Codeplex - Web Service Studio 等工具进行功能测试

  • 您需要检查超时、错误处理(Web 服务返回的错误消息和错误代码)、依赖调用方法不可用的情况

  • SOAP UI 支持数据驱动测试,你可以勾选这个特性。我还没有使用 TestNG 在 java 平台上开发 Web 服务自动化。如果其他成员对 Java 平台和 TestNG 框架中的 Web 服务自动化有任何了解,可以添加。

“我们遵循的测试方法是:根据 Web 服务的要求创建一个与被测引擎执行相同功能的并行应用程序。我们将相同的输入数据应用于我们的测试应用程序和被测应用程序,并比较他们每个人返回的数据。”

嗯,我知道这告诉您 Web 服务和并行应用程序返回相同数据的位置。但这并不表示它们中的任何一个都返回了预期的数据。谁构建了并行应用程序?你怎么知道它有效?

查看您的要求,让他们指导您需要执行的测试、所需的输入数据和预期的结果。

测试创建一些输入,将它们提供给函数,检索结果,最后咨询 oracle 以确定结果是否正确。根据功能,这些操作中的任何一个都可能容易或困难。您可能会争辩说,您描述的设计只是一种在测试客户端和并行应用程序之间分发预言机的方法。如果您需要在某处计算预期结果,为什么不在并行应用程序中呢?

对于希望有一天成为开发人员工作的 QA 人员,将 oracle 编码为 Web 应用程序可能会更有趣和有趣。该设计将使 QA 人员有机会练习他们的编码和设计技能,甚至可能向开发经理证明他们的编码能力。

尽管如此,我想知道你所描述的智慧。您的并行应用程序不仅仅计算一个正确的答案;它还必须像 Web 服务一样运行。例如,在您的并行应用程序计算出正确答案之前,它必须侦听请求、解析请求,并可能从其他来源(如关系数据库)获取附加数据。在计算出正确答案后,并行应用程序必须将答案编码为响应并将其发送回客户端。如果你真的想测试应用程序,你必须为所有这些操作使用完全不同的软件;否则可能会错过错误,因为您的并行应用程序将与您的实际应用程序具有相同的错误。

我怀疑替代方案——将预言机嵌入测试客户端——会更简单。更简单的软件通常更容易理解和维护,并且不太可能出现错误。也许您应该考虑这种类型的设计。

查看您的问题和 Siva 回答中的评论,我相信您的开端良好。我建议保留您当前的 SOAPui 测试和 vb 宏以进行动态测试。有时,拥有执行手动测试的有效方法值得世界上所有的自动化。

尽管如此,我同意 Siva 的观点,即这是一个可以轻松自动化的过程。让自动化套件向 Web 服务发送请求(.NET 中的 webrequest,我相信 Java 中的 HttpUrlConnection),解析响应,执行当前宏中的逻辑,然后进行比较。