Что такое положительный тест и отрицательный тест при модульном тестировании
Я новичок в TDD. Я вижу, что некоторые документы говорят о положительном тесте, отрицательном тесте, пограничном тесте и т.д. Может ли кто-нибудь сказать мне разницу между положительным тестом и отрицательным тестом? Есть ли какая-либо ссылка там, где говорится о различных типах тестов? (Я не ищу книги)
Ответы
Ответ 1
Положительное тестирование - тестирование системы путем предоставления действительного
данных.
Отрицательное тестирование - тестирование системы с помощью недопустимого
данных.
Например, приложение содержит текстовое поле и согласно
user Требования текстового поля должны принимать только
Строки. Предоставляя только String в качестве входных данных для
текстовое поле и проверить, правильно ли оно работает или нет.
означает, что это положительное тестирование.
Если ввод ввода, отличный от String, означает, что он отрицательный
Тестирование..
Отрицательное тестирование улучшает охват тестирования вашего приложения. Совместное использование отрицательных и положительных подходов к тестированию позволяет тестировать ваши приложения с любыми возможными входными данными (как действительными, так и недействительными) и может помочь вам сделать ваше приложение более стабильным и надежным.
Обратитесь к Glossary для разных типов тестов
Ответ 2
В терминах модульного тестирования (который является фокусом TDD) концепцию можно описать просто следующим образом:
- A положительный тест проверяет, работает ли функция/метод с ожидаемым ожиданием.
- A отрицательный тест проверяет, ведет ли функция/метод как ожидалось с плохим вводом. (у вас должно быть достаточно отрицательных тестов, чтобы охватить все возможные определения "плохо", в идеале "). Подробнее см. этот вопрос.
Ответ 3
Отрицательное тестирование проверяет, что система не делает то, что она не должна.
Пример. Если только менеджер может утвердить запрос на новый ноутбук, отрицательное тестирование показывает, что "обычный" пользователь не может одобрить этот запрос.
Ответ 4
Unit тест положительный против отрицательный
===============================================================
| Positive Test Case | Negative Test Case |
+==============================+==============================+
| test by valid/expected data | test by invalid data |
+------------------------------+------------------------------+
| check if the function does | check if the function does |
| that it should do | not that it should not do |
+------------------------------+------------------------------+
| examine general behaviors of | examine if the function |
| the function | is fault proof (does not |
| | crush/mis-response in bad |
| | situations) |
===============================+===============================
пример
Функция кандидата:
public boolean deleteFile(String filePath) {
// try to delete the file; and
// return true for success, false for failure
}
Положительный тест Cases- Поскольку эта функция ожидает путь к файлу, положительный тестовый случай будет содержать все возможные допустимые пути к файлам:
public void deleteFile_forAbsoluteFilePath_P() {
String filePath = "D:\\Temp\\file.txt";
// create file, call deleteFile(), and check if really deleted
}
public void deleteFile_forRelativeFilePath_P() {
String filePath = "file.txt";
// create file, call deleteFile(), and check if really deleted
}
public void deleteFile_forNonExistingFilePath_P() {
String filePath = "wHSyY#zP_04l.txt";
// call deleteFile(), and check if false is returned
}
public void deleteFile_forSymlinkedFilePath_P() {
String filePath = "D:\\Temp\\symlink\\dir\\file.txt";
// create file, create symlink, delete file, and
// check if really deleted
}
public void deleteFile_forUndeletableFile_P() {
String filePath = "file.bin";
// create file, restrict delete permission, call deleteFile(), and
// check if does not crash and returns false
}
Отрицательный тест Cases- Любая вещь, которая может быть отправлена в функцию и недействительна, будет в отрицательном тестовом случае:
public void deleteFile_forDirectoryPath_N() {
String dirPath = "D:\\Temp\\dir";
// create directory, call deleteFile(), and check if false is returned
}
public void deleteFile_forSymlinkPath_N() {
String symlink = "D:\\Temp\\symlink";
// create symlink, call deleteFile(), and check if false is returned
}
public void deleteFile_forNullString_N() {
String filePath = NULL;
// call deleteFile(), and check if does not crash and returns false
}
public void deleteFile_forCorruptedFilePath_N() {
String filePath = "D:\\Tem¡¿ÿ¿";
// call deleteFile(), and check if does not crash and returns false
}
Вместо того, чтобы бросать все возможные аргументы в функцию, отрицательный контрольный пример должен содержать только ожидаемые исключительные условия.