Добавлен: 25.05.2023
Просмотров: 1190
Скачиваний: 19
СОДЕРЖАНИЕ
Тестирование программного обеспечения
1.1 Классификация видов тестирования
Функциональное тестирование и тестирование качества
2. Основы функционального тестирования (Black-Box)
2.1. Black-box, white-box, grey-box тестирование.
2.2. Методы отбора тестов для Black-box тестирования
2.3. Тестирование сценариев использования - юз-кейсов (use-cases)
2.4. Тестирование классов эквивалентности.
2.5. Использование информации о программе при Gray-Box тестировании
2.5.1. Информация о базе данных
2.5.2. Информация о других внешних системах
2.5.3. Информация о коде программы
3. наращиваемый подход к первичному функциональному тестированию ПО.
3.1. Приемочное тестирование требований
3.2. Исследовательское тестирование ПО.
3.3. Тестирование базовых сценариев
3.5. Поэлементное тестирование входных данных
3.6. Комбинирование входных данных.
3.7. Тестирование граничных значений.
3.8. Тестирование невалидных данных (не имеющих смысла)
4.1. Что должна содержать тестовая документация и почему.
4.2. Тестовые объекты и тестовые данные
4.3. Идентификатор тесткейса, приоритет, время прохождения
4.4. История изменений и история прохождений
Рисунок 4 - Интерфейс отображения процесса тестирования
5.3. Быстрое тестирование
Быстрое тестирование проводится после завершения итерации разработки, если сборка не пойдет в релиз.Для начала проводятся smoke-тесты, чтобы понять имеет ли смысл тестировать сборку.
Затем берутся все выполненные задачи и исправленные баги за итерацию из Jira и методично проверяется соответствие результата описанию таска. Если задача включала в себя новые элементы интерфейса, она отправляется дизайнерам для сверки с макетами.
Некорректно выполненные задачи переоткрываются. Баги заносятся в Jira. К не UI багам обязательно прикладываются логи со смартфона. К UI багам скриншоты с пометками что не так.
После этого выполняются функциональные тесты этой итерации. Если были найдены баги не покрытые тест-кейсами, создается новый тест-кейс.
Для андроид-приложений запускаются monkey тесты. По окончании тестирования ставится галочка «тестирование багов пройдено» в билд-сервере.
Если в процессе тестирования не было найдено blocker, critical и major багов, ставится галочка «можно показывать заказчику». Ни один билд не отсылается заказчику без одобрения отдела тестирования. (По согласованию с заказчиком иногда высылаются билды с major багами).Критичность бага определяется по таблице:
Рисунок 5 - Таблица определения критичности бага
После завершения тестирования PM получает подробное письмо-отчет:
Рисунок 6 - Письмо–отчет
5.4. Полное тестирование
Полное тестирование проводится перед релизом. Включает себя в себя быстрое тестирование, регресионное тестирование, monkey-тестирование на 100 устройствах и тестирование обновлений.
Регрессионное тестирование подразумевает прогон ВСЕХ тест-кейсов по проекту. Тест-кейсов не только за последнюю итерацию, но и за все предыдущие и общие тест кейсы по требованиям. Это занимает день-три на одно устройство в зависимости от проекта.
Очень важный шаг — тестирование обновлений. Почти все приложения хранят данные локально (даже если это кука логина) и важно удостовериться, что после обновления приложения все данные пользователя сохранятся. Тестировщик скачивает билд из маркета, создает сохраняемые данные (логин, плейлисты, транзации учета финансов), обновляет приложение на тестовую сборку и проверяет, что все на месте. Затем прогоняет smoke-тест. Процесс повторяется на 2-3 устройствах.
Разработчики часто забывают о миграции данных со старых версий и тестирование обновлений позволило нам выявить множество критических ошибок с падениями, удалением пользовательских данных о покупках. Это спасло не одно приложение от гневных отзывов и потери аудитории.
Релизный monkey-тест осуществляется на 10 iOS и 80 Android устройствах при помощи сервиса Appthwack. В конце полного тестирования, кроме письма, вручную составляется подробный отчет.
Сборка уходит в релиз только при 100% прохождении всех тест-кейсов.
Рисунок 7 - Результаты тестирования
5.5.Тестирование внешних сервисов
Тестировать интеграцию с Google Analytics, Flurry или системой статистики заказчика непросто. Бывало, что в релиз уходили сборки с нерабочим Google Analytics и никто не обращал на это внимания.
Поэтому в обязательном порядке для внешних сервисов создается тестовый аккаунт и он проверяется при полном тестировании. Кроме того отправка статистики фиксируется в логах, которые проверяются тестировщиками. При релизе тестовый аккаунт подменяется боевым.
Учет времени тестировщиков производится в отдельном Jira проекте. На составление тест-кейсов, прогон тестов, написание отчетов по проекту заводится отдельная задача и стандартными средствами в ней отмечается затраченное время.
Рисунок 8 - Отслеживание времени
Заключение
Многие организации, занимающиеся созданием программного обеспечения, до 30% средств, выделенных на разработку программ, тратят на испытания, что составляет миллиарды долларов ПО всему миру в целом. И все же, несмотря на громадные капиталовложения, знаний o сути испытаний явно не хватает и большинство программных продуктов ненадёжно.
Под испытанием программной продукции следует понимать экспериментальное определение количественных и/или качественных характеристик свойств продукции при ей функционировании в реальной среде и/или моделировании среды функционирования.
Невозможно гарантировать отсутствие ошибок в нетривиальной программе; в лучшем случае можно попытаться показать наличие ошибок. Если программа правильно ведет себя для солидного набора тестов, нет оснований утверждать, что в ней нет ошибок; со всей определённостью можно лишь утверждать, что не известно, когда эта программа не работает. Конечно, если есть причины считать данный набор тестов способным с большой вероятностью обнаружить все возможные ошибки, то можно говорить o некотором уровне уверенности в правильности программы, устанавливаемом этими тестами. Надёжность невозможно внести в программу в результате тестирования, она определяется правильностью этапов проектирования. Наилучшее решение проблемы надёжности - с самого начала не допускать ошибок в программе. Однако вероятность того, что удастся безупречно спроектировать большую программу, бесконечно мала.