Академический Документы
Профессиональный Документы
Культура Документы
тестирования
Цели и задачи стратегии тестирования. Выбор подходящих
техник в зависимости от функционала и особенностей. Учёт
нефункционального тестирования
Стратегия тестирования
Домашнее задание
Дополнительные материалы
Используемая литература
Стратегия тестирования
У любого тестирования всегда есть цели, иначе сложно понять, каковы результаты тестирования,
насколько они соответствуют ожиданиям. Без цели нельзя двигаться вперёд, не зная, к чему нужно
прийти. А можно ли прийти к цели без плана? Либо нельзя, либо можно, но с большим опозданием.
На большинстве проектов тестирование строго ограничено по времени, поскольку время стоит денег.
Любое опоздание или неверный результат может обойтись дорого.
Составление плана позволяет наметить путь, по которому нужно двигаться к цели. Однако само
наличие плана не гарантирует, что мы действительно к ней придём и придём быстро. Важно
составить оптимальный план, который может дать быстрый и гарантированный результат. К этому
надо стремиться. Хороший тестовый план в итоге должен привести к уменьшению материальных и
временных затрат, а руководство это обязательно оценит.
Задачи стратегии очень похожи на задачи тест-плана. Дело в том, что граница между понятиями
«тестовая стратегия» и «тест-план» очень размыта. Но в основном под стратегией понимается что-то
вроде высокоуровнего тест-плана. То есть стратегия описывает подход к тестированию в общем, а
тест-план – более детально и уточняет выбранную стратегию.
© geekbrains.ru 1
1. Типы тестирования.
1.1. Тестирование данных и их целостности.
1.2. Функциональное тестирование.
1.3. Тестирование бизнес-процессов.
1.4. Тестирование пользовательского интерфейса.
1.5. Тестирование производительности.
1.6. Тестирование загрузки.
1.7. Стресс-тестирование.
1.8. Объёмное тестирование.
1.9. Тестирование безопасности.
1.10. Тестирование восстановления после сбоев.
1.11. Конфигурационное тестирование.
1.12. Тестирование установки.
Цель тестирования
Техника тестирования
Дополнительные требования
© geekbrains.ru 2
Например:
Дополнительны Для тестирования может потребоваться среда разработки СУБД или драйверы
е требования для ввода или изменения данных непосредственно в БД.
Методы должны вызываться вручную, без пользовательского интерфейса.
Должны быть подготовлены БД малой размерности для удобного поиска ошибок.
Техника Проверить все юзкейсы, проверить все потоки между юзкейсами, функции ПО,
используя валидные и невалидные данные. Необходимо проверить следующее:
● при использовании валидных данных достигаются ожидаемые
результаты;
● при использовании невалидных данных отображаются все необходимые
ошибки и предупреждения;
● каждое бизнес-правило реализовано в ПО надлежащим образом.
Дополнительны Нужно определить и записать всё, что каким-либо образом может повлиять на
е требования реализацию и выполнение функционального тестирования.
© geekbrains.ru 3
Управление
тестированием
Отслеживание дефектов
Средства
функционального
тестирования
Средства нагрузочного
тестирования
Средства управления
тестами
Управление проектом
Средства управления БД
© geekbrains.ru 4
Пример:
Также на этом этапе проводится расследование, какие из составных частей в сходных условиях
функционируют нормально – то есть для каких частей могла бы проявляться та же проблема, но этого
не происходит?
● Выявление возможных причин. Можно сравнить эти две ситуации (когда составная часть
системы функционировала нормально и когда возникала проблема в её функционировании) и
найти отличия. Также можно попытаться выявить прошлые изменения, которые могли бы
стать причиной этих отличий. Вероятнее всего, что этот список изменений и отличий и
© geekbrains.ru 5
В этих фазах заключается структурный подход к определению проблемы. Согласно этому методу, все
фазы должны выполняться, то есть это довольно строгая модель исследования. Однако этот подход
может работать, когда времени мало. Усилия и временные ресурсы, в зависимости от специфики
проблемы и других обстоятельств, можно распределить между разными фазами по-разному.
Допустим, мы знаем, что обновление от января включало в себя 5 средних по объёму и сложности
задач, а обновление от февраля включало 6 задач, причём одна из них была очень объёмной, и
февральское обновление было выпущено с опозданием. То есть одной из возможных причин мог
быть большой объём обновления. Также могло быть такое, что разработчики поздно собрали
обновление. А может, тестировщики поздно приступили к тестированию, так как были загружены
другими срочными задачами? Допустим, на этом проекте заведено так, что если требуется
тестирование обновления, то все тестировщики бросают все свои дела и идут проверять обновление.
А менеджер проекта чётко следит за тем, чтобы обновление собиралось вовремя. Тогда последнюю и
предпоследнюю причины можно отбросить.
Мартовское обновление включало в себя 7 задач и было выпущено в срок. Все эти задачи
относились к одному и тому же модулю приложения. Возможно, было мало багов в RC?
Апрельское же обновление состояло из 5 задач, но они все относились к разным модулям, при этом
в обновлении было найдено множество багов, обновление несколько раз перепроверялось вручную
(поскольку на проекте не было автоматизации тестирования). Какие причины могли бы быть у этого
опоздания? Одна из возможных причин была в том, что из-за большого количества багов в
обновлении тестировщикам пришлось много перепроверять. Какая причина у такого большого
количества багов? Может быть, разработчики допустили много багов при сборке обновления? Или
тестировщики пропустили много багов до релиза? Или разработчики, исправляя баги сборки,
допустили другие баги?
Июньское обновление также было выпущено с опозданием. Объём обновления был небольшой, но
в обновлении были найдены баги, из-за чего приходилось несколько раз пересобирать и
перепроверять обновление.
© geekbrains.ru 6
Выяснилось, что тестировщики сильно загружены, в том числе на других проектах, поэтому тестируют
только фичи, а на регрессию функционала не остаётся времени. Пока примем эту причину как самую
вероятную. Статистическое исследование показало, что 80% багов, найденных в релизе, относятся не
к задачам обновления, а к ранее разработанному функционалу. То есть, действительно, пропуск
багов ПО из-за того, что регрессия функционала давно не проводится, мог стать причиной задержки
выпуска обновления.
Какой может быть выход из этой ситуации? Можно попробовать автоматизировать регрессионное
тестирование. Если тестировщики сильно загружены, можно переложить эту обязанность, например,
на разработчиков, если у них есть время. Автоматизацию тестирования нужно отразить в тестовой
стратегии, к тому же уже есть готовое обоснование использования этого вида тестирования.
Следующая причина – допущение ошибок разработчиками как при сборке, так и при исправлениях.
Например, собрали всю команду проекта и расспросили о том, бывают ли такие ситуации и как часто
случаются. Выяснилось, что они случаются почти каждое обновление. Это человеческий фактор, его
можно минимизировать, например, введя юнит-тестирование. Этот вид тестирования также может
быть отражён в тестовой стратегии.
Таким образом, мы рассмотрели, как тестовая стратегия может строиться на основании метода
анализа проблем.
© geekbrains.ru 7
● Project Environment (окружение проекта). Здесь перечисляется всё, что окружает проект.
Это окружение может состоять из таких компонентов:
○ Миссия – цель этого проекта, как её понимаете вы и как её понимает заказчик.
○ Информация – информация о продукте или о проекте, которая необходима для
тестирования.
○ Связь с разработчиками – как вы взаимодействуете с программистами.
○ Команда тестирования – все, кто тестирует или поддерживает тестирование на
проекте.
○ Средства тестирования – аппаратное и программное обеспечение, документы,
необходимые для управления тестированием.
○ График – последовательность, длительность и синхронизация событий, происходящих
на проекте.
○ Тестируемые элементы – всё, что требуется протестировать.
○ Результаты – ощутимые результаты тестирования проекта (в основном это тесты,
баги, тестовые спецификации).
● Product Elements (элементы продукта). Это то, из чего состоит сам продукт. Нужно
подумать и выделить составные части проекта:
○ Структура – всё, что физически составляет продукт.
○ Функционал – всё, что продукт делает.
○ Данные – всё, что продукт обрабатывает.
○ Интерфейсы – все способы взаимодействия с продуктом.
○ Платформа – всё, находящееся вне проекта, от чего зависит продукт.
○ Операции – как продукт может быть использован.
○ Время – любые зависимости продукта от времени.
● Quality criteria (критерии качества). Здесь указываются критерии качества, важные для
продукта. Категории критериев:
○ Возможности. Выполняет ли он все требуемые функции?
○ Надёжность. Будет ли он работать стабильно и правильно обрабатывать ошибки во
всех требуемых ситуациях?
○ Удобство использования. Насколько продукт удобен в использовании?
○ Харизма. Насколько привлекателен продукт?
○ Безопасность. Насколько продукт защищён от несанкционированного доступа и
взлома?
○ Масштабируемость. Насколько легко выполнить масштабирование приложения вверх
или вниз?
○ Совместимость. Насколько хорошо ПО взаимодействует со внешними компонентами и
конфигурациями?
○ Производительность. Насколько быстро работает продукт?
© geekbrains.ru 8
Эту модель стратегии удобно представлять в виде интеллект-карты. Майкл Ларсен предложил
следующий вариант описания стратегии: в центре – стратегия тестирования, первым уровнем
декомпозиции являются основные части стратегии:
© geekbrains.ru 9
Элементы продукта:
Функциональные критерии:
Критерии разработки:
Например, как может быть представлено окружение какого-либо проекта (объяснить схему):
© geekbrains.ru 10
Техники тестирования:
© geekbrains.ru 11
Элементы продукта:
● Скорость работы ПО – насколько быстро выполняются функции в ПО. Дело в том, что
пользователям часто бывает очень важно, чтобы ПО работало быстро, если же это не так,
они могут просто отказаться от использования «тормозного» продукта. При тестировании
скорости работы ПО проверяется:
○ скорость выполнения длительных операций;
○ скорость отклика интерфейса;
○ сколько операций можно выполнить в единицу времени.
● Работа под нагрузкой. Тестирование под нагрузкой применимо только для клиент-серверных
приложений. Для приложений, с которыми может работать онлайн одновременно множество
пользователей, тестировать под нагрузкой до выхода в релиз очень важно. Например,
пользователь очень хотел попасть на портал, чтобы написать сообщение в техподдержку,
потому что у него возникла проблема с использованием программы, и он не может
продолжать свою работу. Но когда он пытается открыть сайт техподдержки, браузер
показывает, что сайт недоступен. Другим способом пользователь не может связаться с
техподдержкой, поэтому его работа стоит, и это его совсем не радует. То же самое, если он
пытается создать сообщение, но при этом портал жутко тормозит. Это особенно неприятно,
если повторяется из раза в раз, и из-за этого невозможно работать с сайтом. Такие проблемы
могут возникать из-за того, что сайт не может поддерживать нужное количество одновременно
подключённых пользователей. Чтобы избежать этих проблем, нужно проверить:
○ максимальное количество одновременных подключений. Проверяется, сколько
пользователей могут одновременно подключиться к сайту и выполнять там какие-либо
действия. Далее следует сравнить это значение с предполагаемым количеством
пользователей, которые одновременно будут подключаться к сайту;
© geekbrains.ru 12
© geekbrains.ru 13
Если это сайт рекламного агентства, то важно, чтобы он имел яркий, привлекающий внимание
дизайн. Остальные вещи заказчика могут не волновать, хотя иногда даже для такого сайта может
потребоваться тестирование нагрузки. Если же это банковское ПО, дизайн, наоборот, должен быть
максимально нейтральным, не отвлекающим. При этом должна быть высокая скорость работы с
приложением. Для банковского ПО очень важна также надёжность, то есть защита от некорректных
действий пользователей и хакерских атак. Также может быть важно проверить совместимость,
поскольку часто банковское ПО взаимодействует с другими системами и сервисами, например с
сервисом предоставления информации по кредитным историям или сервисом переводов денежных
средств за рубеж.
Если же это социальная сеть, то заказчику важно привлечь на сайт много людей. Это можно сделать,
например, приятным дизайном, удобством и скоростью работы. А если вы зарегистрировались в
социальной сети и, например, не можете открыть сообщение уже как 5 минут, то, скорее всего, вы
найдёте для себя другую, более быструю сеть. Или если дизайн не нравится, трудно найти кнопку,
чтобы, скажем, загрузить фото, это тоже может стать причиной ухода из этой социальной сети.
Случается такое, что при тестировании ПО очень много времени уделяется некритичным
функциональным багам, таким как, например, появление ошибки при 187-м нажатии на кнопку
«Сохранить». При этом для нефункционального тестирования совсем не остаётся времени. Но
правильно ли это?
Конечно, если это заказная разработка, сколько времени и ресурсов уделить нефункциональному
тестированию, решает заказчик. Тестировщик может только подобрать наиболее подходящие виды
тестирования к данному типу ПО и предложить их заказчику.
Если же всё-таки нефункциональное тестирование будет проводиться, это должно быть отражено в
тестовой стратегии: какие виды нефункционального тестирования будут применяться, как будет
проводиться тестирование, с какой целью, какие инструментальные средства будут использоваться и,
главное, когда начать и когда закончить – всё это нужно продумать заранее.
Таким образом, на этом уроке мы узнали, что такое стратегия тестирования, для чего она нужна,
какие известны способы описания стратегии тестирования, а также зачем нужно нефункциональное
тестирование и какое место оно занимает в стратегии тестирования и научились составлять
стратегию тестирования разными способами.
Домашнее задание
1. Представьте, что вам предстоит протестировать настольное приложение, которое
обрабатывает медиафайлы (любые форматы аудио- и видеофайлов). Это приложение может
их проигрывать (все стандартные функции, такие как остановка, воспроизведение, перемотка,
рандомное воспроизведение треков и пр.), записывать (звук, видео), сохранять записанные
файлы. Есть возможности составления и хранения плейлистов. Нужно попытаться
представить стратегию тестирования такого приложения: описать скоуп тестируемого
функционала, выбрать средства и техники для тестирования. Оформить стратегию можно
любым способом.
© geekbrains.ru 14
Дополнительные материалы
1. Тренинг Натальи Руколь о нефункциональном тестировании:
https://www.youtube.com/watch?v=ToG0cXXGtVk
2. J. Bach. Heuristic Test Strategy Model.
3. RUP Test Plan – h ttp://tmguru.ru/wp-content/uploads/2015/01/TestPlanTemplate_RUP.pdf
4. Explaining Heuristic Test Strategy Model in Two Minutes? –
https://www.youtube.com/watch?v=SNHWCD2qg3U
5. James Bach on testing in an agile software development team –
https://www.youtube.com/watch?v=vqwyMaHcjQE
6. Схема HTSM (Майкл Ларсен) –
https://drive.google.com/file/d/0B5BXUBD7GPkNSjZPaTVUMGNoT28/view?usp=sharing
Используемая литература
1. http://software-testing.ru/library/5-testing/207-2008-10-06-10-05-53
2. http://software-testing.ru/library/testing/test-management/2047-2015-03-18-07-17-46
3. http://www.luxoft-training.ru/blog/veni_vidi_vickie/511.html
4. http://tmguru.ru/baza-znanij/protsess-testirovaniya/planirovanie/strategiya-testirovaniya/
5. https://www.youtube.com/watch?v=ToG0cXXGtVk
6. http://tmguru.ru/wp-content/uploads/2015/01/TestPlanTemplate_RUP.pdf
7. http://www.satisfice.com/tools/htsm.pdf
8. http://www.slideshare.net/VLDCORP/decision-making-2305
9. http://project.dovidnyk.info/index.php/itil/podderzhkauslug/428-prilozhenie_6b-_analiz_kepnera_i_tre
go
10. http://ya-ann.livejournal.com/23500.html
11. http://www.pmtoday.ru/project-management/other-topics/root-cause-analyze.html
© geekbrains.ru 15