Конспект по видео "Проектирование тестов"
(
https://www.youtube.com/watch?v=sq2X_trhVgA)
Перед написанием тестов надо провести анализ:
1) Зачем эта фича нужна? /решение бизнес-задачи/исправление старых ошибок или логики/
для получения ответов на этот вопрос надо обращаться к заказчику
2) Как это работает?
для получения ответов на этот вопрос надо обращаться к разработчику
3) Где? - условия применения фичи, от состояния БД до погоды за окном
Сделать описание и тест-план - структурирование полученных ответов на эти три вопроса.
Рассказ фичи - объясняя фичу другому ты можешь оценить своё понимание вопроса.
Ревью описания у заказчика и у разработчика.
Подходы к тест-дизайну согласно книги "Practitioner's Guide to Software Test Design":
/
1) Equivalence class testing - использование классов эквивалентности.
-не забывать заведомо неверные значения
-важно четко определить и проанализировать диапазон входных данных
-выявление группы переменных, зависимых друг от друга (н-р сумма двух сторон треугольника
больше третьей)
2)Boundary value testing
-помнить про числовые границы, границы множеств, границы циклов, границы структур данных,
границы пространства (многомерные объекты), границы времени, границы конфигураций
-таблица Майерса (построение):
--вряд ли будет спецификация со всеми допустимыми/недопустимыми значениями
--начните с простого перечисления полей ввода
--в конце концов должна получиться таблица со всеми возможными значениями
--на практике редко встречаются полные таблицы
3)Domain analysis testing:
-разбиение областей значений на подобласти
-выбор конкретных значений из подобластей
-сочетание выбранных значений разных параметров
4)Pairwise testing: позволяет выбрать небольшое подмножество тестов, позволяющее найти наибольшее
количество дефектов
5)Decision table testing
6)State-transition testing: использование диаграмм с обозначением переходов между состояниями
7)Use case testing: подходит для тестирования интерфейсов, могут быть пропущены неочевидные сценарии
\
Parameters based testing: Пример "Кружка": Параметры:
содержимое: вода, спирт, чай, крупа, сахар
t содержимого: 0С, 100С, -20С, 70С
время теста (сек): 1, 10, 60, 3600, 86400
доп.действия: нагрев, охлаждение
перебор параметров:
-ручной
-n-wise
-перебор относительно фиксированных значений <== пример "кондиционер":
/
--температура
--мощность
--таймер выключения
взять "стандартный" режим работы: T=20C, P=2000Вт, t=20минут
фиксируем одно значение, перебираем все остальные
\
-иерархическая проверка параметров <== пример расчет площади трецгольника по формуле полупериметра:
/
внутри формулы три функции: считывание данных (А), рассчёт периметра (В), расчёт площади (С)
проверка: А(), В(А), В(С)
\
РАЗНОЕ ИНТЕРЕСНОЕ:
-Magic numbers: 0,4,37,38,48,97,204,...
-Error guessing: тестирование на основе предугадывания ошибки. Пример:
/
есть описание: "Консольное приложение, которое на вход принимает 3 целых числа ..."
перед каждым значущим слово поставить НЕ
то есть получается: "НЕ Консольное НЕ приложение, которое на НЕ вход принимает НЕ 3 НЕ целых НЕ числа ..."
\
ТЕСТ-КЕЙС
Свойства:
-простота/понятность
-воспроизводимость
-обоснованность
КАК ЗАВОДИТЬ БАГИ:
-не откладывать, заводить сразу
-разобраться в баге, локализовать проблему
-подумать где этот баг может встретиться ещё
ЖИЗНЕННЫЙ ЦИКЛ БАГА
ОЦЕНКА ТЕСТИРОВАНИЯ:
-покрытие требований (Requirements Coverage)
Requirements Traceability Matrix
-покрытие кода (Code Coverage):
--покрытие операторов
--покрытие условий
--покрытие путей
--покрытие функций
--покрытие вход/выход
ЛИТЕРАТУРА:
-Lee Copeland "Practitioner's Guide to Software Test Design"
-Бейзер Борис "Тестирование черного ящика"
-Канер
-Майерс Г. "Искусство тестирования программ"