Тестирование для
разработчиков
Лекция 2. Критерии выбора тестов.
Развенская Ксения
В предыдущих сериях
Качество – совокупность характеристик, определяющих
насколько продукт хорош с точки зрения заинтересов...
В предыдущих сериях
Техники тестирования
• На основе спецификации (Specification-based)
• На основе выбора входных данных/...
План
1. Sanity-check
2. Тестовое покрытие
3. Критерии покрытия
4. Критерии выбора тестов
Sanity-check
Программа принимает на вход 3 целых числа. Эти
значения интерпретируются как длины сторон
треугольника. Прогр...
Sanity-check
1. Позитивный тест, разносторонний (3, 4, 5)
2. Позитивный тест, равнобедренный (3, 4, 4)
3. Позитивный тест,...
Sanity-check
Набрал больше
8 баллов?
Круто!
Тестовое покрытие
Покрытие (coverage) – метрика, применяемая для оценки
полноты/качества тестов.
Зависит от выбранной техн...
Критерии выбора тестов
Протестировать все – невозможно, даже 100% покрытие не
обеспечивает 100% тестирования.
Чтобы протес...
Почему нельзя
протестировать все
Проверить все допустимые значения каждой переменной на
входе. Реально ли?
Пример: функция...
Почему нельзя
протестировать все
А если число 64-битное?
264=232
*232 =232
* 6 минут
Проверка займет ~ 49 000 лет
Пример неуловимого бага
Критерии выбора тестов
Задача:
составить минимальный набор тестов,
обеспечивающий максимальное
покрытие.
Критерии выбора тестов
Классы критериев
• Критерии черного ящика/Функциональные критерии
• Критерии белого ящика/Структурн...
Критерии черного ящика
• Классы эквивалентности
• Анализ граничных значений
• Попарное тестирование (pairwise)
• Таблицы п...
Разбиение на классы эквивалентности
(Equivalence Partitioning)
Класс эквивалентности (КЭ) – множество входных данных
(доме...
Классы эквивалентности
Пример
N – кол-во посещенных лекций по тестированию
0 ≤ N ≤ 1– автомат, незачет
2 ≤ N < 5 – сдает з...
Разбиение на классы
эквивалентности
Классы эквивалентности:
• Допустимые (позитивные тесты)
• Недопустимые (негативные тес...
Разбиение на классы
эквивалентности
Чуть более сложный пример.
Программа получает на вход строку. Результатом работы
являе...
Разбиение на классы
эквивалентности
Строки четной и нечетной длины – разные КЭ!
Возможная реализация (найдите ошибку):
Разбиение на классы
эквивалентности
КЭ окружения/конфигурации
Приложение голосового поиска для iPhone надо
протестировать ...
Анализ граничных значений
Что делаем?
В тестовый набор добавляем значения границ КЭ и
значения, лежащие непосредственно вы...
Анализ граничных значений
Пример
КЭ допустимых значений:
[0;1]
[2;5)
[5]
КЭ недопустимых значений
(-∞, 0)
(5, +∞)
N - из к...
Анализ граничных значений
Какого рода ошибки обнаруживает:
• Выход за границы диапазона (найдите ошибку в коде
ниже, С++)
...
Пример из жизни
Анализ граничных значений
Какого рода ошибки обнаруживает:
• Проверка итераторов цикла
• Ошибки в операциях сравнения (“>”...
Анализ граничных значений
Границы могут быть нефункциональными:
• Максимально допустимый размер файла для отправки по
эл. ...
Метод всех пар
(Pairwise testing)
Что делать, если входных параметров много и невозможно
протестировать все комбинации зна...
Метод всех пар
(Pairwise testing)
Номер ОС Браузер Яндекс.Элементы
1 Win 7 IE Да
2 Win 8 IE Да
3 Vista IE Да
4 Win 7 Firef...
• Критерий выбора тестов – проверка всех
комбинаций значений для любой пары входных
параметров
• Предпосылки:
• “Большинст...
Метод всех пар
(Pairwise testing)
Номер ОС Браузер Яндекс.Элементы
1 Win 7 IE Да
2 Win 8 IE Да
3 Vista IE Да
4 Win 7 Firef...
Метод всех пар
(Pairwise testing)
Номер ОС Браузер Yandex
1 Win 7 IE Да
3 Vista IE Да
5 Win 8 Firefox Да
8 Win 8 Chrome Да...
Метод всех пар
(Pairwise testing)
• Пример
• система с 75 параметрами yes/no
• Полный перебор:
• 275 = 37 778 931 862 957 ...
• Факторы, влияющие на результаты применения (и
применимость) метода:
• Степень зависимости между параметрами конкретной
с...
Таблицы решений
Таблица принятия решений - таблица, описывающая логику
работы системы для различных комбинаций начальных
у...
Таблицы решений
Пример
Таблицы решений
Пример
Таблица принятия решений для avia.mail.ru
Пр-ло 1 Пр-ло 2 Пр-ло 3 Пр-ло 4 Пр-ло 5 Пр-ло 6 Пр-ло 7 П...
Диаграммы состояний
Диаграмма состояний – ориентированный граф, в
котором вершины обозначают состояния, а дуги
показывают ...
Методы белого ящика
На основе:
• Потока управления
• Потока данных
Control-flow diagram
Граф потока управления - множество всех возможных путей
исполнения программы, представленное в виде г...
Control-flow diagram
Покрытие всех ветвей графа потока управления
Тестовый набор удовлетворяет критерию покрытия ветвей по...
Control-flow diagram
Покрытие всех путей графа потока управления (комбинация
условий)
Тестовый набор удовлетворяет критери...
Data-flow diagram
Граф потока данных – это граф, на котором показано движение
значений данных от их источников через преоб...
Data-flow diagram
Инструкция, в которой используется некоторая переменная,
называется ее использованием (use). Инструкция,...
Data-flow diagram
Вычисление НОД
использование
определение
Data-flow diagram
Определение b
Использование b
Пример du-путей для переменной a:
0-3, 0-6, 0-7, 0-7’…
Code-coverage
&Unit-testing
• Покрытие операторов (== строк кода)
• Покрытие ветвей
• Покрытие комбинаций
IEEE Unit Testin...
Code-coverage &
Unit-testing
Покрытие 100% инструкции (операторов) == покрытие всех строк кода
Тестовый набор: a==6, b==‘H...
Code-coverage&
Unit-testing
Покрытие 100% ветвей:
Тестовый набор: (a==6, b==‘Hello’) (a==4, b==‘Goodbye’)
Code-coverage&
Unit-testing
100% покрытие инструкций и ветвей – необходимый, но не достаточный
критерий полноты тестирован...
Резюме
Комбинируйте техники тестирования
Мутационные критерии
Мутация – применение к исходному коду программы 1 оператора
мутации.
Операторы мутации:
- удаление оп...
Мутационные критерии
Мутация – применение к исходному коду программы 1 оператора
мутации.
Операторы мутации:
- удаление оп...
Особенности веба
• Когда мы видим ошибку со стороны клиента, то мы видим симптом
ошибки, но не ее саму. (Саджест не работа...
Особенности веба
Уязвимости:
• Sql-инъекции
• JS-инъекции
• XSS
• …
Кодировки
Материалы
1. Lee Copeland "A Practitioner'S Guide To Software Test Design“
2. Rex Black «Advanced Software Testing», Vol.3...
Спасибо за внимание
Развенская Ксения, k.razvenskaya@corp.mail.ru
Тестирование весна 2013 лекция 2
Upcoming SlideShare
Loading in …5
×

Тестирование весна 2013 лекция 2

660 views
432 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
660
On SlideShare
0
From Embeds
0
Number of Embeds
11
Actions
Shares
0
Downloads
11
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Тестирование весна 2013 лекция 2

  1. 1. Тестирование для разработчиков Лекция 2. Критерии выбора тестов. Развенская Ксения
  2. 2. В предыдущих сериях Качество – совокупность характеристик, определяющих насколько продукт хорош с точки зрения заинтересованных лиц. Тестирование - техническое исследование, которое проводится с целью предоставить заинтересованным лицам информацию о качестве тестируемого продукта. Тестирование на стадии разработки – сокращает время и риски.
  3. 3. В предыдущих сериях Техники тестирования • На основе спецификации (Specification-based) • На основе выбора входных данных/Доменное (Input Domain- based) • На основе кода (Code-based) • Поток управления (control-flow) • Поток данных (data-flow) • На основе модели (Model-based) • Конечный автомат • Таблица принятия решений • Формальная спецификация • На основе интуиции и опыта • Ad-hoc • Исследовательское • Прогнозирование ошибок • … + комбинации
  4. 4. План 1. Sanity-check 2. Тестовое покрытие 3. Критерии покрытия 4. Критерии выбора тестов
  5. 5. Sanity-check Программа принимает на вход 3 целых числа. Эти значения интерпретируются как длины сторон треугольника. Программа должна вывести сообщение о том, каким является заданный треугольник: разносторонним, равнобедренным или равносторонним.
  6. 6. Sanity-check 1. Позитивный тест, разносторонний (3, 4, 5) 2. Позитивный тест, равнобедренный (3, 4, 4) 3. Позитивный тест, равносторонний (3, 3, 3) 4. Перестановки п.2 (3, 4, 4) (3, 4, 3) (4, 4, 3) 5. Негативный, одна сторона – 0 (3, 4, 0) 6. Негативный, все нули (0, 0, 0) 7. Негативный, отрицательное значение (3, 4, -1) 8. Не треугольник a+b=c (1, 2, 3) 9. Перестановки п. 8 (1, 2, 3) (3, 2, 1) (1, 3, 2) 10. Не треугольник a+b<c (1, 2, 4) 11. Перестановки п. 10 (1, 2, 4) (4, 2, 1) (1, 4, 2) 12. Дробные значения (3,5; 4,5; 5,5) 13. 2 аргумента / или не числа 14. Был ли указан ожидаемый результат для негативных тестов?
  7. 7. Sanity-check Набрал больше 8 баллов? Круто!
  8. 8. Тестовое покрытие Покрытие (coverage) – метрика, применяемая для оценки полноты/качества тестов. Зависит от выбранной техники тестирования и может измеряться, например: • В процентах покрытой функциональности (например, по спецификации) • В количестве покрытых строк кода (в % от общего кол-ва строк) • В процентах покрытых ветвей в графе потока управления …
  9. 9. Критерии выбора тестов Протестировать все – невозможно, даже 100% покрытие не обеспечивает 100% тестирования. Чтобы протестировать все, мы должны: • Проверить все возможные значения каждой входной переменной • Проверить все возможные комбинации значений переменных • Проверить каждую конфигурацию ПО и оборудования, а также конфигурации серверов, которые мы не контролируем • Протестировать взаимодействие с другими программами, работающими параллельно с нашей …
  10. 10. Почему нельзя протестировать все Проверить все допустимые значения каждой переменной на входе. Реально ли? Пример: функция, вычисляющая квадратный корень из 32-битного числа без знака. Сколько значений мы должны проверить? 232 значений (4 294 967 296) У Дага Хоффмана автоматизированная проверка всех валидных значений заняла 6 минут.
  11. 11. Почему нельзя протестировать все А если число 64-битное? 264=232 *232 =232 * 6 минут Проверка займет ~ 49 000 лет
  12. 12. Пример неуловимого бага
  13. 13. Критерии выбора тестов Задача: составить минимальный набор тестов, обеспечивающий максимальное покрытие.
  14. 14. Критерии выбора тестов Классы критериев • Критерии черного ящика/Функциональные критерии • Критерии белого ящика/Структурные критерии • Мутационные критерии
  15. 15. Критерии черного ящика • Классы эквивалентности • Анализ граничных значений • Попарное тестирование (pairwise) • Таблицы принятия решений • Диаграммы состояний
  16. 16. Разбиение на классы эквивалентности (Equivalence Partitioning) Класс эквивалентности (КЭ) – множество входных данных (доменов), для которых, как мы ожидаем, поведение системы/модуля будет одинаковым. Все значения из одного КЭ эквивалентны с точки зрения тестирования: • Если один тест-кейс из КЭ обнаруживает баг, то все остальные тоже его обнаружат • Если один тест-кейс из КЭ не обнаруживает баг, то остальные тоже не обнаружат Критерий покрытия – каждый класс должен быть представлен как минимум одним тестом. Гипотеза – кейсы, соответствующие некоторым КЭ, обрабатываются некорректно.
  17. 17. Классы эквивалентности Пример N – кол-во посещенных лекций по тестированию 0 ≤ N ≤ 1– автомат, незачет 2 ≤ N < 5 – сдает зачет N = 5 – автомат, зачет Классы эквивалентности допустимых значений: [0;1] [2;5) [5] Тестовый набор: (0, 3, 5)
  18. 18. Разбиение на классы эквивалентности Классы эквивалентности: • Допустимые (позитивные тесты) • Недопустимые (негативные тесты) • КЭ окружения/конфигурации КЭ недопустимых значений (-∞, 0) (5, +∞) N - из множества вещественных чисел N - NaN Для значений из недопустимых КЭ ожидаем получить корректное сообщение об ошибке. Тестовый набор (-10, 42, 2.7, ‘voloshin’)
  19. 19. Разбиение на классы эквивалентности Чуть более сложный пример. Программа получает на вход строку. Результатом работы является перевернутая строка. КЭ: • Пустая строка • Длина == 1 символ • >1 символа палиндром • >1 символа не палиндром Тестовый набор: • <пустая строка> • ‘а’ • ‘ререферер’ • ‘technopark’
  20. 20. Разбиение на классы эквивалентности Строки четной и нечетной длины – разные КЭ! Возможная реализация (найдите ошибку):
  21. 21. Разбиение на классы эквивалентности КЭ окружения/конфигурации Приложение голосового поиска для iPhone надо протестировать на разных версиях iOs + 3G, WiFi, без интернета. Возможные конфигурации также разбиваются на КЭ. Если переменные независимые (как в случае с сетью и версиями ОС) – необязательно проверять все комбинации, достаточно проверить их попарно: • iOs 6 + 3G • iOs 5 + WiFi • iOs 5 или 6 + откл. интернет
  22. 22. Анализ граничных значений Что делаем? В тестовый набор добавляем значения границ КЭ и значения, лежащие непосредственно выше и ниже границ + в набор добавляем предельные значения для используемых типов данных, строки предельной и нулевой длины, етс. Кроме того, желательно добавить значения, лежащие очень близко к границам.
  23. 23. Анализ граничных значений Пример КЭ допустимых значений: [0;1] [2;5) [5] КЭ недопустимых значений (-∞, 0) (5, +∞) N - из класса рациональных чисел N - NaN Добавим в тестовый набор значения из границ диапазона + добавим значения, выходящие за тип int. Итоговый тестовый набор: (-1, 0, 1, 2, 3, 4, 5, 6, MaxInt, MaxInt+1, MaxInt+0.001, MaxInt- 1, MaxInt-0.001, MinInt, …, -42, 100, 2.7, ‘voloshin’, <оч длинная строка>, <пустая строка>)
  24. 24. Анализ граничных значений Какого рода ошибки обнаруживает: • Выход за границы диапазона (найдите ошибку в коде ниже, С++) Hint: integer (32 bit) -2 147 483 648 .. 2 147 483 647 Что будет выведено в консоль? Подробно тут: http://en.wikipedia.org/wiki/Two%27s_complement
  25. 25. Пример из жизни
  26. 26. Анализ граничных значений Какого рода ошибки обнаруживает: • Проверка итераторов цикла • Ошибки в операциях сравнения (“>” вместо “>=” и тд)
  27. 27. Анализ граничных значений Границы могут быть нефункциональными: • Максимально допустимый размер файла для отправки по эл. почте. • Сервер должен обрабатывать 100500 запросов в секунду
  28. 28. Метод всех пар (Pairwise testing) Что делать, если входных параметров много и невозможно протестировать все комбинации значений из разных КЭ? Пример: 1) Спутник должен корректно устанавливаться на: Windows 8, Windows 7, Win Vista, с вкл. UAC, выкл. UAC, с установленными на них антивирусами: Касперский, Eset, NOD32, McAffee. В браузеры IE7, IE8, IE9, IE10, Opera 11, 12, Chrome 22, Firefox 19, 20. С установленными Яндекс.Элементами и без Яндекс.Элементов. Поверх установленного Спутника и на новую машину. Итого: - 3 ОС - 2 конфигурации UAC - 4 конфигурации антивирусов - 9 браузеров - 2 конфигурации ПО от конкурентов - 2 версии Спутника 864 комбинации!
  29. 29. Метод всех пар (Pairwise testing) Номер ОС Браузер Яндекс.Элементы 1 Win 7 IE Да 2 Win 8 IE Да 3 Vista IE Да 4 Win 7 Firefox Да 5 Win 8 Firefox Да 6 Vista Firefox Да 7 Win 7 Chrome Да 8 Win 8 Chrome Да 9 Vista Chrome Да 10 Win 7 IE Нет 11 Win 8 IE Нет 12 Vista IE Нет 13 Win 7 Firefox Нет 14 Win 8 Firefox Нет 15 Vista Firefox Нет 16 Win 7 Chrome Нет 17 Win 8 Chrome Нет 18 Vista Chrome Нет
  30. 30. • Критерий выбора тестов – проверка всех комбинаций значений для любой пары входных параметров • Предпосылки: • “Большинство ошибок проявляются либо при конкретных значениях одного параметра, либо взаимным влиянием значений двух параметров.” ("The Combinatorial Design Approach to Automatic Test Generation" [Telcordia 1997]) • Оптимальный компромисс “трудозатраты vs. покрытие” между полным перебором и проверкой по каждому параметру независимо. Метод всех пар (Pairwise testing)
  31. 31. Метод всех пар (Pairwise testing) Номер ОС Браузер Яндекс.Элементы 1 Win 7 IE Да 2 Win 8 IE Да 3 Vista IE Да 4 Win 7 Firefox Да 5 Win 8 Firefox Да 6 Vista Firefox Да 7 Win 7 Chrome Да 8 Win 8 Chrome Да 9 Vista Chrome Да 10 Win 7 IE Нет 11 Win 8 IE Нет 12 Vista IE Нет 13 Win 7 Firefox Нет 14 Win 8 Firefox Нет 15 Vista Firefox Нет 16 Win 7 Chrome Нет 17 Win 8 Chrome Нет 18 Vista Chrome Нет
  32. 32. Метод всех пар (Pairwise testing) Номер ОС Браузер Yandex 1 Win 7 IE Да 3 Vista IE Да 5 Win 8 Firefox Да 8 Win 8 Chrome Да 9 Vista Chrome Да 11 Win 8 IE Нет 13 Win 7 Firefox Нет 15 Vista Firefox Нет 16 Win 7 Chrome Нет • 9 тестов вместо 18-ти
  33. 33. Метод всех пар (Pairwise testing) • Пример • система с 75 параметрами yes/no • Полный перебор: • 275 = 37 778 931 862 957 161 709 568 • Метод всех пар: 28 !
  34. 34. • Факторы, влияющие на результаты применения (и применимость) метода: • Степень зависимости между параметрами конкретной системы • Распределение вероятности комбинаций значений параметров (5 существительных подряд!) • Выбор параметров и их проверяемых значений Метод всех пар
  35. 35. Таблицы решений Таблица принятия решений - таблица, описывающая логику работы системы для различных комбинаций начальных условий. Правило 1 Правило 2 … Условия Условие 1 Условие 2 … Действия Действие 1 Действие 2 … Критерий покрытия – как минимум один тест на столбец. Гипотеза – при некоторой комбинации условий, может выполниться неправильное действие. Или при некоторой комбинации условий не выполнится необходимое действие.
  36. 36. Таблицы решений Пример
  37. 37. Таблицы решений Пример Таблица принятия решений для avia.mail.ru Пр-ло 1 Пр-ло 2 Пр-ло 3 Пр-ло 4 Пр-ло 5 Пр-ло 6 Пр-ло 7 Пр-ло 8 Условия Выбран город откуда Да Да Нет Нет Да Да Нет Нет Выбран город куда Да Да Да Да Нет Нет Нет Нет Туда-обратно Да Нет Да Нет Да Нет Да Нет Действия Действие 1 ищем ищем ворнинг ворнинг ворнинг ворнинг ворнинг ворнинг
  38. 38. Диаграммы состояний Диаграмма состояний – ориентированный граф, в котором вершины обозначают состояния, а дуги показывают переходы между 2мя состояниями. Критерий (самый слабый) – покрытие всех состояний и всех переходов.
  39. 39. Методы белого ящика На основе: • Потока управления • Потока данных
  40. 40. Control-flow diagram Граф потока управления - множество всех возможных путей исполнения программы, представленное в виде графа (Википедия). Критерии покрытия: • Покрытие ветвей потока управления • Покрытие путей потока управления
  41. 41. Control-flow diagram Покрытие всех ветвей графа потока управления Тестовый набор удовлетворяет критерию покрытия ветвей потока управления, если при выполнении этого тестового набора управление хотя бы один раз проходит по каждому ребру графа потока управления. Тестовый набор (входные данные): (0,30) x = 17 - x x = 0 x>17 x == -13
  42. 42. Control-flow diagram Покрытие всех путей графа потока управления (комбинация условий) Тестовый набор удовлетворяет критерию покрытия путей потока управления, если его выполнение хотя бы один раз проходит по каждому возможному пути в графе потока управления ведущему от точки входа до точки завершения работы. Тестовый набор: (0, 30) (-13, 31) x = 17 - x x = 0 x>17 x == -13
  43. 43. Data-flow diagram Граф потока данных – это граф, на котором показано движение значений данных от их источников через преобразующие их процессы к потребителям в других объектах. Чтобы построить граф потока данных, сначала лучше построить граф потока управления.
  44. 44. Data-flow diagram Инструкция, в которой используется некоторая переменная, называется ее использованием (use). Инструкция, в которой определяется новое значение для некоторой переменной, называется ее определением (definition). du-путь — путь в графе потока управления, начинающийся с вершины, соответствующей инструкции, определяющей значение переменной, и заканчивающийся вершиной, соответствующей инструкции ее использования, и не содержащий вершин для инструкций определения этой переменной, кроме первой. Метрика покрытия использований (all-uses coverage) — доля покрытых использований всех переменных по отношению к количеству достижимых использований. Метрика покрытия du-путей (du-path coverage) — доля покрытых du-путей для всех переменных программы по отношению к достижимым du-путям.
  45. 45. Data-flow diagram Вычисление НОД использование определение
  46. 46. Data-flow diagram Определение b Использование b Пример du-путей для переменной a: 0-3, 0-6, 0-7, 0-7’…
  47. 47. Code-coverage &Unit-testing • Покрытие операторов (== строк кода) • Покрытие ветвей • Покрытие комбинаций IEEE Unit Testing Standart: покрыто 100% операторов и 100% ветвей.
  48. 48. Code-coverage & Unit-testing Покрытие 100% инструкции (операторов) == покрытие всех строк кода Тестовый набор: a==6, b==‘Hello’
  49. 49. Code-coverage& Unit-testing Покрытие 100% ветвей: Тестовый набор: (a==6, b==‘Hello’) (a==4, b==‘Goodbye’)
  50. 50. Code-coverage& Unit-testing 100% покрытие инструкций и ветвей – необходимый, но не достаточный критерий полноты тестирования. Пример: Любые 2 протестированных значения a и b обеспечивают 100% покрытие кода. При этом не обнаруживает ошибку. Division by Zero.
  51. 51. Резюме Комбинируйте техники тестирования
  52. 52. Мутационные критерии Мутация – применение к исходному коду программы 1 оператора мутации. Операторы мутации: - удаление определенной инструкции - добавление новой инструкции - замена переменных в выражениях на другие переменные того же типа или на константные выражения того же типа - замена операторов арифметических действий +, –, *, / друг на друга - замена логических операций друг на друга - … Программа, получаемая из тестируемой применением одного оператора мутации, называется мутантом. Метрика полноты тестов – доля обнаруженных мутантов. Если все мутанты обнаружены – программа корректна и тесты полны.
  53. 53. Мутационные критерии Мутация – применение к исходному коду программы 1 оператора мутации. Операторы мутации: - удаление определенной инструкции - добавление новой инструкции - замена переменных в выражениях на другие переменные того же типа или на константные выражения того же типа - замена операторов арифметических действий +, –, *, / друг на друга - замена логических операций друг на друга - … Программа, получаемая из тестируемой применением одного оператора мутации, называется мутантом. Метрика полноты тестов – доля обнаруженных мутантов. Если все мутанты обнаружены – программа корректна и тесты полны.
  54. 54. Особенности веба • Когда мы видим ошибку со стороны клиента, то мы видим симптом ошибки, но не ее саму. (Саджест не работает, возможно отключен js) • Ошибки часто зависят от среды и могут возникать не во всех средах. (Пример – медленный канал) • Ошибки могут быть в коде или в конфигурации. (Пример: ошибка в конфиге nginx) • Ошибки могут постоянно находиться на любом из нескольких уровней (клиент, сервер, сеть?).
  55. 55. Особенности веба Уязвимости: • Sql-инъекции • JS-инъекции • XSS • … Кодировки
  56. 56. Материалы 1. Lee Copeland "A Practitioner'S Guide To Software Test Design“ 2. Rex Black «Advanced Software Testing», Vol.3 3. Борис Бейзер «Тестирование черного ящика» 4. http://www.uchi-it.ru/7/10/soder.html 5. http://www.pairwise.org/tools.asp 6. http://www.developsense.com/pairwiseTesting.html 7. http://www.intuit.ru/department/se/testing/3/2.html
  57. 57. Спасибо за внимание Развенская Ксения, k.razvenskaya@corp.mail.ru

×