如何通过编程/编码实现Web服务测试自动化

时间:2015-01-19 15:46:19

标签: c# web-services testing asp.net-web-api

我知道这些问题已被多次询问,我仍然在寻找满足我的问题的答案。请看下面我要找的内容:

  1. 首先,如何通过编程实现这一目标。对于Web自动化我正在使用specflow C#。我是否需要为Web服务测试创建单元测试?通过编程可以做些什么? soapUI已被排除,因为它已被手动测试人员使用。

  2. 这些是否有可用的框架?

  3. 请给我支持他们的链接和示例。

  4. 我知道这是一个广泛的问题。但我确实需要每个人的帮助,以便我在API测试方面开始正确的方向。

1 个答案:

答案 0 :(得分:1)

您绝对的第一个停靠点是了解您正在测试的Web服务。您是否拥有可以提交给Web服务的有效XML?如果是这样,将其存储在某处并创建一个从文件夹中获取它的步骤。使用该XML作为测试用例并遍历文件夹中的每个文件。每个XML文件应根据您希望测试覆盖的内容而有所不同。

通常,Web服务测试将包括记录响应时间,将不同类型的XML作为测试用例发送(更改节点的内容以覆盖不同的触发器),以及检查响应中的特定值。

非常高级别和隐式场景可能看起来像这样(基于我曾经做过的事情):

Scenario Outline: Submit Requests to Web Service
    Given I have XML file '<XML_Case>'
    And I submit a 'POST' request
    Then I should receive a response from the Web Service
    And the response will include a 'ResponseId' in the 'Header' section
    And the response will include a 'RequestId' in the 'Body' section
    And the 'Complete' node in the 'Body' section will return the value of 'True'

Examples:    
 |XML_Case                         |                      
 | C:\TestData\test1.xml           |
 | C:\TestData\test2.xml           |
 | etc...                          |

为了推动这一点,C#中有很多方法。首先,您可以检查XML文件,并通过类似步骤定义将其转换为XML请求:

[Given(@"I have XML file '(.*)'")]
 public void GivenIHaveXMLFile(string fileName)
    {
        //Checks if file exists 
        if (System.IO.File.Exists(fileName))
        {
            var requestXml = CreateXMLInstance(fileName);
        }
        else
        {
            throw new Exception("No XML file found in specified location");
        }                    
    }

该代码中使用的CreateXMLInstance方法将从文件路径加载XML,可能如下所示:

 public XmlDocument CreateXmlInstance(string xmlPath)
    {
        //Loads XML from file path
        XmlDocument request = new XmlDocument();
        request.Load(xmlPath);
        return request;
    }

您实际上已经创建了前几个步骤,可以将requestXml变量存储为字段,也可以存储在Specflow的ScenarioContext中,以便以后在进行Web服务调用时使用。

显然还有很多事要考虑,但这可能会让你朝着正确的方向前进。