| Главное меню | ||||||||
|---|---|---|---|---|---|---|---|---|
|
| Глоссарий |
|
Скорее всего, раньше вам не приходилось сталкиваться с процессом тестирования. А теперь, когда вы хотите заказать тестирование программы, вам интересно, за что же вы платите деньги? Какие виды тестирования существуют и чем они отличаются? Читаем
Тест кейсы (Test Cases). Что такое Test Case? На этот вопрос вряд ли можно ответить в двух словах. Тем не менее мы попробуем дать краткую характеристику этому понятию. Итак, для того чтобы выявить тот или иной баг необходимо произвести определенные действия, сравнить полученные результаты с ожидаемыми и сделать вывод о том, имеется баг или нет. Все это и есть Test Case. Тест кейс - это минимальный элемент тестирования. Хороший тест кейс состоит из трех частей:
Виды тестирования по степени владения знаниями о системе Собственно, существуют два способа тестирования системы. Самый естественный - тестирование со стороны (black box testing), так, как будто вы ничего не знаете о том, как система устроена. Другой способ тестирование – тестирование т.н. стеклянного ящика (white box testing). Прежде всего это, конечно задача программиста: Тестирование "черного ящика" (black box testing) – тестирование на соответствие программного продукта его функциональным спецификациям без знания о внутренней структуре реализации системы; Тестирование "белого ящика" (white box testing) – тестирование, проводящееся при наличии исходного кода и технических спецификаций, существенно повышающее качество и достоверность результатов тестирования, и улучшающее качество системы. Этот вид тестирования позволяет провести локализацию ошибок и дефектов, компонентное и корреляционное тестирование, детальный анализ надежности и устойчивости и т.п. Кроме того, возможно построение временных профилей, отражающих точное время, затрачиваемое различными компонентами системы на выполнение различных операций. Тесты строят, стараясь задействовать все ветви в коде.
Тесты можно классифицировать следующим образом: GUI-тесты (тестирование графического интерфейса пользователя). Т.е. тестирование интерфейса - экранов, кнопок и т.д. Большая часть функциональности ПО реализуется, как правило, через пользовательский интерфейс.
Функциональное тестирование. Подразумевает воспроизведение действий пользователя для решения поставленной задачи с проверкой реакции ПО на эти действия. Функциональное тестирование – это проверка правильности функционирования системы. Обычно проверяется выполнение test cases. Правильное получение, обработка и выдача данных, функционирование бизнес правил. Использует black box testing . Работа ведется посредством взаимодействия с GUI.
Тестирование производительности – тестируются характеристики, связанные со скоростью обработки данных, пропускной способностью, количеством одновременно обслуживаемых запросов. Нагрузочное тестирование (стресс-тесты). Т.е. тестирование в экстремальных условиях (нехватка памяти, дискового пространства, одновременное использование большим числом пользователей, функционирование в непрерывном режиме и т.д.). В эту группу относят тесты на заведомо дефектном ("условно рабочем") оборудовании.
Конфигурационное тестирование (Configuration Testing) - работа при различных конфигурациях системы – заявленных платформах, поддерживаемых драйверах, при различных конфигурациях компьютеров и т.д. Инсталляционное тестирование (installation testing). Проверить корректную установку системы при различных условиях с софтом и хардом: недостаток места на диске, недостаточные системные требования, отсутствие привилегий создания директорий и т.д. Проверка работы системы при апргрейде со старой версии на новую, так же как и установки с нуля. Установка в различных локализациях.
Регрессионное тестирование – итерационный процесс тестирования, проводимый на протяжении всего процесса разработки программной системы. При этом создается и пополняется библиотека тестов, которые выполняются на каждом этапе разработки системы (при появлении нового релиза). Данный подход позволяет следить за появлением ошибок и дефектов и их устранением, тем самым, обеспечивая контроль за качеством системы в процессе ее разработки и модификации.
Тесты Регрессии (или Regression Test Pass). Под этим понятием объединяют те тесты, которые уже проводились с предыдущими версиями программы, притом успешно, т.е. не выявили багов и были отмечены как pass (passed). Необходимость проведения таких тестов очевидна. Приведем пример. Допустим, что ранее проведенный тест № 2, который обеспечивал проверку в программе участка кода (назовем его условно кодом-А) не выявил ошибок в программе, и был отмечен как pass. В ходе разработки возникла необходимость изменить участок кода-А (например, при исправлении какого либо иного бага или же придания программе новой функциональности). В результате этот участок кода требует дополнительной проверки, что и будет сделано при повторном проведении теста № 2. Среди Собственно Тестов Регрессии можно выделить две группы. Первая - тесты, входящие в набор (т.н. Regression Test Pass with Regression Test Suit), другие - тесты не входящие в набор (т.н. Regression Test Pass without Regression Test Suit). Существенные отличия между ними в следующем: первые - вносятся в базу и описываются, для них могут и должны быть созданы скрипты, которые позволяют автоматизировать процесс тестирования; вторые - существуют только "в голове" тестировщика и проводятся вручную, причин этого может быть много - от малых сроков тестирования, до отсутствия необходимого ПО, для автоматизации процесса. Тесты регрессии на "закрытых" багах. Рассмотрим пример. Допустим, что тест № 3, выявивший баг, после исправления этого бага разработчиком был проведен повторно, при том успешно. Тест был отмечен как pass, а баг - как Verified. Такой баг откладывается "на полку", "дело" закрыто. Такой баг и будет "закрытым". Допустим теперь, что в ходе разработки, участок кода, где был исправлен этот баг был изменен, или сменился разработчик, который случайно удалил "нашлепку" в коде исправлявшую этот глюк и показавшуюся ему лишней и т.п. В этом случае баг проявится снова. Что бы не допустить подобного, тестеру время от времени необходимо проводить тесты, выявлявшие ранее баги в измененном участке кода, исправление которых уже было проверено ранее и зафиксировано в базе. Это и есть Тесты регрессии на "закрытых" багах. Для оценки качества ПО часто применяется целый комплекс мер, среди которых тестирование на предмет обнаружения ошибок – один из важнейших этапов.
Для проведения тестирования, очевидно, необходим объект – некоторое ПО – и некоторый эталон, с которым этот объект будет сравниваться. Таким образом, тестирование ПО проводится на соответсвие заранее определенным требованиям по функциональности, производительности, безопасности и т.д. Сложность тестирования определяется сложностью объекта тестирования и потому, зачастую, представляет собой структурированный и систематизированный процесс.
Когда понятно, что и зачем нужно тестировать, и есть план действий, самое время задуматься о том, как это сделать эффективнее, быстрее и более качественно. Современное ПО – это сложный объект, и вручную с ним справляться трудно и дорого. К тому же при "ручном" тестировании результаты каждого выполнения тестов пропадают, и их трудно повторить. Для того чтобы увеличить объем проверок и повысить качество тестирования, обеспечить возможность повторного использования тестов при внесении изменений в ПО применяют средства автоматизации тестирования. |