端到端或集成或系统测试



这是什么样的测试?以下是端到端测试,还是集成测试或系统测试?如果没有,您是否可以在代码示例的上下文中详细说明测试的类型。

我基本上是在本地主机上调用端点,并在状态/输出上断言。

let assert = require("assert");
let http = require("http");
describe("EndToEndTesting", function() {
describe("GET /users", function() {
it("should return list of users", function(done) {
http.request({
method: "GET",
hostname: "localhost",
port: 3000,
path: "/users"
}, function(response){
let buffers = [];
response.on("data", buffers.push.bind(buffers));
response.on("end", function(){
let body = JSON.parse(Buffer.concat(buffers).toString());
assert(response.statusCode == 200);
});
}).on("error", console.error).end();
});
}
}

有趣的问题,不幸的是,答案可能取决于许多因素。

让我们从几个定义开始:

  1. 端到端测试是从开始到结束测试应用程序。即用户期望完成的完整流程
  2. 集成测试是将一组组件作为一个项目一起进行测试
  3. 系统测试是针对需求对整个系统进行测试

因此,要考虑的第一个问题是,该测试是否检查了用户期望实现的完整流程?

这意味着你需要定义用户。例如,如果你正在构建一个API,然后由其他开发人员重新使用,那么你的用户作为API的作者将不同于集成你的API的解决方案的最终用户。

我的最佳猜测是,这不是一个端到端的测试。从测试来看,这是一个获取用户列表的web请求。如果你正在构建一个可以列出机密信息的Web UI,我希望这需要访问列表的人登录。因此,端到端测试将包括登录系统。

那么,下一个问题是,正在测试哪些组件?很难从测试代码中判断出来,但我猜数据存储在数据库的某个地方。是的,这是一个集成测试,因为它检查web组件和数据库之间的交互。

最后,这是一个系统测试吗。可能是的,因为我看不到任何证据表明这不是针对整个系统运行的。此外,假设您的解决方案的要求是能够列出用户,那么它就是在测试所需的功能。

所以,在这种情况下,我相信它可能是一个系统或集成测试。不幸的是,根据这些测试类型的定义,测试通常会有重叠,可以分为两种。因此,最终取决于您是否将其称为系统或集成测试。

最新更新