Анастасия Бордонос - Проектирование тестов

Preview:

DESCRIPTION

 

Citation preview

Бордонос Анастасия

ШТБС. Проектирование тестов.

Инженер по контролю качества

Инструкция — наше все

С чего начать, или инструкция тестировщика

1.  Скрининг

“Фича не должна стать неприятным сюрпризом”

С чего начать, или инструкция тестировщика

2. Анализ 2.1 Зачем? 2.2 Как? 2.3 Где?

С чего начать, или инструкция тестировщика

3. Описание + тест план «Истина где-то рядом»

С чего начать, или инструкция тестировщика 5. Рассказ фичи “…в третий раз объясняю. Сам уже понял. А

они не понимают...”

С чего начать, или инструкция тестировщика

6. Ревью

“Лучше перестраховаться, чем … облажаться”

Основные определения

1. Тест-план (Test Plan) – полный набор тестов.

2. Тест-сет (Test set) - совокупность тестов(тестовых случаев), собранных вместе с целью протестировать определенные процессы системы.

3. Тест (Test Case) - совокупность шагов, конкретных условий и параметров, необходимых для проверки реализации тестируемой функции или её части.

Подходы к 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

Equivalence Class Testing Классы эквивалентности

Эквивалентные тесты – тесты приводящие к одинаковому результату. Пример: прием на работу 0 – 16: не принимать 16 – 18: принимать на полставки 18 – 55: принимать на полную ставку 55 – …: не принимать Важно: 1.  Поиск классов эквивалентности – субъективный процесс 2.  Достаточно 1-2 проверки на класс

Поиск классов эквивалентности

•  Не забывать заведомо неверные значения (для чисел обычно сразу +2 класса < и > диапазона)

•  Важно четко определять и проанализировать диапазон входных данных (любой поддиапазон – отдельный класс эквивалентности).

•  Выявление группы переменных, совместно участвующих в вычислениях (например треугольник, класс допустимых значений когда сумма 2х сторон > 3ей, + 2 класса < >)

•  По возможности выходные данные, тоже разбиваются на классы

Boundary Value Testing Пример: прием на работу

0 – 16: не принимать 16 – 18: принимать на полставки 18 – 55: принимать на полную ставку 55 – …: не принимать

Правильный вариант: 0 – 15: не принимать 16 – 17: принимать на полставки 18 – 54: принимать на полную ставку 55 – …: не принимать

Boundary Value Testing

Что еще сказать про граничные значения? Канер просил помнить про: -числовые границы -границы множеств -границы циклов -границы структур данных -границы пространства (многомерные объекты) -границы времени -границы конфигураций

Таблица Майерса

Задача: Есть программа, которая складывает 2 числа, каждое из которых может принимать следующие значения: -99..99 Нам требуется написать оптимально число тестов для тестирования данной программы. Всего вариантов: 199*199=39,601

Переменная  Допустимые  значения  

Недопустимые  значения  

Граничные  и  особые  значения  

Первая  цифра   -­‐99..99  >99  <-­‐99  

99,  100  -­‐99,  -­‐100,  0  

Вторая  цифра   -­‐99..99  >99  <-­‐99  

99,  100  -­‐99,  -­‐100,  0  

Сумма   -­‐198..198  >198  <-­‐198  

(-­‐99,-­‐99)  (-­‐99,  99)  (99,-­‐99)  (99,  99)  

Таблица Майерса

Построение таблицы на практике:

1. Вряд ли у вас будет набор полей с полной спецификацией допустимых и недопустимых значений.

2. Начните с простого перечисления полей ввода 3. В конце концов, таблица должна содержать все значения

4. На практике очень редко встречаются полные таблицы, хотя они являются достаточно важным элементом тестирования.

Domain Analysis Testing

1. Разбиение областей значений на подобласти

2. Выбор конкретных значений из подобластей

3. Сочетание выбранных значений разных параметров

А1    

А2                                        А3  

a1  

a2  

a3  

b1  

a1   a1  

b2  b3  

a3  b1   b2   b3   b3  a1  

b2  a1  

a3   b2  a3   b1  

В1  В2  

В3  

Pairwise Testing

1. Не тестировать вообще? 2. Протестировать все? 3. Выбрать 1-2 теста и надеяться на лучшее? 4. Выбрать наиболее простые для создания тесты? 5. Сделать список комбинаций параметров и выбрать несколько первых или рандомное подмножество?

6. По волшебству, выбрать специально подобранные, довольно небольшое подмножество, который находит очень много дефектов

Pairwise Testing

1.  Если система имеет 4 разных параметра и каждый из них принимает 3 разных значения, то число комбинаций будет 3^4 = 81. Возможно охватить все попарные комбинации всего в 9 тестов.

2.  Если система имеет 13 разных параметров и каждый из них принимает 3 разных значения, то число комбинаций будет 3^13 = 1594323. Возможно охватить все попарные комбинации всего в 15 тестов.

3.  Если система имеет 20 разных параметров и каждый из них принимает 10 разных значений, то число комбинаций будет 10^20. Возможно охватить все попарные комбинации всего в 180 тестов.

Decision Table Testing

Правило  1   Правило  2   …   Правило  p  

Сущность      

Ввод  данных  студента   Нет   Нет  

 Да    

   

Ввод  ID  студента   Нет    

Да     Нет    

 

Выбор  «Изменить»   Нет    

Нет    

Да    

   

Выбор  «Удалить»   Нет    

Да    

Нет    

   

   

Действия      

Данные  изменились   Нет    

Нет    

Да    

   

Данные  удалились   Нет    

Да    

Нет    

   

…      

Действие-­‐n      

State-Transition Testing

Резервация авиабилетов 1.  "Made" (сделана) 2.  "Paid" (оплаченный) 3.  "Ticketed" (обилечен) 4.  "Used" (использованный) 5.  "Cancelled By Customer” 6.  "Cancelled NonPay”

State-Transition Testing

Use case testing Тестирование на основе пользовательских сценариев

+ Хорошо подходит для тестирования интерфейсов -  Могут быть пропущены не очевидные сценарии использования.

Use case test системы регистрации: 1.  Оставьте поля ввода пустыми, нажмите кнопку «ОК». Вывелись сообщение

об обязательности полей. 2.  Введите в поле «Логин» недопустимые символы. Нажмите кнопку «ОК».

Вывелось сообщение «Недопустимые символы в логине». 3.  Введите в поле «Пароль 3 символа». Нажмите кнопку «ОК». Вывелось

сообщение «Пароль может содержать минимум 8 символов» 4.  Введите корректные данные в поля. Нажмите кнопку «ОК». Регистрация

прошла успешно

Parameters based testing Тестирование на основе параметров

На основе знаний о задаче и системе выявляется набор значимых параметров. Пример «Кружка». Параметры: 1.  Содержимое: вода, спирт, чай, крупа, сахар 2.  t содержимого: 0C, 100C, -20C, 70 3.  Время теста(сек): 1,10,60,3600, 86400 4.  Доп. Действия: нагрев, охлаждение

Перебор параметров

1.  Ручной

Перебор параметров

2.  Перебор параметров относительно фиксированных значений.

Пример «Кондиционер»: •  Температура •  Мощность •  Таймер Стандартный режим работы: Т = 20, P = 2000 Вт, t = 20 мин

Перебор параметров

3.  Иерархическая проверка параметров.

Пример: Расчет площади треугольника по формуле полупериметра. A – считывание входных данных B – расчет периметра С – расчет площади A(), B(A), C(B) - функции

Это интересно!

Magic number

Value   Hex   DescripXon  0   0x00   Zero.  False.  NULL.  

4   0x04   4.  Размер  32  bit  integer  

37   0x25   Численное  значение  для  ASCII  символа  '%',  который  является  управляющим  последовательность  ю  в  URL-­‐адресах  и  в  C  runime  library.  

38   0x26   Численное  значение  для  ASCII  символа  '&'  ,  который  часто  используется  в  атаках  на  сайт.  

48   0x30   Численное  значение  для  ASCII  символа  '0'  (zero).  

97   0x61   Численное  значение  для  ASCII  символа    'a'.  

204   0xCC   x86  assembly  instrucion,  если  выполняется,  то  останавливает  процесс("int  3").  

Error Guessing Тестирование на основе предугадывания ошибки

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

Error Guessing Тестирование на основе предугадывания ошибки

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

Тест кейс

Свойства 1.  Простота (Понятность) 2.  Воспроизводимость 3.  Обоснованность

Пример: Title(название): кружка + кипяток Description(цель): проверяем возможность хранить в кружке воду в течение времени остывания. Начальное состояние: пустая, сухая кружка комнатной температуры. Действие: Наливаем 0.5л кипятка в чашку Что проверяем: что вода остается в кружке, по мере остывания воды Ожидаемый результат : вода остается в кружке

Тест кейс. Статусы теста

Как заводить баги

1. Не откладывайте на завтра 2. Разберитесь в баге и локализуйте проблему

3. Подумайте, где подобный баг может встретиться ещё, покройте это тестами

4. В title кратко опишите суть проблемы 5. В тикете сделайте подробное описание бага, приложите скрин

6. Опишите, как его воспроизвести

У багов тоже есть чувства

Жизненный цикл бага Обнаружен  

(Open)  

Закрыт  (Closed)  

Возвращен  (Open)  

Ретест  (Open)  

Отвергнут  (Will  not  fix)  

Исправлен  (Fixed)  

Принят  (Open)  

Оценка тестирования

1. Покрытие требований (Requirements Coverage)

Requirements Traceability Matrix

FuncXonal  Requirements   Test  Cases  

Приложение  должно  принимать  на  вход  3  целых  числа  

OQ,  Test  Case  1:  На  вход    параметров  не  подаем  OQ,  Test  Case  2:  На  вход    2  параметра  …    

Приложение  должно  уметь  определять,  является  ли  треугольник  равнобедренным  

OQ,  Test  Case  5:  Проверка  треугольника  на  равнобедренность    

Приложение  должно  уметь  определять,  является  ли  треугольник  равносторонним  

OQ,  Test  Case  6:  Проверка  треугольника  на  равносторонность  

Приложение  должно  выдавать  ошибку  в  ином  случае  

OQ,  Test  Case  7:  Произвольный  треугольник  OQ,  Test  Case  8:  Входные  данные  –  не  треугольник  …    

Оценка тестирования

2. Покрытие кода (Code Coverage)

•  покрытие операторов ; •  покрытие условий ; •  покрытие путей ; •  покрытие функций ; •  покрытие вход/выход ; •  покрытие значений параметров .

Code Coverage

Вопросы, замечания, помидоры?

Бордонос Анастасия Инженер по контролю качества

Спасибо за внимание!

Recommended