开发测试框架以验证SOAP WS与REST WS的响应?

时间:2018-10-13 11:25:57

标签: rest soap automation cucumber bdd

我需要使用Cucumber开发测试框架。

要求:

  1. 几年前已经为现有项目开发了Soap WS
  2. 为同一项目开发了一个新的REST

我必须使用REST WS的响应来验证SOAP WS的响应,并使用功能文件(黄瓜)检查两者是否相同?

基本上必须检查Soap和REST中的字段值是否相等。

如何编写方案以及如何使用REST ws在SOAP ws中映射这些字段?

我对BDD和黄瓜很陌生。详细的答案非常感谢

1 个答案:

答案 0 :(得分:0)

如何创建场景

在BDD中,我们创建了具有上下文,事件和结果的方案。

上下文是场景开始的状态。因此,在您的情况下,您有两个服务,并且可能在那些服务中创建的某些服务可能会更改响应。那些成为您的“礼物”。

假设您的服务正在处理用户详细信息。 (请根据您的情况选择适合的信息,以适应这些情况。)

Given the REST service has a user 'Chandra Prakash'
And the SOAP service has a user 'Chandra Prakash'

在BDD中,大多数情况下,每种情况下只有一个事件发生。但是,如果有互动或时间流逝,可能会有两个事件发生,我认为这也很重要。因此,我们会同时调用这两种服务,这些事件将成为您的“何时”。

When we ask the REST service for all users with family name 'Prakash'
And we ask the SOAP service for all users with family name 'Prakash'

最后一点是结果,我们在这里查看我们是否获得了对我们重要的价值。

Then both services should have found a user 'Chandra Prakash'.

这些行一起成为功能文件中的场景。

我不只是要用一种方案来验证两者是否相同,而是要查找有关系统功能的示例,并为每个示例使用一个方案。但是,如果您希望最后一次通话只检查它们是否相同,那就可以了。

将方案连接到自动化

您发现的大多数Cucumber示例将使用诸如Selenium之类的方法来自动化网页,但是您却没有。您有一个 API ,而不是 UI 。您将拿出一个系统如何使用另一个系统的示例。

您的自动化工作将在Givens中设置数据,然后在适当的时候调用REST服务或SOAP服务。

如果您通过Cucumber's tutorial进行研究,然后使用他们的技术将方案连接到两个服务上,那么您将得到想要的。

请注意,黄瓜对于不同的语言具有不同的口味,因此请为自己选择合适的口味。

方案与验收标准

总的来说,我想问:“你能给我一个例子吗?”因此,您可以举一个REST服务和SOAP服务的示例吗?如果答案是企业和非技术人员感兴趣的,那么您可以将示例记下来。尝试使用特定的细节,就像我在此处对用户及其名称所做的那样,而不是像这样的通用

Given the REST service has a user with a particular family name
When we ask the REST service for users with that family name
Then it should retrieve them

在这里,这不是一个场景,即使它是良好的接受标准。我们希望我们的场景是具体且令人难忘的。尝试使用企业可以识别的真实数据。

黄瓜与普通代码

我可以看到一个小问题。

听起来您正在做的似乎是技术上的集成测试,而不是系统行为的示例。如果真是这样,并且没有非技术利益相关者对此场景感兴趣,那么Cucumber可能会过大。在您的语言的单元级框架中创建某些东西就足够了(因此,JUnit for Java等)。我通常会创建一个小的DSL,如下所示:

    GivenThePetshop.IsRunning();
    WhenTheAccessories.AreSelected("Rubber bone", "Dog Collar (Large)");
    ThenTheBasket.ShouldContain("Rubber bone", 1.50);
    ThenTheBasket.ShouldContain("Dog Collar (Large)", 10.00)
    ThenTheBasket.ShouldHaveTotal(11.50);

但是,如果您不在其他任何地方重复使用这些步骤,则甚至不需要这样做;您只需在注释中添加“给出,何时,然后”,然后直接调用代码即可。

在这种情况下,我将针对黄瓜使用一些参数:

  • 重构普通英语比代码难
  • 它引入了另一层抽象,使代码更难以理解
  • 这是供开发人员学习的另一个框架
  • 而且在CI系统等中进行设置也需要时间。

但是,如果您不能后退,那么使用Cucumber不会是世界末日。

进行一些对话!

获得实例的最好方法是问一个人,“你能给我一个例子吗?”所以我会找到最了解业务流程的人,然后问他们。

即使只是集成测试,也请执行此操作,因为它们将帮助您考虑系统行为不同的其他示例。这些都变成了另一种情况。

然后您就去了!如果您确实需要StackOverflow无法提供的帮助,则有BDDCucumber的邮件列表,还有很多示例。