Вопросы и задания для самопроверки
1. У вас есть 5 функциональностей, и отведенного времени не хватит, чтобы тщательно протестировать их все. На основании чего вы расставите приоритеты в тестировании? Подсказка: помните о счастье пользователя.
2. Петров нашел 50 багов до релиза, но пропустил 5 багов, которые были найдены пользователем. Сидоров нашел 12 багов до релиза, не пропустив ни одного. Кому дать премию?
3. Как должен поступить менеджер, чтобы решить вопрос с проблемой оплаты?
4. Придумайте аналогию, демонстрирующую разницу между ОА и тестированием.
ИСКУССТВО СОЗДАНИЯ ТЕСТ-КЕЙСОВ
•ЧТО ТАКОЕ ТЕСТ-КЕЙС
• СТРУКТУРА ТЕСТ- КЕЙСА
• ИСХОД ИСПОЛНЕНИЯ ТЕСТ-КЕЙСА • ПОЛЕЗНЫЕ АТРИБУТЫ ТЕСТ-КЕЙСА
• ТЕСТ-КЕЙСЫ, УПРАВЛЯЕМЫЕ ДАННЫМИ • ПОДДЕРЖИВАЕМОСТЬ ТЕСТ-КЕЙСА
• СКОЛЬКО ОЖИДАЕМЫХ РЕЗУЛЬТАТОВ МОЖЕТ БЫТЬ
В ОДНОМ ТЕСТ-КЕЙСЕ?
• ПРОБЛЕМНЫЕ ТЕСТ-КЕЙСЫ
• ТЕСТ-КОМПЛЕКТЫ
• СОСТОЯНИЯ ТЕСТ-КЕЙСА
• А НАПОСЛЕДОК Я СКАЖУ
М |
ы исполняем тестирование, т.е. непосредственно "рвем на куски" ПО, руководствуясь нашей профессиональной документацией — тест-кейсами(test case). Поговорим о формальной стороне эффективного тест-кейса и коснемся объединений тест-кейсов — тест-комплектов(test suite).
Что такое тест-кейс
Допустим, что перед сборами на рыбалку мы составили следующий список:
1. Удочка.
2. Коробка с запасными поплавками и леской.
3. Банка с червями.
35
|
Искусство создания тест-кейсов 37
|
|
4. Стакан граненый.
5. Бутылка "Абсолюта".
6. Огурец соленый.
Затем при деятельном участии жен, детей и котов мы наконец собрались в дорогу и перед выходом взяли список и проверили рюкзак на наличие каждого из 6 предметов.
Так вот.
Каждая из 6 строк списка — это и есть тест-кейс(test case).
Сам список является тест-комплектом(test suite).
Процесс придумывания и написания каждой строки списка называется созданием тест-кейса (test case generation).
Процесс проверки рюкзака на наличие определенного предмета — исполнением тест-кейса (test case execution).
Test case можно перевести как "тестируемая ситуация"и как "оболочка для теста",оба перевода легитимны и представляют собой идеальный союз для понимания места и значения тест-кейсов в этом жестоком мире.
Главная и неотъемлемая часть тест-кейса — это ожидаемый результат,например "огурец соленый", т.е. тест-кейс может полностью состоять только из ожидаемого результата.
Структура тест-кейса
Проблема в том, что для нахождения бага (что является смыслом любого тестирования) кроме ожидаемого нам нужен и фактический результат. В случае с огурцом мы просто заглядываем в рюкзак и смотрим, на месте ли этот "фрукт". В случае же тестирования ПО, как правило, необходима инструкция, как прийтик фактическому результату.
|
|
Пример
Допустим, тестировщику А. Боброву, который только что начал работать в нашем стартапе www.testshop.rs, дали для исполнения следующий тест-кейс:
"Оплата может быть произведена картой VISA". Сразу же возникает по крайней мере две проблемы:
38
Тестирование Дот Ком. Часть 1
• для исполнения тест-кейса нужна тестировочная карта VISA, которой у него нет;
• он не знает, как проверить, был ли действительно осуществлен платеж, даже если бы у него была карта.
Единственное, что более или менее понятно, — это процесс покупки в интернет-магазине (найти товар, добавить в корзину и т.д.), что в данной ситуации помогает немного. Естественно, что никакого тестирования не будет, так как пробиться к фактическому результату так же трудно, как доказать инспектору ГАИ, что брать взятки аморально.
Пример
Допустим, тестировщику А. Боброву, который только что начал работать в нашем стартапе www.testshop.rs, дали для исполнения следующий тест-кейс: Шаги:
1. Открой www.main.testshop.rs
2. Введи в поле "Имя пользователя": "testuser1"
|
|
3. Введи в поле "Пароль": "pa$$wOrd"
4. Нажми кнопку "Войти"
5. Введи в поле "Поиск": "book117"
6. Нажми кнопку "Найти"
7. Кликни линк "Добавить в корзину"
8. Кликни линк "Корзина"
9. Кликни линк "Оплатить"
10. Выбери из меню "Вид карты": "VISA"
11. Введи в поле "Номер карты": "9999-5148-2222-1277"
12. Введи в поле "Действительна до": "12/07"
13. Введи в поле "CW2": "778"
14. Нажми кнопку "Завершить заказ"
15. Запиши номер заказа__________
16. Запроси базу данных:
select result from cc_transaction where id = <номер заказа >;
Ожидаемый результат: "10"
Очевидно, что тест-кейс из последнего примера вполне может быть исполнен любым, кто знает, как напечатать "pa$$wOrd".
В последнем примере (который мы назовем тест-кейс с картой) к ожидаемому результату (ОР)добавились шаги(steps), которые должны привести нас к фактическому результату (ФР),необходимому, чтобы узнать, есть баг или нет. Совокупность шагов называется процедурой(procedure).
Если провести аналогию, то
• шаги— это ступеньки лестницы;
Искусство создания тест-кейсов
39
• ожидаемый результат— это некий предмет, который мы должны найти,если поднимемся по этим ступенькам;
|
|
• фактический результат —это то, чтомы реально нашли
после того, как поднялись по этим ступенькам.
Постановка мозгов
Исходя из основной компьютерной концепции ввод/вывод (на языке оригинала — input/output):
• шаги — это инструкция по вводу;
• исполнение шагов — это ввод;
• ожидаемый результат — это ожидаемый вывод;
• фактический результат — это фактический вывод.
Исполнение тест-кейса завершается сравнением вывода фактического и вывода ожидаемого.
Исход исполнения тест-кейса (test case result)
Каждый тест-кейс, исполнение которого завершено, дает нам одно из двух:
1. Положительный исход(PASS), если ФР равен ОР,
либо
2. Отрицательный исход(FAIL), если ФР не равен ОР: най
ден баг!
Иногда возникает ситуация, когда мы заблокированы (test case execution is blocked), так как не можем пройти ВСЕ шаги тест-кейса. Например, мы не можем продвинуться дальше, если кнопки "Завершить заказ" из шага 14 не существует на соответствующей веб-странице. В таком случае мы рапортуем баг (в данном случае баг об отсутствии кнопки "Завершить заказ") и откладываем исполнение тест-кейса до устранения бага.
Полезные атрибуты тест-кейса
УНИКАЛЬНЫЙID (Unique ID)
Это необходимая вещь. Тест-кейс без ID — это то же самое, что квартира без адреса или швейцарские часы без номера. ID должен быть уникальным в пределах не только документа, содержащего тест-кейс (об этом документе позже), но и всего департамента
40
Тестирование Дот Ком. Часть 1
качества. Рациональное обоснование: со временем появится необходимость вести статистику по тест-кейсам, обновлять, удалять или переносить в другой документ некоторые из них, прикрывать спину и т.д.
ПРИОРИТЕТ ТЕСТ-КЕЙСА (Test Case Priority)
Это важность тест-кейса. Важность отражается по шкале от 1 до п, где 1 — это высший приоритет, а п — это низший приоритет. Думаю, что рационально делать п = 4.
Допустим, тест-кейс, проверяющий, работает ли кнопка "Купить", будет 1-го приоритета, а тест-кейс, проверяющий цвет шрифта линка "Гостевая книга", будет 4-го приоритета. Концептуально, думаю, понятно.
Зачем это делается? Допустим, у нас есть два тест-кейса: один 1-го приоритета и другой — 3-го приоритета, оба тестируют некую функциональность А, и есть время для исполнения только одного из них. Естественно, что мы выберем тест-кейс 1-го приоритета. Приоритезация тест-кейсов особо полезна при регрессивном тестировании, о котором мы не раз будем говорить.
Вопрос:Как присваиваются приоритеты?
Ответ:Конечно, все зависит от компании, но, как правило, автор тест-кейса просто решает, насколько жизненно важна, опреде-ляюща и критична вещь, проверяемая данным тест-кейсом.
ИДЕЯ(IDEA)
Это описаниеконкретной вещи, проверяемой тест-кейсом (в дальнейшем эту конкретную вещь мы также будем называть "идея тест-кейса").
Пример
В тест-кейсе с картой ожидаемым результатом является значение "10" в колонке result строки с нашей транзакцией. Поймет ли, ЧТО мы тестируем, человек, который не знает, что программисты www.testshop.rs обозначают первую цифру результата транзакции индексом кредитной карты (где "1" — это VISA, "2" — MasterCard, "3" — Switch), а вторую — флагом успеха (где "О" — это успех, а "1" — ошибка) и соответственно "10" означает, что транзакция с картой VISA была успешной?
Дело в том, что "непосвященным" может стать даже автор тест-кейса, скажем, через месяц после написания, так как все в мире тленно и забываемо (кроме, конечно, первой школьной любви
Искусство создания тест-кейсов
41
Ани В.)- Поэтому в началетест-кейса следует написать на человеческом языке: "Оплата может быть произведена картой VISA", чтобы любой, кто возьмет этот тест-кейс в руки, не ломал голову, а сразу понял, что проверяется этим тест-кейсом.
ПОДГОТОВИТЕЛЬНАЯ ЧАСТЬ(SETUP and ADDITIONAL INFO)
Кулинарный рецепт, как правило, включает две части:
1. Список ингредиентов и количество/вес каждого из них;
2. Инструкция по тому, как жарить, парить и варить несчастных из пункта 1.
Первая часть рецепта нужна для того, чтобы повар мог знать заранее, видеть в одном местевсе необходимые составляющие блюда и иметь их под рукой, когда "настанет день и час". В общем выделение подготовительной части удобно, логично и практично.
В подготовительную часть тест-кейса могут включаться:
• данные о существующем эккаунте пользователя (legacy user account) или инструкции по созданию нового эккаунта (new user account);
• другие данные, используемые в тест-кейсе, например атрибуты используемой кредитной карты;
• запросы к базе данных (SQL queries), используемые в тест-кейсе;
• комментарии в помощь тестировщику, например о нюансах, которые могут встретиться при исполнении тест-кейса;
• другие вещи, облегчающие исполнениеи поддержкутест-кейса (о поддержке мы еще поговорим).
ИСТОРИЯ РЕДАКТИРОВАНИЯ(Revision History) Очень полезная вещь.
Пример
Допустим, у Макса Крылова живет попугай-жако Вася. Макс учит его хорошим фразам:
— "Вася хороший";
— "Amicus Plato, sed magis arnica Veritas" ("Платон мне друг, но истина дороже");
— "Beatles forever" («ВИА "Битлз" будет вечно жить в наших сердцах»).
42
Тестирование Дот Ком. Часть 1
Приходит друг Лежа и, пока Макс на правах радушного хозяина несется к ларькам станции метро "Юго-Западная" и обратно, учит альтернативной мудрости честно впитывающего знания Васю:
— "Все козлы";
— "Simia quantum similis turpissima bestia nobis!" ("Как похожа на нас мерзейшая тварь — обезьяна!");
— "Move bitch, get out the way" ("Уйди с дороги, противная").
В итоге после возвращения домой Макса встречает не добрый, милый попугайчик, а негативно настроенная машина, и вечером ему (Максу) придется доказывать своей жене, что это не он, а подлец Леха изменил лексикон бедолаги Василия.
Для того чтобы иметь сведения о рождении и истории развития каждого тест-кейса, мы ведем лаконичный журнал изменений, где отражаем: Кто? Что? Зачем? Когда? Почему?
Атрибуты истории редактирования:
• Created on <date> by <name> — Тест-кейс создан <дата> <кем>;
• Modified on <date> by <name> — Тест-кейс изменен <да-та> <кем>;
• Change — Что, зачем и почему было изменено. В наших примерах мы не печатаем само слово "change", а просто заполняем значение этого атрибута в поле справа от "Created on..." или "Modified on...".
Давайте создадим тест-кейс с картой, используя только что полученные знания по полезным атрибутам тест-кейса:
ТС ID/Priority | CCPG0001 | 1 | |
IDEA:Оплата может быть произведена картой VISA SETUP andADDITIONAL INFO: Эккаунт: testuser1/paSSwOrd Наименование товара: book117 Данные карты: Номер: 9999-5148-2222-1277 Окончание действия: 12/07 CVV2: 778 SQL1: select result from cc_transaction where id = <номер заказа>; | |||
Revision History | |||
Created on:11/17/2003 by О.Тарасов | Новый тест-кейс | ||
Искусство создания тест-кейсов
43
Execution part | |
PROCEDURE | EXPECTED RESULT |
1. Открой www.main.testshop.rs | > "10" |
2. Введи имя пользователя. | |
3. Введи пароль. | |
4. Нажми кнопку "Войти". | |
5. Введи наименование товара в поле | |
поиска. | |
6. Нажми кнопку "Найти". | |
7. Кликни линк "Добавить в корзину". | |
8. Кликни линк "Корзина". | |
9. Кликни линк "Оплатить". | |
10. Выбери вид карты. | |
11. Введи номер карты. | |
12. Введи срок окончания действия. | |
13. Введи CVV2. | |
14. Нажми кнопку "Завершить заказ". | |
15. Запиши номер заказа | |
16. Запроси базу данных с SQL1 | |
и запиши результат |
Идем дальше.
Дата добавления: 2018-05-02; просмотров: 2449; Мы поможем в написании вашей работы! |

Мы поможем в написании ваших работ!