Что такое техника тест-дизайна? минимум усилий максимум результата
Cлайд 4
Соотношение усилий и результата усилия результат
Cлайд 5
Тесты – сеть для ловли багов
Cлайд 6
Когда остановиться? Когда собрана полная коллекция чего-нибудь
Cлайд 7
Разбиение на подобласти Чтобы избежать ненужного тестирования, разбейте область входных значений на группы эквивалентных тестов Два теста считаются эквивалентными если они настолько похожи, что проверять оба бессмысленно Выберите одно входное значение из каждого класса эквивалентности в качестве представителя целой группы значений Парафраз Myers, Art of Software Testing
Cлайд 8
Пример Доменное имя должно содержать от двух до 63 символов, начинаться и заканчиваться буквой латинского алфавита или цифрой. Промежуточными символами могут быть буквы латинского алфавита, цифры или дефис. Доменное имя не может содержать дефисы одновременно в 3-й и 4-й позициях. Правила регистрации доменных имен в домене RU, http://www.cctld.ru/ru/docs/RU-2.php
Cлайд 9
Пример Длина имени: 0-1, 2-63, 64-∞ Символы: буквы латинского алфавита, цифры, дефис, все остальные Структура в начале/конце стоит дефис/не дефис, в 3 и 4 позиции дефисы/не дефисы
Cлайд 10
Интервалы 0 1 2 63 64
Cлайд 11
Покрытие и разбиение буквы цифры дефис
Cлайд 12
Матрицы Поз.3 Поз.4 Дефис Не дефис Дефис Не дефис
Cлайд 13
Cлайд 14
Примеры «чисел» (границы встречаются) перечисления (enumeration) символы (character) количество (разрешённых установок (пароль мин 3 раза), записей в БД, строк в файле, цветов, …) длина (строки, имени файла, пути, текста в файле, слова, абзаца, …) размер/объём (файла, памяти, экрана, окна, шрифта, пакета, …) номер (версии), время (интервал), скорость (ввода данных, перемещения мыши), …
Cлайд 15
Мы – нарушители границ! На входе (то, что пользователь вводит) На выходе (то, что пользователь видит) Где-то глубоко внутри
Cлайд 16
Фейс-контроль или вышибала?
Cлайд 17
Границы добра и зла Физические (не может существовать)(строка -1 длинны) Логические (не подходит по смыслу)(при покупке кол. товара -1) Технологические (не получается)(не описаны, память переполнена, ограничения ресурсов, в базе данных) Произвольные (нельзя потому что нельзя)(длинна поля не >20символов)
Cлайд 18
«Позитивные» и «негативные»
Cлайд 19
Сколько тестов внутри? буквы цифры дефис
Cлайд 20
Границы найдены. А все ли???
Cлайд 21
Зависимости между данными
Cлайд 22
Зависимости между данными
Cлайд 23
Зависимости между данными
Cлайд 24
Paint 1.Изменить размер изо. (-1, больше 99999, скопировать -1) 2. Файл – свойства (вводим больше 9999, -1, буквы) 3. Изменить размер изо (сохранить размер 99999 и потом увеличить в процентах)
Cлайд 25
Неизвестные зависимости Случайные комбинации Неслучайные комбинации полный перебор (10 checkbox = 2^10 тестов) покрытие комбинаций меньшей размерности
Cлайд 26
1. Взаимозависимые данные
Cлайд 27
2. Зависимость одного от другого
Cлайд 28
3. Неизвестные зависимости Случайные комбинации Неслучайные комбинации полный перебор покрытие комбинаций меньшей размерности
Cлайд 29
Сокращение перебора: пример
Cлайд 30
Сокращение перебора: пример Три переменные: «Что» - строка «С учётом регистра» - булевская «Направление» - перечислимый тип Зависимости: «Что» и «С учётом регистра»
Cлайд 31
Сокращение перебора: пример Тестовые значения: «Что» “нижний” (L), “ВЕРХНИЙ” (U), “ВпЕрЕмЕшКу” (M) «С учётом регистра» Да (Y), Нет (N) «Direction» Вверх (U), Вниз (D)
Cлайд 32
Полный перебор «Что» «С учетом регистра» «Направление» 1 L Y U 2 L Y D 3 L N U 4 L N D 5 U Y U 6 U Y D 7 U N U 8 U N D 9 M Y U 10 M Y D 11 M N U 12 M N D
Cлайд 33
Сокращение перебора: пример Перебор: полный – все комбинации все значения хотя бы по разу все пары – каждый с каждым все n-ки
Cлайд 34
Все значения хотя бы по разу «Что» «С учётом регистра» «Направление» 1 L Y U 2 U N D 3 M * (Y) * (U)
Cлайд 35
Все пары (каждый с каждым) «Что» «С учётом регистра» «Направление» 1 L Y U 2 L N D 3 U Y D 4 U N U 5 M Y * (U) 6 M N * (D)
Cлайд 36
Сокращение перебора: пример Четыре переменные: «Что» - строка «С учётом регистра» - булевская «Направление» - перечислимый тип «Есть в тексте» - булевская
Cлайд 37
Все пары (каждый с каждым) «Что» «С учётом регистра» «Направление» «Есть в тексте» 1 L Y U Y 2 L N D N 3 U Y D N 4 U N U Y 5 M Y U N 6 M N D Y
Cлайд 38
Сокращение перебора: пример Пять переменных: «Что» - строка «С учётом регистра» - булевская «Направление» - перечислимый тип «Есть в тексте» - булевская «Регистр совпадает» - булевская
Cлайд 39
Все пары (каждый с каждым) «Что» «С уч.рег.» «Напр.» «Есть» «Рег.совп.» 1 L Y U Y Y 2 L N D N N 3 U Y D N Y 4 U N U Y N 5 M Y U N N 6 M N D Y Y
Cлайд 40
Сокращение перебора: пример Зависимости: «Что» и «С учётом регистра» «Что» и «Есть в тексте» «Есть в тексте» и «Регистр совпадает»
Cлайд 41
Все пары (каждый с каждым) пар «Есть в тексте» (N) + «Рег.совп.» (*) не существует нет пары «Что» (L) + «Регистр совпадает» (N) «Что» «С уч.рег.» «Напр.» «Есть» «Рег.совп.» 1 L Y U Y Y 2 L N D N - 3 U Y D N - 4 U N U Y N 5 M Y U N - 6 M N D Y Y
Cлайд 42
Все пары (каждый с каждым) «Что» «С уч.рег.» «Напр.» «Есть» «Рег.совп.» 1 L Y U Y Y 2 L N D N - 3 L N D Y N 4 U Y D N - 5 U N U Y N 6 U Y D Y Y 7 M Y U N - 8 M N D Y Y 9 M Y U Y N
Cлайд 43
Сокращение перебора: пример Шесть переменных: «Что» - строка «С учётом регистра» - булевская «Направление» - перечислимый тип «Есть в тексте» - булевская «Регистр совпадает» - булевская «Направление совпадает» - булевская
Cлайд 44
Все пары (каждый с каждым) «Что» «С уч.р.» «Напр.» «Есть» «Р.совп.» «Н.совп.» 1 L Y U Y Y N 2 L N D N - - 3 L N D Y N Y 4 U Y D N - - 5 U N U Y N Y 6 U Y D Y Y N 7 M Y U N - - 8 M N D Y Y N 9 M Y U Y N Y
Cлайд 45
Ограничения подхода Хорошо работает для независимых переменных Но если переменные независимы, зачем проверять комбинации???