b)Структура Тестовых Случаев (Test Case Structure). Каждый тест кейс должен состоять из трех частей. В таблице показаны эти части. Таблица. Структура Test case. Pre conditions | Список действий, которые приводят систему к состоянию пригодному для проведения основной проверки. Либо список условий, выполнение которых говорит о том, что система находится в пригодном для проведения основного теста состояния. | Test case description | Список действий, переводящих систему из одного состояния в другое, для получения результата, на основании которого можно сделать вывод о удовлетворении реализации, поставленным требованиям. | Post conditions | Список действий, переводящих систему в первоначальное состояние (состояние до проведения теста - initial state) | Примечание: Post Conditions не является обязательной частью. Эта часть актуальна при автоматизированном тестировании, когда за один прогон можно наполнить базу данных сотней или даже тысячей некорректных документов. Пример тест-кейса: do A1, verify B1 do A2, verify B2 do A3, verify B3. В приведенном примере конечная проверка - В3. Это значит, что именно она является ключевой. Значит, A1 и А2 - это действия приводящие систему в тестопригодное состояние. А В1 и В2 - условия того, что система находится в состоянии пригодном для тестирования. Таким образом, в таблице ниже показано условие тест-кейса. Таблица. Условие тест-кейса. Action | Expected Result | Test Result (passed/failed/blocked) | Preconditions | | | do A1 | verify B1 | | do A2 | verify B2 | | Test Case Description | | | do A3 | verify B3 | | Postconditions | | | | | | PostConditions в данном примере не были описаны, но по логике вещей надо выполнить шаги, которые бы вернули систему в первоначальное состояние. (например, удалили созданную запись, или отменили бы изменения сделанные в документе) Нужно ответить на вопрос: "Почему данное разбиение удобно использовать?" Ответ в таблице ниже: конечная проверка одна, т.е. в случае если тест провален (test failed) будет сразу ясно из-за чего. Т.к. если провальными окажутся проверки В1 и/или В2, то тест кейс будет заблокирован (test blocked), из-за того, что функцию не возможно привести в тестопригодное состояние (состояние пригодное для проведения тестирования), но это не значит, что тестируемая функция не работает. Таблица. Один из вариантов результата. Action | Expected Result | Test Result (passed/failed/blocked) | Preconditions | | | do A1 | verify B1 | passed | do A2 | verify B2 | failed | Test Case Description | | | do A3 | verify B3 | blocked | Postconditions | | | | | | c)Детализация описания тест кейсов. Уровень детализации тест кейсов должен быть таков, чтобы обеспечивать разумное соотношение времени прохождения к тестовому покрытию. Т.е. до тех пор пока покрытие тестами определенного функционала не меняется, можно уменьшать детализацию тест кейсов. В таблице ниже можно увидеть пример детализации тест-кейса: Таблица. Пример тест-кейса 1. Проверка отображения страницы | Действие | Ожидаемый результат | Результат теста | Открыть страницу "Вход в систему" | - окно "Вход в систему" открыто; - название окна - Вход в систему; - логотип компании отображается в правом верхнем углу; - на форме 2 поля - Имя и Пароль; - кнопка Вход доступна; - ссылка "забыл пароль" - доступна. | ... | Пример тест кейса 2: Название: Проверка отображения страницы Действие: Открыть страницу "Вход в систему" Проверка: Проверьте, что отображаемая страница соответствует странице на картинке 1 (и прилагаем изображение страницы "Вход в систему"). В примере 1 и 2 покрытие будет одинаковым, но вот время, которое потребуется для прохождения, будет разным. Второй пример будет нагляднее. D)Атрибуты тест-кейса. В таблице ниже представлены часто используемые атрибуты тест-кейса. Таблица. Атрибуты тест кейса. Атрибут тест кейса | Описание | Test Case ID | Уникальное значение в пределах не только документа, но и всей фирмы | Test Case Priority | Приоритет. Измеряется от 1 до n 1 – самый высокий n – самый низкий (для не очень больших проектов рационально выбирать n=4) | IDEA | Описание идеи, проверяемой тест-кейсом | SETUP and ADDITIONAL INFO | Входные параметры | Revision History | История редактирования. Пример формата: Created on <date> by<name> Modified on<date>by<name> Change – какие изменения и зачем они | Execution Part | Выполнимая часть тест кейса. Пример формата: Action – список команд EXPECTED RESULT – ожидаемый результат TEST RESULT – (passed, failed, blocked) | Пример тест кейса: пусть для тестирования возможности оплаты услуги на сайте необходимо выполнить следующий алгоритм: 1) открыть vk.com; 2) ввести в поле “Имя пользователя” значение “user”; 3) ввести в поле “Пароль” значение “password”; 4) нажать кнопку “Войти”; 5) ввести в поле “Искать людей” значение “Петр Петров”; 6) нажать кнопку “Поиск”; 7) нажать на страницу с Петр Петров; 8) в открывшейся странице нажать на ссылку “Отправить подарок”; 9) в открывшейся странице нажать на любую ссылку с подарком; 10) в открывшейся странице нажать на кнопку “Подарить”; 11) в открывшейся странице нажать на ссылку “Банковские карты”; 12) ввести в поле “Номер карты” значение карты VISA “1111-1111-1111-1111”; 13) ввести в поле “Действительно до” значение “07/15”; 14) ввести в поле “CVC” значение “111”; 15) нажать кнопку “Оплатить”; 16) записать номер заказа; 17) запросить базу данных “select res from payment where id = <номер заказа>”. Ожидаемый результат: “10” В таблице ниже можно увидеть как для данного примера будет выглядеть тест-кейс. Преимущество такой структуры тест кейса в отличии от первоначального списка заключается в том, что есть возможность протестировать по тому же сценарию другие данные (например: user2, password2, Джулия Робертс, 2222-2222-2222-2222). Для выполнения одного и того же сценария на N наборах тестовых данных создается N тестов. Этому правилу необходимо следовать. Таким образом, чтобы сделать подарок Ивану Иванову, нужно скопировать содержимое тест кейса VV12345, например, в тест кейс VV12346 и переписать только входные параметры. Такой вид тест кейса называется управляемый данными (data-driven). Проблемы сценария в примере: – пункты 1-4 могут меняться в связи с миграцией сайта на новый домен, изменением интерфейса и т.д.; – поиск друга в пунктах 5-7 “Петр Петров” может привести в никуда при удалении страницы; – пункты 8-15 могут быть легко изменены за счет нового дизайна сайта. Следовательно, при любом таком изменении придется переписывать весь тест кейс, чтобы заново протестировать первоначальную задачу. Таблица. Тест-кейс для примера. Test Case ID/Priority | VV12345 | | IDEA: Оплата картой VISA “подарка другу” SETUP and ADDITIONAL INFO: Аккаунт: user/password Имя друга: Петр Петров Номер карты: 1111-1111-1111-1111 Срок действия: 07/15 CVC: 111 Запрос SQL: select res from payment where id = <номер заказа> | Revision History | Created on 23/01/2014 by Иван Иванов | Новый тест кейс | Execution Part | ACTION | EXPECTED RESULT | TEST RESULT | 1) открыть vk.com; 2) ввести в поле “Имя пользователя” значение “user”; 3) ввести в поле “Пароль” значение “password”; 4) нажать кнопку “Войти”; 5) ввести в поле “Искать людей” значение “Петр Петров”; 6) нажать кнопку “Поиск”; 7) нажать на страницу с Петр Петров; 8) в открывшейся странице нажать на ссылку “Отправить подарок”; 9) в открывшейся странице нажать на любую ссылку с подарком; 10) в открывшейся странице нажать на кнопку “Подарить”; 11) в открывшейся странице нажать на ссылку “Банковские карты”; 12) ввести в поле “Номер карты” значение карты VISA “11111111-1111-1111”; 13) ввести в поле “Действительно до” значение “07/15”; 14) ввести в поле “CVC” значение “111”; 15) нажать кнопку “Оплатить”; 16) записать номер заказа; 17) запросить базу данных “select res from payment where id = <номер заказа>”. | | | | | | | | Если же разбить задачу на несколько тест-кейсов, например, за пункты 1-4 будет отвечать тест-кейс “Вход в систему”, за пункты 5-7 “Поиск друга”, 8-15 – “Оплата подарка” (на внутреннем уровне каждого из них возможно еще более детальное разделение), то можно переписать тест-кейс так, как указано в таблице ниже. Таблица. Упрощение тест-кейса. Test Case ID/Priority | VV12347 | | IDEA: Оплата картой VISA “подарка другу” SETUP and ADDITIONAL INFO: Аккаунт: user/password Имя друга: Петр Петров Номер карты: 1111-1111-1111-1111 Срок действия: 07/15 CVC: 111 Запрос SQL: select res from payment where id = <номер заказа> | Revision History | Created on 23/01/2014 by Марина Гончарова | Новый тест кейс | Modified on 23/01/2014 by Иванов Евгений | Упрощение шагов | Execution Part | ACTION | EXPECTED RESULT | TEST RESULT | 1) войти в систему; 2) найти друга; 3) платить подарок; 4) записать номер заказа; 5) запросить базу данных “select res from payment where id = <номер заказа>” | | | Возможен вариант, когда все, что нужно – это выполнение команды номер 5, при условии что другие команды выполнены заранее. В таблице ниже указан упрощенный вариант тест-кейса. Таблица. Упрощение тест-кейса. Test Case ID/Priority | VV12348 | | IDEA: Подтверждение оплаты SETUP and ADDITIONAL INFO: Номер заказа: параметр | Revision History | Created on 23/01/2014 by Марина Гончарова | Новый тест кейс | Modified on 23/01/2014 by Иванов Евгений | Упрощение шагов | Modified on 24/01/2014 by Сергей Галкин | Изменение структуры | Execution Part | ACTION | EXPECTED RESULT | TEST RESULT | Запросить базу данных “select res from payment where id = <номер заказа>” | | | Неизвестным параметр <Номер заказа> после завершения выполнения теста получит свое значение, которое будет задокументировано. |