Техническая документация является неотъемлемой частью любого программного продукта. Она служит источником информации для пользователей, разработчиков и других заинтересованных лиц, помогая им понимать функционал, особенности и правила использования продукта. Для того чтобы техническая документация была точной, актуальной и полезной, технические писатели и тестировщики должны тесно сотрудничать. Сегодня мы рассмотрим роль тестировщика в процессе работы с технической документацией и проиллюстрируем важность этой роли.
Значение тестирования и роли тестировщика
Сегодня никто не сомневается в необходимости тестирования. Это подтверждают логика производства любой продукции (не только в области ИТ) и показатели востребованности профессии тестировщика на современном рынке труда.
По данным портала Test.PRO высокий спрос на тестировщиков обусловлен высокими темпами разработки цифровых продуктов, и эти темпы продолжают расти.
Одновременно с этим в последних исследованиях «Лаборатории качества» (учебного центра по подготовке тестировщиков ПО) указывается, что спрос на тестировщиков остается на высоком уровне несмотря на рост автоматизации. Это связано с тем, что «даже автоматизированное тестирование не может существовать без человека. Тестировщик создает и настраивает автотесты. Код, плагины и программы в его руках – всего лишь инструменты».
Если эти аргументы ещё не убедили вас в важности тестирования, приведем пример одного из самых известных «фиаско» и, к сожалению, человеческой трагедии, причиной которой стало пренебрежение этапом тестирования и испытаний. Крушение ракеты-носителя Space Shuttle Challenger в 1986 году стало для США синонимом оглушительного провала. Это не только повлекло огромные финансовые потери, но и нанесло серьезный репутационный ущерб на политической арене (в контексте космической гонки с СССР).
Ракета взорвалась через 73 секунды после старта, все семь астронавтов погибли. Одной из причин аварии было то, что компания-производитель, Morton Thiokol, не провела достаточного тестирования уплотнительных колец на ускорителях. В результате, при низких температурах, которые были в день старта, кольца стали хрупкими и не выдержали нагрузки, что привело к взрыву ракеты.
Конечно, этот пример пренебрежения испытаниями не относится к области информационных технологий. Однако он наглядно демонстрирует важность тестирования, в том числе и в области ИТ, где материальный ущерб может быть более значительным.
Материальный ущерб в области ИТ из-за пренебрежения тестированием может проявляться в различных формах, например:
- Потери от простоя. Если программное обеспечение или система содержит неисправности, не выявленные в ходе тестирования, это может привести к сбоям и простою системы. В результате, возможна потеря времени и ресурсов на восстановление системы, а также потеря доходов, если бизнес-процессы или сервисы, зависящие от данной системы, станут недоступными.
- Издержки на устранение ошибок. Ошибки, выявленные после развертывания программного обеспечения или системы, могут дорого обойтись при их устранении. Исправление ошибок на ранних стадиях разработки обычно дешевле, чем их исправление после развертывания.
- Потеря доверия клиентов. Серьезные ошибки в системе или программном обеспечении могут привести к потере доверия клиентов.
Примером значительного финансового ущерба, связанного с отсутствием тестирования, является случай компании Samsung в 2013 году. Тогда компания столкнулась с серьезными проблемами из-за неисправностей в программном обеспечении смартфонов Galaxy S4. Samsung была вынуждена выпустить исправленную версию, что привело к дополнительным затратам на разработку и развертывание данного ПО. Проблемы с программным обеспечением также снизили доверие клиентов к компании и могли привести к потере доли рынка.
Другим примером является авария самолета Boeing 737 MAX, которая произошла в результате сбоя в работе программного обеспечения, установленного на самолете. Компанию Boeing обвинили в недостаточном тестировании программного обеспечения. Это привело к двум авариям самолета и гибели более 300 человек. В результате, Boeing понесла значительные финансовые потери и была вынуждена приостановить производство самолета.
Следует отметить, что несмотря на все вышесказанное, использование ПО без тестирования до сих пор является распространенной практикой в некоторых компаниях, где приоритет отдается скорости разработки и выходу продукта на рынок. Это характерно для команд, работающих по методологии Agile, в которой быстрая доставка ПО на пользовательский рынок является основной мерой прогресса.
Важно помнить, что такой подход может привести к серьезным последствиям, включая сбои в работе программного обеспечения, утечку данных, потерю репутации и финансовые убытки.
Чем занимается тестировщик
Тестировщик – это специалист, ответственный за выявление и исправление ошибок в программном обеспечении. В процессе работы тестировщик выполняет следующие задачи:
- Разработка тестовых сценариев. Тестировщик разрабатывает тестовые сценарии, которые имитируют реальное использование программного обеспечения. Сценарии основываются на требованиях к ПО, пользовательской обратной связи и других документах, описывающих функционал и поведение программы. Тестировщик должен учитывать различные аспекты программы, такие как интерфейс, производительность, совместимость и безопасность, чтобы разработать полный набор тестовых сценариев.
- Автоматизация тестирования. В современных условиях тестирование ПО часто проводится в автоматизированном режиме. Тестировщик разрабатывает автоматизированные тестовые сценарии, которые могут быть запущены на различных платформах и в различных средах. Для этого тестировщик использует специализированные инструменты автоматизации тестирования, такие как Selenium, Appium, TestComplete и др.
- Планирование и организация тестирования. Тестировщик планирует и организует процесс тестирования, чтобы оно проводилось эффективно и своевременно. Планирование включает определение этапов тестирования, распределение задач между членами команды тестирования, мониторинг прогресса и управление рисками.
- Выполнение тестирования. Тестировщик выполняет тестирование ПО, запуская тестовые сценарии и проверяя результаты. Во время тестирования тестировщик документирует все найденные ошибки и дефекты, включая подробное описание, шаги воспроизведения и ожидаемый результат.
- Анализ результатов тестирования. После завершения тестирования тестировщик анализирует результаты, чтобы определить, успешно ли прошло ПО тестирование. Если тестирование не прошло успешно, тестировщик консультируется с разработчиками для исправления ошибок и дефектов.
- Поддержание качества программного обеспечения. Тестировщик играет важную роль в поддержании качества ПО на всех этапах его жизненного цикла. Он участвует в обзорах кода, проводит тестирование на ранних этапах разработки, участвует в процессе непрерывной интеграции и работает над улучшением процессов тестирования и качества программного обеспечения в целом.
В сфере ИТ тестирование является неотъемлемой частью процесса разработки программного обеспечения. Тестировщик работает в сотрудничестве с другими членами команды разработки, такими как разработчики, аналитики и технические писатели, чтобы гарантировать, что ПО соответствует требованиям и ожиданиям пользователей. От качества работы тестировщика зависит стабильность, надежность и безопасность ПО.
Взаимодействие тестировщика с техническим писателем
В ходе работы над технической документацией тестировщик взаимодействует не только с разработчиками, но и с техническими писателями. При правильной организации рабочего процесса это сотрудничество должно происходить на разных этапах жизненного цикла документации.
Тестирование документации
Одним из ключевых аспектов сотрудничества тестировщика и технического писателя является тестирование документации. Тестировщик проверяет документацию на предмет точности и актуальности, сравнивая описанный в ней функционал с фактическим поведением программы. Например, если в документации указано, что определенная функция должна работать следующим образом, тестировщик проверяет, соответствует ли это описание реальному поведению функции.
Например, представьте, что технический писатель написал в руководстве пользователя, что для сохранения файла нужно нажать кнопку «Сохранить». Однако, в процессе тестирования тестировщик обнаруживает, что для сохранения файла нужно нажать кнопку «Применить». В этом случае тестировщик должен сообщить об этом техническому писателю, чтобы тот обновил документацию и привел ее в соответствие с текущим состоянием ПО.
Поддержка актуальности документации
Тестировщик также играет важную роль в поддержании актуальности технической документации. В процессе тестирования ПО тестировщик может обнаружить несоответствия между описанием функционала и фактическим поведением программы.
Например, в последнем релизе изменили функциональность программы, и теперь она работает по-новому. Если технический писатель не обновит документацию в соответствии с этими изменениями, пользователи могут столкнуться с несоответствием между описанием в документации и реальным поведением программы. Тестировщик должен убедиться, что технический писатель своевременно обновил документацию, чтобы пользователи имели доступ к актуальной и точной информации.
Обратная связь для технического писателя
Тестировщик может давать ценную обратную связь техническому писателю для улучшения качества документации. Например, тестировщик может указать на места, которые являются неясными или непонятными, или предложить способы улучшения описания.
Допустим, технический писатель дал сложное описание функции, которое тяжело воспринимается обычным пользователем. Тестировщик может предоставить обратную связь, указав на эту проблему и предложив более простой и понятный способ описания функции.
Обучение технического писателя
Тестировщик может сыграть важную роль в обучении технического писателя. Он может предоставить тех писателю информацию о новых функциях и изменениях в программном обеспечении, которые необходимо оформить документально. Кроме того, тестировщик может помочь техническому писателю понять сложные технические понятия и объяснить их простым языком.
Валидация пользовательских сценариев
Тестировщик может помочь техническому писателю при создании и валидации пользовательских сценариев (user stories). Технический писатель часто описывает, как пользователи взаимодействуют с продуктом, и тестировщик может проверить, действительно ли описанные сценарии соответствуют реальным пользовательским действиям в программном обеспечении.
Например, технический писатель описал сценарий регистрации пользователя через приложение. Тестировщик может проверить, соответствует ли это описание реальным шагам регистрации и нет ли несоответствий.
Создание документации для тестов и отчетов
Тестировщик может помогать техническому писателю в создании документации, связанной с тестированием, включая тест-кейсы, баг-репорты, отчеты о результатах тестирования и инструкции по воспроизведению ошибок. Технический писатель может помогать оформлять такие документы, чтобы они были понятны для всех участников процесса разработки.
Например, тестировщик создает детализированный баг-репорт, а технический писатель помогает оптимизировать его описание для разработчиков, чтобы оно было максимально понятным и конкретным.
Предоставление информации о багах для улучшения документации
Тестировщики могут делиться информацией о найденных ошибках и уязвимостях, которые могут повлиять на описание продукта в документации. Это помогает техническому писателю заранее предусмотреть возможные проблемные области и дать пользователям точные инструкции по их предотвращению или решению.
Если тестировщик находит ошибку в работе определенной функции, он может порекомендовать техническому писателю добавить в документацию временное решение для пользователей до выпуска обновления.
Поддержка документации в процессе непрерывной интеграции и развертывания (CI/CD)
При работе в командах, использующих методологии DevOps или Agile, тестировщики могут взаимодействовать с техническим писателем для обеспечения актуальности документации в процессе непрерывной интеграции и развертывания продукта. Технический писатель получает информацию о новых релизах, изменениях в ПО, а тестировщик подтверждает корректность данных.
Пример: В процессе CI/CD тестировщик выявляет изменения в функционале, которые нужно задокументировать. Он может уведомить об этом технического писателя, чтобы тот вовремя обновил соответствующую документацию.
* * *
Роль тестировщика в процессе работы с технической документацией крайне важна. Взаимодействие между тестировщиком и техническим писателем является ключевым для обеспечения качества и актуальности документации. Тестировщик может помочь техническому писателю в тестировании документации, поддержании ее актуальности, предоставлении обратной связи и обучении технического писателя. От эффективности этого сотрудничества зависит качество контента и, как следствие, качество программного обеспечения в целом. Компании должны уделять особое внимание сотрудничеству между тестировщиками и техническими писателями, чтобы гарантировать, что их техническая документация является точной, актуальной и полезной для пользователей.