сквозное или интеграционное или системное тестирование - PullRequest
1 голос
/ 30 октября 2019

Что это за тестирование? Является ли следующее всесторонним тестированием или это интеграционное тестирование или системное тестирование? Если нет, если вы можете уточнить типы тестирования в контексте примера кода.

Я в основном вызываю конечную точку на localhost и утверждаю статус / вывод.

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 Ответ

1 голос
/ 30 октября 2019

Интересный вопрос, к сожалению, ответ может зависеть от ряда вещей.

Давайте начнем с нескольких определений:

  1. Сквозное тестирование isтестирование приложения от начала до конца. Т.е. полный поток, который должен был бы выполнить пользователь.
  2. Интеграционное тестирование - это тестирование группы компонентов вместе как одного элемента.
  3. Системное тестирование проверяет систему в целом на соответствие требованиям.

Итак, первый вопрос, который следует рассмотреть, проверяет ли этот тест полный поток, которого должен ожидать пользователь?

Это означает, что вам нужно определить, кто пользователь. Например, если вы создаете API, который затем повторно используется другими разработчиками, ваш пользователь как автор API будет отличаться от конечного пользователя решений, интегрирующих ваш API.

Мое лучшее предположение заключается в том, чтоэто не конец до конца теста. Глядя на тест, это веб-запрос на получение списка пользователей. Если вы создаете веб-интерфейс, который может перечислять конфиденциальную информацию, я ожидаю, что для этого потребуется войти в систему от лица, осуществляющего доступ к списку. Поэтому сквозной тест будет включать в себя вход в систему.

Итак, следующийвопрос, какие компоненты тестируются? Трудно сказать из кода теста, но я предполагаю, что данные хранятся где-то в базе данных. Так что да, это интеграционный тест, поскольку он проверяет взаимодействие между веб-компонентом и базой данных.

Наконец, это системный тест. Вероятно, да, поскольку я не вижу никаких доказательств того, что это не работает против системы в целом. Кроме того, если ваше решение требует, чтобы у вас была возможность перечислять пользователей, то оно тестирует требуемую функциональность.

Итак, в этом случае я считаю, что это может быть либо системный, либо интеграционный тест. К сожалению, основываясь на определениях этих типов тестов, часто возникает совпадение, при котором тесты могут быть классифицированы как и другие. Так что в конечном итоге вам решать, называете ли вы это системой или интеграционным тестом.

...