Найти в Дзене
Жизнь массовщика

Третья часть курса по тестированию. Основные виды тестирования

Оглавление

Тестирование пользовательского интерфейса.

Графический интерфейс пользователя (Graphical User Interface, GUI)- разновидность пользовательского интерфейса, в котором элементы интерфейса (меню, кнопки, логотипы, списки и т.п.) представлены пользователю на дисплее и исполнены в виде графических изображений.

Общие проверки пользовательского интерфейса:

•Вид элементов при уменьшении окна браузера + появление полосы прокрутки (скрол-бар)

•Правильность написания текста (грамматика, форматирование)

• Правильность перемещения фокуса в окне (Tab / Tab+Shift)

•Выбранные элементы корректно выделяются

•Качество используемых изображений

•Неизменяемые поля выглядят одинаково и отличаются от редактируемых

•Проверка наличия нужных уведомлений (нотификейшенов)

•Унификация дизайна (цвет, шрифт, размер)

•При необходимости должны быть всплывающие подсказки (тултипы)

•Изменение вида элемента при наведении на него, если это предусмотрено в системе

•Если формы дублируются, то должны быть одинаковые названия.

Наиболее распространенные баги:

•курсор не переходит в пойнтер при наведении на активный элемент (Свойство pointer-events не срабатывает);

•орфографические и грамматические ошибки;

•неровное расположение полей ввода в формах, самих форм;

•неправильное отображение элементов при смене размера окна браузера и масштаба страницы;

•изменение размера текста при смене языка;

•неровное расположение форм •разные шрифты •выбранные элементы не отличаются от не выбранных.

Ad-hoc тестирование

Ad hoc (лат. «по месту»)

• Этот вид тестирования ПО является неформальным и неструктурированным и может выполняться любым заинтересованным лицом, без ссылок на какие-либо тестовые сценарии или тестовые документы;

•Лицо, проводящее Ad-hoc-тестирование, хорошо понимает рабочие процессы приложения, при этом пытается найти дефекты и взломать ПО. Специальные проверки предназначены для обнаружения дефектов, которые не были обнаружены в существующих тестовых случаях.

Это вид исследовательского тестирования. Когда мы просто клацаем по всем элементам и пытаемся найти дефекты. Оно требует изощренного мышления и знания системы. По хорошему Ad-hoc тестирования не должно быть, т.к. это подразмевает то, что мы каким-то образом остались без документации и что мы не смогли расписать тестовую модель.

Monkey-тестирование

•Разновидность стресс-тестирования для воспроизведения ситуаций, которые не описаны в имеющейся тестовой модели, а потому не покрыты тестами.

•Поддается автоматизации (инструменты типа MonkeyRunner)

•Затруднено воспроизведение замеченной ошибки, если не автоматизировано.

Это почти Ad-hoc тестирование, но без понимания системы, которую мы тестируем.

В данном тестировании происходит беспорядочное "тыкание" по интерфейсу пользователя, пытаясь выявить какие-нибудь баги. С одной стороны данное тестирование иногда полезно, т.к. все же может выявить какой-нибудь баг, тыкнув куда-нибудь в ненужное место и тем самым сымитировать поведение человека, но с другой стороны здесь будет сложность воспроизведения действия, которое привело к багу.

Monkey-тестирование невысокопродуктивное и не может покрыть все риски. Она хороша для больших систем, когда нам все, просто, не проверить, там где вариабельность работы очень высока, где не существует сценариев более предсказуемой работы с пользователем, где он может делать все, что угодно.

Smoke-тестирование

Оно же – Дымовое тестирование. Минимальный набор тестов на явные ошибки. В первую очередь направлено на проверку готовности разработанного продукта к проведению более расширенного тестирования, определения общего состояния качества продукта.

Например:

•Ошибки инсталляции: если программный продукт не устанавливается, его тестирование, скорее всего, окажется невозможным;

•Ошибки при соединении с базой данных, актуально для архитектуры клиент-сервер;

•Ошибка авторизации оператора. Старт и финиш пользовательской сессии;

•Рабочие элементы загружаются не полностью (не загружаются);

•Рабочие функции недоступны, некорректно ограничены.

Тесты Smoke-тестирования быстрые, легкие, однозначные. Ориентированы на частое и быстрое прохождение после сборки очередного релиза.

Smoke-тестирование отвечает на вопрос: можем ли мы, вообще, тестировать данное приложение. Если дымовое тестирование пройдено, то мы можем заниматься другими видами тестирования. Если не пройдено, то мы сразу сообщаем ответственному, что система не работает. И здесь не всегда виновен разработчик, т.к. может быть не соответствие системных требований в тестовой среде.

Санитарное тестирование (Sanity)

•В ряде теорий считается подмножеством регрессионного тестирования. В некоторых – как самостоятельный вид. В некоторых – часть приемочного тестирования. Нацелено на установление факта того, что определённые части тестируемого продукта всё так же работают как положено после минорных изменений или исправлений багов.

•Выполняется после smoke-тестов, но перед регрессом.

•Может выполняться без тест-кейсов, но знание тестируемой системы обязательно

•Периодически используется синоним «тестирование согласованности/исправности».

Оно проходится по основному пользовательскому функционалу системы и говорит, что, В ПРИНЦИПЕ, мы можем работать с данной системой. К примеру, заполняя поля для выдачи банковской карточки, мы можем выдать карточку, но не вдаваясь в детали.

Регрессионное тестирование

•Регрессио́нное тести́рование (англ. regression testing, от лат. regressio — движение назад) — собирательное название для всех видов тестирования программного обеспечения, направленных на обнаружение ошибок в уже протестированных участках исходного кода;

•Не путать с re-testing (ретестингом) – повторной проверкой функции после заявленного разработчиком исправления дефекта.

Включает в себя два аспекта:

old bug-fix — проверка, что исправленный ранее и верифицированный дефект не воспроизводится в системе снова;

side-effect — проверка того, что не нарушилась работоспособность работающей ранее функциональности, если её код мог быть затронут при исправлении некоторых дефектов в другой функциональности.

Регрес не надо путать с ретестом. Регрес направлен на тестирование того функционала, который уже был протестирован и мы убеждаемся, что разработка нового функционала не повлек отказ старого функционала.

Ретест - это когда мы ранее проверяли неисправный функционал и мы перепроверяем данный функционал, что его исправили.

Нагрузочное тестирование

Нагрузочное тестирование (англ. load testing) — подвид тестирования производительности, сбор показателей и определение производительности и времени отклика программно-технической системы или устройства в ответ на внешний запрос с целью установления соответствия требованиям, предъявляемым к данной системе (устройству);

•Часто включает в себя элементы стресс-тестирования;

•Подразумевает высокий уровень автоматизации т.к. требует эмуляции множественных одновременных запросов пользователей;

•Характеризуется высокими требованиями к аналитической обработке результатов нагрузки.

Данное тестирование проверяет поведение приложения, как себя ведет система, при эмуляции воздействии множества пользователей; одновременное использование базы данных, когда один пользователь хочет удалить запись, а другой изменить ее.

Нагрузочным тестированием занимаются отдельные тестировщики, но его можно включать в тестовую модель, если подразумевается комплексное проведение тестирования.

Бета-тестирование

Бета способен найти только те баги, которые не нашел до него тестировщик…

•Бета-тести́рование (англ. beta testing) — интенсивное использование почти готовой версии продукта с целью выявления максимального числа ошибок в его работе для их последующего устранения перед выводом его в промышленную эксплуатацию.

•В отличие от альфа-тестирования, проводимого силами штатных разработчиков или тестировщиков, бета-тестирование предполагает привлечение добровольцев из числа обычных будущих пользователей продукта, которым доступна упомянутая предварительная версия продукта (так называемая бета-версия).

Оно происходит после того как приложение проверил тестировщик и используется на тех проектах, где полная проверка очень затратна, где все комбинации, просто, не проверить. Поэтому бета-тестирование проводится на рабочем проекте, множеством пользователей и, которые предоставляют обратную связь и это, можно так сказать, что это враг тестировщика, т.к. они смогли найти то, что не смог найти тестировщик.

И многое другое

•Тестирование документации. С этим в Agile-проектах сложно, т.к. документация разрабатывается и внедряется уже в момент разработки нового функционала при новом спринте и тестировщку остается мало времени на создание тестовой модели и самого тестирования.

•Тестирование инсталляции/деинсталляции

•Стресс-тестирование

•Юзабилити-тестирование

•Тестирование портативности

•Тестирование мобильных приложений

•Веб-тестирование

•SEO тестирование

•Тестирование локализации и интернационализации