Home
Мало что сравнится по степени кошмарности для тестировщика с осознанием того, что на проде найден баг. В этой статьей я приведу набор шагов, помогающих тестировщику разобраться с багами на проде и предотвратить их появление в будущем.
Шаг 1: сохраняйте спокойствие.
Так как именно мы – те самые люди, которые тестировали продукт и передавали его в релиз, легко удариться в панику при обнаружении бага на проде. Мы тут же спрашиваем себя «Как же это могло произойти?», и можем начать агонизировать в поиске ответов. Однако это непродуктивно – нашей приоритетной задачей должно быть убеждение, что баг исправлен. Если мы не сохраним спокойствие, то можем недоисследовать проблему или недотестировать исправление.
Шаг 2: воспроизведите проблему.
Если о проблеме сообщил заказчик или другой человек внутри компании, то первое, что нужно сделать – это посмотреть, можете ли вы ее воспроизвести. Возможно, это просто пользовательская ошибка или проблема конфигурации. Однако не делайте поспешных выводов! Удостоверьтесь, что вы тщательно прошли по всем описанным пользователем шагам, и при возможности убедитесь, что пользуетесь тем же ПО и железом, что и он. К примеру, используйте тот же тип мобильного устройства и тот же билд, или же ту же ОС и тот же браузер. Если воспроизвести проблему не удается, запросите дополнительную информацию и продолжайте пробовать. Посмотрите статью «как воспроизвести баг», если вам нужны подсказки.
Шаг 3: узнайте как можно больше.
Теперь, когда проблема воспроизведена, соберите максимум информации о ней. Воспроизводится ли она на тест-стенде? Проявляется ли в предыдущем билде? Если это так, на каком билде она не проявляется? Проявляется ли она на какой-то определенной ОС/в определенном браузере? Необходимы ли для ее воспроизведения определенные настройки конфигурации? Чем больше информации вы соберете, тем быстрее разработчики смогут исправить баг.
Шаг 4: выявите первопричину.
На этом этапе ваш разработчик уже занят разбирательством, что вызывает проблему. Когда он(а) это выяснит, удостоверьтесь, что вам сообщили, что это была за проблема, и убедитесь, что вы все поняли. Это поможет вам разобраться, как тестировать исправление, а также определить, какие регрессионные тесты тут понадобятся.
Шаг 5: решите, когда исправлять проблему
Когда баг найден на проде, очень хочется исправить его немедленно, однако это не всегда наилучшее решение. Уверена, вы сталкивались с ситуациями, когда исправление бага порождало новые проблемы. Вам понадобится время на то, чтобы протестировать все области, на которые мог повлиять фикс.
Решая, когда исправлять баг, подумайте вот о чем:
- Сколько пользователей им затронуто?
- Насколько он серьезен?
Возможно, проблема затрагивает меньше процента пользователей. Однако если это серьезный баг, и они не могут пользоваться приложением, то, возможно, его стоит исправить прямо сейчас.
Другой случай: баг затрагивает всех пользователей, но он настолько незначителен, что не влияет на их опыт использования приложения. К примеру, плохо выровненная кнопка может выглядеть не очень, но не мешает пользоваться программой. В этом случае лучше подождать до следующего планового релиза и внести исправления в нем.
Шаг 6: протестируйте исправление.
Тестируя исправление бага, не проверяйте его единоразово. Убедитесь, что вы проверили все используемые браузеры и устройства, а затем прогоните регресс-тесты в областях, которые могло затронуть изменение кода. Если вы следовали шагу 4, то знаете, какие области тестировать. И, наконец, проведите быстрый смоук-тест, чтобы удостовериться, что важная функциональность не пострадала.
Шаг 7: проанализируйте, что пошло не так.
Крайне заманчиво вздохнуть с облегчением и перейти к чему-то другому, когда баг прода исправлен. Однако тут очень важно найти время на то, чтобы понять, как именно он попал на прод. Это не относится к поиску виноватых и козлов отпущения – все совершают ошибки, неважно, разработчики ли, тестировщики, продакт-оунеры, менеджеры или релизные инженеры. Суть в том, чтобы понять, что произошло, чтобы не допустить такой проблемы впредь.
Возможно, ваши разработчики внесли изменения в код и забыли сказать вам об этом, и поэтому эти изменения не тестировались. Возможно, вы тестировали фичу, но забыли проверить все браузеры, и в одном браузере возникла проблема. Может быть, ваш продакт-оунер забыл рассказать вам о важном сценарии использования, и этот сценарий не попал в тест-план.
Неважно, в чем было дело – убедитесь, что вы внятно донесли причину до вашей команды. Н бойтесь взять ответственность за свою роль в возникновении проблемы. См. статью про семь оправданий тестировщиков, чтобы узнать больше.
Шаг 8: проведите мозговой штурм для выявления способов предотвращения схожих проблем.
Теперь, когда вы знаете, что пошло не так, надо задуматься, как избежать таких проблем в будущем. Обсудите это с командой и попробуйте выработать соответствующие стратегии.
Возможно, нужно изменить процесс: к примеру, продакт-оунер должен давать отмашку по каждой новой фиче, чтобы удостовериться, что ничего не упущено. Или нужно убеждаться, что разработчики сообщают вам о любом рефакторинге кода, чтобы вы провели регресс-тест, даже если они убеждены, что ничего в целом не менялось.
Может быть, нужно изменить стратегию: если два тестировщика работают над каждой фичей, то куда менее вероятно, что что-то будет упущено. Или же можно создавать тест-планы, автоматически включающие шаг тестирования в каждом браузере.
Возможно, нужно менять и процесс, истратегию! Какой бы подход вы ни выбрали, вы теперь сможете рассматривать баг на проде как удачу, потому что он сделал вас мудрее, а вашу команду – сильнее.
Bug prod что это
События
- Тестирование
- Основы
- Откуда берутся ошибки в ПО?
- Почему тестирование необходимо?
- Мифы о тестировании
- Психология тестирования
- Когда начинать и заканчивать тестирование?
- Фундаментальный процесс тестирования
- Принципы тестирования
- Верификация и валидация
- QA, QC и тестирование
- Кто занимается тестированием?
- Цели тестирования
- Что такое тестирование программного обеспечения?
- Роль тестирования в процессе разработки ПО
- Сколько стоят дефекты?
- Качество программного обеспечения (ISO/IEC 25010)
- Матрица соответствия требований (Requirements Traceability Matrix)
- Тестирование веб-проектов: основные этапы и советы.
- Мобильное и веб-приложение. В чем разница?
- Тест дизайн (Test Design)
- Agile
- Словарь тестировщика
- 75 популярных вопросов на собеседовании QA (+ примеры и ответы)
- HTML и CSS для тестировщиков
- Итеративная модель (Iterative model)
- Спиральная модель (Spiral model)
- V-модель (V-model)
- Каскадная модель (Waterfall model)
- Стадии цикла разработки ПО
- Жизненный цикл ПО
- Приемочное тестирование
- Системное тестирование
- Интеграционное тестирование
- Модульное тестирование
- White/Black/Grey Box-тестирование
- Статическое и динамическое тестирование
- Ручное и автоматизированное
- Тестирование документации
- Интернационализация и локализация
- Стресс тестирование
- Тестирование установки
- Конфигурационное тестирование
- Тестирование на отказ и восстановление
- Юзабилити
- Тестирование сборки
- Тестирование взаимодействия
- Тестирование безопасности
- Дымное тестирование
- Регрессионное тестирование
- Тестирование производительности
- Функциональное тестирование
- Нефункциональное тестирование
- Спецификация требований
- Test Plan
- Checklists для тестировщика
- Test Case
- Bug report
- Жизненный цикл дефектов
- Классификация дефектов
- Тестирование мобильных приложений
- Протоколы
- Протокол TCP/IP или как работает Интернет (для новичков)
- Автоматизация
- Автоматизированное тестирование
- Теория по X-Path локаторам
- Как написать X-Path локатор.
- Использование tagname
- Вложенность родительского элемента.
- Как выбрать инструмент автоматизации?
- Базы данных в тестировании
- Зачем нужен SQL для тестирования?
- Общее
- Интерфейс в коде ПО
- Что такое микросервисная архитектура ПО?
- Что такое монолитная архитектура?
- Что такое API?
- Процесс коммуникации с помощью API
- Что такое JSON
- Что не так с Android?
- Android Studio 2.0
- RxJava
- Основы
- Внутренний мир компьютера: что там внутри
Когда Вы начинаете работать в ИТ-сфере, часто сталкиваетесь с ситуацией непонимания некоторых слов и терминов. Чтобы облегчить ваш «вход» в ИТ, сделать его более понятным и комфортным, тренинг-центр QALight подготовил базовый перечень терминов, которые чаще всего используют тестировщики.
Автоматизированное тестирование (Automated testing) — процесс тестирования программного обеспечения, используя специальные программы.
Альфа-тестирование (Alpha testing) — имитация реальной работы с системой разработчиками, или же реальная работа потенциальных пользователей на ранней стадии разработки продукта.
Анализ предельных значений (Boundary Value Analysis) — техника проверки поведения продукта на предельных значениях (поля, записи, файлы и т.п.).
Андерлокинг — снижение частоты работы оборудования.
Анекспектед бехевиер (Unexpected behavior) – неожиданное поведение.
Апдейт (Update) – обновление.
Аутпут (Output) – исходные данные, результат.
Аутсорсинг (Outsourcing) – полная или частичная передача задач, процессов для выполнения посторонним лицам – юридическим или физическими.
Баг (bug) — дефект; несоответствие фактического результата выполнения программы ожидаемому результату.
Багзилла (bugzilla) – система отслеживания ошибок и ведения задач.
Баг-репорт (bug report) — технический документ, содержащий в себе полное описание бага, включающий информацию, как о самом баге (краткое описание, серьезность, приоритет), так и об условиях возникновения этого бага.
Багтрекер (bug tracker) – система отслеживания ошибок; компьютерная программа, помогающая команде разработчиков и тестировщиков отслеживать и контролировать ошибки и пожелания пользователей, а также следить за устранением ошибок и исполнением пожеланий.
Баундри вельюс (boundary values) – предельные значения.
Бекенд (back-end) – программная часть, которую не видят пользователи сайта, связана с написанием серверных скриптов.
Бек лог (backlog) – документ, в котором по уровню важности собран перечень требований к функциональности, которые должны быть реализованы.
Бета-тестирование (Beta testing) — интенсивное использование почти готовой версии продукта с целью выявить и исправить как можно больше дефектов перед окончательным выпуском для пользователей.
Билд (build в ИТ) – объединение отдельных модулей программы в одну работающую систему.
Валидация (validation) — это процесс оценки конечного продукта, необходимо проверить, соответствует ли программное обеспечение ожиданиям и требованиям клиента. Это динамичный механизм проверки и тестирования фактического продукта.
Верификация (verification) — это статическая практика проверки документов, дизайна, архитектуры, кода и тому подобное.
Гайдлайн (guideline) – инструкция. В ИТ-сфере – руководство от одних разработчиков для других для правильной трактовки определенной работы.
Генерить (generate) – создавать, предлагать.
Голд плейтинг (gold plating) – лишен пользы.
Дебагинг (debugging) — процесс, во время которого находят и исправляют ошибки.
Девелопер (developer) – специалист, занимающийся разработкой программного обеспечения.
Деплоймент (deployment) – процесс развертывания программного продукта в готовности к использованию. Задеплоить – перенос программы в следующую среду, например в тестовую систему или на другой сервер.
Десктоп (desktop) – персональный компьютер.
Дефект репорта (defect report) – отчет об ошибке.
Джира (JIRA) – система отслеживания ошибок, предназначенная для общения с пользователями и управления проектами.
Домен – набор символов, которые определяют сайт в поисковой сети и идентифицируют для пользователей.
Дропдаун (dropdown) – выпадающий список.
Дымное тестирования (Smoke test) — проверка выполнения функций продуктом после сборки нового или исправленного текущего кода.
Эквивалентное разделение (equivalence partitioning) — техника, при которой функционал разделяется на группы значений, эквивалентных по воздействию на систему.
Жизненный цикл программного обеспечения — это условная схема, включающая в себя отдельные этапы, которые являются стадиями развития процесса создания ПО.
Обеспечение качества (Quality Assurance, QA) — совокупность мероприятий, охватывающих все технологические этапы разработки, выпуска и использования ПО;
Сбой (failure) — несоответствие фактического результата работы системы или компонента тому результату, который ожидали.
Инсталляционное тестирование (Installation Testing) — процесс тестирования стадии установки.
Интродакшн (introduction) – знакомство с продуктом, командой и т.п.; представление кого-то, чего-нибудь.
Итеративная модель (iterative model) — предполагает разбиение проекта на части (этапы, итерации) и прохождение этапов жизненного цикла на каждом из них. Каждый этап является законченным сам по себе, совокупность этапов формирует конечный результат.
Каскадная модель (waterfall model) — последовательный метод разработки программного обеспечения, названный так из-за диаграммы, похожей на водопад.
Кликабельность (clickable) – возможность щелкнуть курсором мышки и перейти на ту или иную страницу.
Кодинг, кодирование – процесс написания кода.
Коммон сенс (common sense) – здравый смысл.
Конфигурационное тестирование (Configuration Testing) — проверка работы программного обеспечения при различных конфигурациях системы.
Кэш (cache) – временное хранилище для часто используемых файлов.
Лог (log) – файл со служебной и системной информацией о событиях в системе.
Манки джоб (monkey job, обезьянья работа) – простая, повторяющаяся или рутинная работа, не требующая больших затрат.
Мануальный (manual) – ручной.
Матрица соответствия требованиям (Traceability matrix) — двухмерная таблица, где определено соответствие функциональных требований и подготовленных тестовых сценариев.
Нагрузочное тестирование (Load testing) — определение работоспособности, стабильности, потребления ресурсов и других атрибутов качества приложения в условиях различных сценариев использования и нагрузок.
Натянуть ПО – использование готового программного обеспечения.
Нефункциональное тестирование (Non-functional testing) — тестирование свойств, которые не отвечают функциональности системы.
Оверлокинг (Overclocking) — увеличение частоты компонента компьютера с целью увеличения скорости его работы.
Операционное тестирования (Release Testing) — процесс проверки системы на удовлетворение всех потребностей пользователя и соответствия бизнес-требованиям.
Ошибка (error) — действие, после которого возникает неправильный результат.
Пофиксить (to fix) – исправить ошибку.
Предсказание ошибки (Error Guessing) — возможность тестировщика, благодаря своим знаниям и пониманию системы, предсказать, при каких условиях система может выдать ошибку.
Повторное тестирование (retesting) — тестирование, которое проводиться чтобы убедиться в решении ранее найденных ошибок.
Пост-релиз (Post-release to manufacturing) — издание продукта с несколькими отличиями от RTM; является самой первой стадией разработки нового продукта.
Пре-альфа (Pre-alpha) — самая первая стадия разработки — от самого начала до стадии альфа.
Приемное тестирование (acceptance testing) — тестирование, направленное на проверку продукта с точки зрения конечного пользователя.
Причина/следствие (Cause/Effect) — введение определенных комбинаций для получения определенного результата.
Приоритет багов (Priority) — атрибут, указывающий на скорость устранения бага, очередность выполнения задачи.
- Trivial — косметическая малозаметная проблема.
- Minor — очевидная, незначительная проблема.
- Major — большая проблема.
- Critical — проблема, нарушает работу ключевых функций ПО.
- Blocker — проблема, нарушает функционирование ПО.
Продакт стайл гайд (product style guide) – документ, в котором указано правильное использование графических и функциональных элементов платформы для разработки программного обеспечения под эту платформу.
Продакшн (production) – выпуск готового продукта.
Профит (profit) – польза, доход.
Регрессионное тестирование (regression testing) — проверка на наличие ошибок после выполнения определенных действий или внесения изменений в систему.
Релиз (Release to manufacturing) — выпуск продукта.
Релиз-кандидат (Release candidate) — предварительный релиз, который имеет потенциал стать окончательным, если не будут выявлены значительные нарушения.
Репозиторий (repository) – хранилище; специальный сервер, на котором хранится доступное для загрузки ПО.
Ручное тестирование (manual testing) — процесс ручной проверки программного обеспечения на наличие ошибок.
Санитарное тестирование (Sanity testing) — тестирование определенной функции с целью проверки, соответствует ли ее работа заявленным требованиям.
Сервер (server) – это компьютер, устройство или программа, предназначенная для управления сетевыми ресурсами.
Серьезность (Severity) — степень влияния дефекта на работоспособность системы.
Система отслеживания ошибок (bug tracking system) — система контроля багов.
Скрам (scrum) – подход управления проектами для гибкой разработки программного обеспечения.
Скрипт (script) – сценарий; программа, содержащая последовательность действий, предназначенных для автоматического выполнения определенной задачи.
Скриншот (screen shot) – копия изображения экрана, хранящаяся и распространяемая в графическом формате.
Спецификация (specification) — детальное описание того, как должно работать ПО.
Спиральная модель (spiral model) — все этапы жизненного цикла при спиральной модели идут витками, на каждом из которых происходят проектирование, кодирование, дизайн, тестирование и тому подобное.
Сравнительное тестирование (Back-To-Back Testing) — анализ плюсов и минусов продукта в сравнении с его ближайшими конкурентами.
Стадии разработки ПО — определенные этапы, которые проходит команда разработчиков от старта до того, как продукт станет доступен широкой аудитории.
Стейт транзишн тейбл (state transition table) – таблица переходов системы из одного состояния в другое.
Стрессовое тестирование — проверка работоспособности продукта во время и после работы с гораздо большей нагрузкой, чем было запланировано.
Таблица принятия решений (Decision table) — удобный инструмент, цель которого – упорядочить бизнес-требования к продукту.
Тест-дизайн (Test design) — один из этапов тестирования, во время которого проектируются возможные тест-кейсы (случаи).
Тест-кейс (Test Case) — это тестовый артефакт, суть которого заключается в выполнении некоторого количества действий и/или условий, необходимых для проверки определенной функциональности программной системы, разрабатываемой системы.
Тест-план (Test Plan) — документ, в котором указан весь объем работ по тестированию, а также оценки рисков с вариантами их решения.
Тестирование (Testing) — процесс проверки соответствия заявленных к продукту требований и реально реализованной функциональности, происходит путем наблюдения за его работой в искусственно созданных ситуациях и на ограниченном наборе тестов, выбранных определенным образом.
Тестирование безопасности (Security testing) — проверка, насколько система готова противостоять злонамеренным попыткам получить доступ к данным.
Тестирование взаимодействия (Interoperability Testing) — функциональное тестирование, цель которого проверить, как может приложение взаимодействовать с одними или несколькими элементами/системами.
Тестирование восстановления (recovery testing) — проверка способности продукта восстанавливать свои функции после незапланированной ситуации.
Тестирование доступности (Accessibility Testing) — используется для выявления возможности использования системы и удобства для людей с ограниченными возможностями.
Тестирование сборки (Build Verification Test) — предварительная проверка разрабатываемого программного продукта перед запуском полномасштабного тестирования по всем параметрам, проведенного QA-командой.
Тестирование интернационализации/локализации — проверка готовности продукта к использованию его на разных языках, учитывая национальные и культурные особенности.
Тестирование пользовательского интерфейса (UI Testing) — тестирование, основная цель которого выявить, удобный ли определенный элемент для использования.
Тестирование масштабирования (Scalability Test) — изучение возможности увеличивать показатели производительности по мере увеличения количества доступных приложением ресурсов.
Тестирование сборки (Build Verification Test) — тестирование, цель которого выявить, соответствуют ли требования выпущенной версии критериям качества для начала тестирования.
Тестирование совместимости (Compatibility testing) — проверка возможности продукта работать в заданных условиях.
Фрилансер (freelancer) – специалист, который сам ищет проекты, компании для работы, часто работает в удаленном формате.
Фронтенд (front-end) – интерфейс взаимодействия между пользователем и бэкендом.
Функциональное тестирование (Functional Testing) — процесс проверки с целью определения функциональных возможностей приложения.
Чек-лист (Check list) — документ, в котором определен перечень того, что должно быть протестированным.
Эджайл (agile) – метод управления проектами, направленный на предоставление конечного результата на каждом этапе работы с возможным изменением конечного результата.
ISTQB (International Software Testing Qualification Board) – Международная коллегия тестирования программного обеспечения.
QC (Quality Control) — проверка соблюдения требований, предусмотренных в нормативно-технической документации.
Software architecture document – документ, описывающий архитектуру программы, подходы и технологии, которые будут использоваться для ее разработки.
UI (User Interface) — инструмент, помогающий наладить взаимодействие «пользователь-приложение».
UX (user experience) — ощущения, возникающие у пользователя при взаимодействии с продуктом.
V-модель (v-model) — модель, на каждом этапе которой осуществляется контроль текущего процесса для того, чтобы убедиться в возможности перехода на следующий уровень.
XML – стандарт построения языков разметки иерархически структурированных данных для обмена между разными приложениями, в частности, через Интернет.
Z-конфликт (Z-fighting) — наложение текстур друг на друга.
Мобильное тестирование — тестирование мобильных приложений.
Консольное тестирования — тестирование приложений для консолей.
Веб-тестирование — тестирование браузерных приложений.
ТИПЫ ТЕСТИРОВАНИЯ ПО ЗАПУСКУ КОДА НА ВЫПОЛНЕНИЕ
Статическое (Static testing) — тип тестирования, который предполагает, что программный код во время тестирования не будет выполняться.
Динамическое (Dynamic testing) — тип тестирования, который предусматривает запуск программного кода.
ТИПЫ ТЕСТИРОВАНИЯ ПО ДОСТУПУ К КОДУ
Black box — тестировщик не знает, как устроена тестируемая система.
White box — тестировщик знает все детали тестируемой системы.
Grey box — тестировщик знает только о некоторых особенностях тестируемой системы.
ТИПЫ ТЕСТИРОВАНИЯ ПО ПРИНЦИПУ РАБОТЫ С ПРИЛОЖЕНИЯМИ
Положительное тестирования (Positive testing) — процесс тестирования программного обеспечения на то, как оно должно работать.
Негативное тестирование (Negative testing) — процесс тестирования программного обеспечения на то, как оно не должно работать.
ТИПЫ ТЕСТИРОВАНИЯ ПО УРОВНЮ ДЕТАЛИЗАЦИИ ПРИЛОЖЕНИЯ
Интеграционное тестирование — тестирование взаимодействия нескольких элементов системы.
Системное тестирование — тестирование всего приложения от начала до конца.
Модульное тестирование — тестирование определенных компонентов системы.
- Выбери курс для обучения
- Тестирование
- Базовый модуль тестирования
- Тестирование ПО
- Тестирование WEB-сервисов
- Тестирование мобильных приложений
- Тестирование нагрузки с JMeter
- Расширенный модуль автоматизации тестирования
- Автоматизация тестирования с Selenium WebDriver (Python)
- Автоматизация тестирования с Selenium WebDriver (Java)
- Автоматизация тестирования с Selenium WebDriver (C#)
- Автоматизация тестирования на JavaScript
- Java для автоматизаторов
- Fullstack Web Developer
- Java
- Python
- JavaScript
- HTML5 И CSS3
- Полный стек разработки на фреймворке Laravel
- Разработка CMS на основе PHP
- Git для автоматизаторов
- Практический SQL
- Основы Unix и сети
- WEB-серверы и WEB-сервисы
- Создание проекта автоматизации и написания UI тестов
- Составление комбинированных тестов UI и API. Написание BDD тестов
- IT Project Manager
- HR-менеджер в ИТ-компании
- Как правильно составить резюме и пройти собеседование
- Подготовка к сертификации ISTQB Foundation Level на основе Syllabus Version 2018
- Тестирование
- Базовый модуль тестирования
Распространенные ошибки начинающих тестировщиков
В процессе обучения людей, которые только начинают свой путь в профессии QA, я регулярно сталкиваюсь с тем, что многие допускают однотипные ошибки.
Хочу разобрать некоторые из них и дать рекомендации, как их избежать.В первую очередь поговорим об оформлении дефектов. Поскольку это самый распространенный артефакт процесса тестирования, правильно оформлять баги необходимо уметь всем тестировщикам. Вы можете обойтись даже без тест-кейсов, но без дефектов не обойтись никак.
1. Неинформативные названия дефектов
О том, как следует и как не следует писать заголовки дефектов, написано уже немало, тем не менее начинающие продолжают наступать на те же грабли.
Популярная рекомендация заключается в том, что заголовок дефекта должен отвечать на три вопроса, совпадающих с названием известной интеллектуальной игры: «Что? Где? Когда?«. Совершенно верная рекомендация, почему же возникают сложности в ее применении?Итак, первое, что следует понимать о заголовке дефекта: он должен описывать суть проблемы. Чаще всего при помощи предложения, построенного по правилам английского, русского (или другого вашего рабочего) языка. Вспомним грамматику. Что такое предложение?
«Предложение — это единица языка, которая представляет собой грамматически организованное соединение слов, обладающее смысловой законченностью.»
- «Что?» — как минимум должно быть описано то самое поведение программы, которое мы считаем некорректным, несоответствующим требованиям/стандартам/ожиданиям. Грубо говоря, это симптом.
- «Где?» — в какой части продукта или системы (в каком модуле, на какой странице, с какой фичей)? Назовем это локацией.
- «Когда?» — то есть при каких условиях воспроизводится дефект. Это триггер.
«Incorrect Site Search».
О чем нам это говорит? Можно понять только то, что дефект связан с определенным функционалом, а именно с поиском по сайту. Это ответ на вопрос «Где?». Но что именно не так с поиском? В чем заключается некорректное поведение? Загадка. При каких условиях воспроизводится дефект? Тоже загадка.Другое summary того же бага: «The result of the action of the empty site search».
Уже теплее. Можно понять, с каким функционалом связан дефект и даже каковы условия его воспроизведения. Но о том, что именно происходит не так — ни слова. «Просто the result» — какой-то результат, без всякой конкретики. А ведь это самое вкусное!Чтобы понять, в чем проблема, нужно прочитать описание полностью, да еще и попробовать воспроизвести. При пустом поисковом запросе перед списком товаров появляется секция с названиями категорий, и в ней одна картинка слишком большая, что нарушает UI. Кратко в summary это можно описать так:
«After empty search request too large image is shown in “category-view” div».К этому багу нужно приложить скриншот, конечно.
И вот еще один пример:
«comment».
Да, даже и так бывает. Одно слово, намекающее на область функционала.Вот так было бы понятнее:
«Fatal error:463 on attempt to post review at product description page».«broken layout».
Здесь описан симптом, некое некорректное поведение, так что такое описание можно считать ответом (хотя и очень приблизительным) на вопрос «Что (происходит)?». Но где именно это происходит? На какой-то конкретной странице? На любой странице? Непонятно. А что надо сделать, чтобы «верстка поползла»? Ни одного намека.Правильное краткое описание этого же бага:
“On 150% zoom images at all pages are superimposed”.И еще пример:
«Регистрация с невалидным адресом электронной почты«.Возможно, название подошло бы для тест-кейса. Понятно, с какой фичей связан дефект (регистрация), известен и триггер — «невалидный эмэйл» (конечно, важно уточнить в подробном описании: «невалидный» — это какой?). Но баг-то в чем?
Более корректно было описать так:
«Возможна регистрация с невалидным адресом электронной почты».
Или
«При регистрации не происходит валидация адреса электронной почты».Несколько подсказок, как написать хорошее summary для дефекта
Коротко, но не слишком.
Не забываем, что summary — это все-таки краткое описание, так что писать небольшое эссе на тему в этом поле тоже не стоит. В большинстве случаев вам хватит примерно 7-10 слов (не считая предлогов). Но не стоит вдаваться в другую крайность — 1-3 словами вы не сможете описать ситуацию достаточно ясно.Избавляйтесь от слов-паразитов , не лейте воду.
Вот пример: «The opening of each new image when viewed on a new tab» .
Многабукаф, а в итоге описан только симптом, и то невнятно.А суть здесь в том, что каждая картинка при клике на нее открывается в новой вкладке, что, разумеется, неудобно и не соответствует разумным ожиданиям пользователя. Это можно сказать короче и точнее: «On click each image opens in a new tab».
Еще бы уточнить, в каком разделе сайта это происходит (точно не во всех), и было бы вообще отлично.Еще пример:
«На сайте зайдя в раздел покупок, выдаетcя ошибка при попытке оставить отзыв».
«Подъезжая к сией станции. у меня слетела шляпа». Не умея использовать деепричастные обороты, не стоит этого делать. И вообще лучше избегать громоздких конструкций.«На сайте» — просто ни о чем. Все дефекты, которые заводят в этом проекте, касаются именно этого сайта, так зачем повторять это в названии дефекта?
Сокращаем:
«Ошибка при попытке оставить отзыв в разделе покупок» — кстати, какая? Неплохо бы обозначить ее хоть как-то — класс, код. Полный текст сообщения об ошибке, конечно, приводить в summary бага необязательно.Создание багов с непонятными названиями приводит к сложностям для самих же тестировщиков. Перед созданием дефекта нужно поискать в баг-трэкинговой системе, чтобы убедиться, что это не дубликат. И здесь нам как раз будут полезны краткие, ясные и однозначные названия дефектов.
2. Отсутствие ожидаемых результатов
Когда тестировщик заносит дефект, конечно, у него/нее обычно есть какое-то представление о том, как должно быть правильно. Но вот загвоздка — разработчики, как и все остальные люди, не обладают телепатией! И если ожидаемые результаты не описаны явно, то всегда есть вероятность, что возникнет непонимание.
Кроме того, есть и другой риск. Разработчик может сделать собственные выводы о том, как же должно быть правильно, затем «исправить» и отправить на верификацию. Тут начнутся споры: «Исправлено!» — «Не исправлено!» — «Но вот же, здесь поменяли!» — «Так вообще не это было нужно!». В итоге — потрачено время, силы, нервы нескольких людей.
Гораздо проще сразу объяснить, какого результата вы ожидаете. Даже если кажется, что это очевидно и всем понятно и так. Один из законов Мэрфи гласит: «Всё, что может быть понято неправильно, будет понято неправильно.» Особенно начинающим тестировщикам советую ввести это в привычку: всегда прописывать ожидаемые результаты явно. (Еще лучше, если вы можете подкрепить это ссылкой на конкретное требование.)3. Невнятные шаги воспроизведения
Как бы банально это ни звучало, шаги лучше описывать пошагово. Одна строчка — один шаг. Можно нумеровать, можно не нумеровать, это по желанию. Но не стоит писать одним длинным абзацем, нагромождая when, while, which, then и тому подобное. Глядя на такое длинное и сложное предложение, воспроизвести дефект очень сложно. Даже простую ситуацию можно запутать, описав ее, например, так:
«When purchasing products, when you press a button to buy, pop-up window, which when pressed to continue shopping, throws on the orders page»
Эту ситуацию можно было бы описать так:
“Continue shopping” button redirects to “Orders” page”
Разумеется, эта кнопка не должна перекидывать на страницу заказа, покупатель должен оставаться там же, где и был, чтобы, собственно, продолжать покупки. Эти детали уже можно описать в Description.4. Скриншот вместо фактического результата
Добавлять скриншоты к дефектам, особенно описывающим проблемы пользовательского интерфейса, конечно, очень полезно. Но! Скриншот не заменяет внятного текстового описания.
«Фактический результат: «Запрос не прошел валидацию (см. скриншот)«Вот так не стоит делать. Исходя из своего опыта, точно могу сказать, что ситуации, когда фактический результат – что-то неописуемое словами, крайне редка. Да, случались в моей практике и такие баги, что приходилось снимать видео, чтобы нормально проиллюстрировать, что происходит. Но это было буквально пару раз за 10 лет. Практически всегда можно объяснить ситуацию человеческим языком. Если с этим возникают сложности, то, возможно, вы не до конца понимаете происходящее. Скриншот – источник дополнительной информации.
Между прочим, в этом случае скриншот был по каким-то причинам утрачен, и разобраться, что за баг уже просто нереально.
Кстати, иногда и сам скриншот нуждается в доработке, особенно когда интерфейс сложный. Бывает, приходится долго всматриваться в скриншот, чтобы понять, а где же баг. Нарисуйте стрелку, обведите кружочком или подчеркните, чтобы было сразу очевидно, в каком месте проявляется дефект. Иногда стоит просто отрезать лишнее и оставить только то, что полезно для иллюстрации бага.
Вообще тестирование можно рассматривать как информационный сервис: наша задача дать ясную и объективную информацию о качестве продукта. Найти баг – мало, нужно еще уметь правильно его описать. Поэтому тестировщикам необходимо уметь излагать свои мысли логично, понятно, последовательно, без лишних слов, и в то же время точно.
Устраняем ошибки, повышая свою квалификацию на курсах.
What is a Production Environment?
Simply put, a production environment is where the latest versions of software, products, or updates are pushed live to the intended users. Think of it as a final phase of production. This is the environment where the end user can see, experience, and interact with the new product. All testing is completed before this point, and all bugs are squashed. Whereas a development environment may contain several different versions of a product or update being worked on and tested, a production environment contains just the final version of the product in order to avoid any confusion or security vulnerabilities.
What is the difference between a production environment and development and stage environments?
The best way to understand the differences between a development, stage, and production environment is to think of it in terms of a band – the practice, dress rehearsal, and live performance. So what does this mean exactly? In this analogy, the development environment is like the band’s practice setting. This is where a band would come up with new songs, write and refine the music, practice, and hash out any issues. A development environment is essentially what is on the development team’s computers. It’s where the developers are writing their code, making code updates, and where all their commits and branches exist. The development environment does not affect what the end user sees. Instead, it allows development to try out new features and updates before pushing them forward to deployment. A lot of preliminary testing is done at this point before moving to the next environment – the stage environment.
Like with a band’s final dress rehearsal before a live performance, any major issues must have been already addressed and resolved before hitting the stage environment (also known as a pre-production environment). The product version in this environment should be as close to the real thing as possible, and should nearly mirror what the end users would see in the production environment. This stage can often be rather quick, as most bugs and issues should have already been hashed out in the development environment. Here is where the final testing of upcoming product versions takes place before they are readied for deployment in the production environment. A good example is a beta version of a videogame – there may be some minor bugs you encounter, but overall, it works how the game is intended to be played.
This means the production environment is the live performance. This is what the users came for, and they are expecting a good show. The production environment refers to where the software or products have been made live for use of the intended users. Once something is in the production environment, any and all bugs need to have already been fixed and the product or update must work perfectly. All testing is done in the development and staging environments, whereas new products and updates are launched in the production environment. If any bugs exist in the production environment, they will be seen by the user. And nobody wants an angry or frustrated user.
What are the benefits of a production environment strategy?
An infrastructure strategy with development, stage, and production environments allows teams to build, test, and deploy products in different phases to ensure high quality products for their users. With developers building in a separate development environment, it allows them to experiment with new features, updates, and improvements without affecting the end product. The stage environment allows your team to test a near-final version of the product to ensure proper functioning and a good user experience before the product or update is deployed. Once the product or update is in the production environment, all testing has been completed, all bugs fixed, and it is now ready for the user.
This type of infrastructure allows teams to fully control the quality of their product releases while encouraging improvements and innovation. It is helpful for effectively tracking a new product or updates progress through development, testing, and deployment while also ensuring the end user is provided with the best possible experience.
- Тестирование
- Основы