测试服务是功能测试还是集成测试

Is testing a service a functional test or an integration test

我们有一个提供功能的 .Net 组件。我们有一个 Restful Web API 服务,世界将使用它来调用该功能。我们编写了使用 OWIN 调用 Web API 控制器的测试。

以前,我总是称这些为"integration tests",因为服务是一个单独的组件。但是,我尊敬的另一位开发人员告诉我,这不是集成测试,而是 "functional test".

我查看了 Defintion of Functional Testing and the definition of Definition of Integration Test,对于 RESTful 服务测试应该称为什么测试,我都没有明确的赢家。

是集成还是功能?是否有任何权威来源可用于明确回答这个问题(因为我不希望我的问题在 "soliciting debate" 内被关闭)?

当您调用休息服务以验证该服务 return 的设计目的时 return,这就是功能测试。您正在测试服务的功能。

如果您有第二个服务或 UI 依赖于此服务,并且您的测试与此第二个服务或 UI 交互以验证它是否可以正确调用 REST API 并使用它的数据,这将是一个集成测试。

功能测试是一个黑盒练习,如您发布的功能测试定义 link 中所述。这意味着测试是在不了解系统内部工作原理(例如代码)的情况下进行的。您可能会对 API 是否按预期端到端工作感兴趣;用户在使用 API 时是否收到正确的响应?如果 REST API 在您的系统之外进行测试,那么它就是一个功能测试。

如果 API 是从您的代码库中测试的,那么这是在测试两个或多个模块之间的 集成 ,因此归类为集成测试。这可能涉及测试依赖模块是否以正确的格式发送正确的数据、接收预期的数据。

有关更多信息,请查看 ISTQB 中的任何内容,ISTQB 是公认的软件测试机构。这是 ISTQB 词汇表的 link:http://www.software-tester.ch/PDF-Files/ISTQB%20Glossary%20of%20Testing%20Terms%202.4.pdf