Неисправное программное приложение может оказать значительное влияние на доходы, авторитет и репутацию разработчика в долгосрочной перспективе. Прежде чем передать программное обеспечение заказчику, каждая компания должна убедиться, что оно работает безупречно и соответствует всем ее требованиям или спецификациям. Существует множество случаев, когда незначительные дефекты в программном обеспечении приводили к человеческим и финансовым потерям.
Таким образом, независимость в тестировании программного обеспечения — это качество, которое многие люди ценят в своей повседневной жизни. В качестве примера можно привести советы и помощь, которые они получают от независимых страховых брокеров, независимых финансовых консультантов или даже информацию, которую они собирают от друзей и знакомых в определенных ситуациях. Без этих независимых советов риск быть использованным или принять неверное решение был бы гораздо выше.
Как вы думаете, что бы произошло, если бы производителю автомобилей поручили проводить все технические осмотры? Да, дороги вскоре были бы заполнены автомобилями этого производителя. Если бы судью регулярно приглашали на ужины с подсудимыми или прокурорами, могли бы вы быть уверены, что его решение по предстоящему судебному делу будет беспристрастным? Мы бы точно не были уверены. Эти два вопроса могут помочь нам понять, почему независимые испытания необходимы.
Прежде чем сосредоточиться на важности и преимуществах независимого тестирования, мы рассмотрим те уровни тестирования, которые не являются полностью независимыми. Чтобы понять, почему этим уровням не хватает независимости, мы должны рассмотреть различные перспективы, подходы и цели людей, привлеченных для их выполнения. Мы также должны понять, что тесты полезны только в том случае, если они проводятся в разрушительном процессе.
Тестирование разработчика программистом
Тесты разработчика подготавливаются и выполняются человеком, который написал программное обеспечение. В этом типе тестирования наблюдается явный недостаток независимости. Хотя оно может быть полезно как предшественник более строгого тестирования, мнение человека, пишущего и выполняющего тесты, может быть затуманено предвзятостью. Разработчик хочет получить свой продукт, но его подход к тестированию будет таким же.
Он не будет так стремиться сломать свой продукт, как человек, не участвующий в его производстве.
Как говорит Гленфорд Майерс (автор книги “Искусство тестирования программного обеспечения”), “мышление разработчика — это мышление человека, который строит и создает, а мышление тестировщика сосредоточено на поиске дефектов”.
Это означает, что они дополняют друг друга, но не заменяют.
Интеграционное тестирование разработки
Другим обычным уровнем тестирования программного обеспечения является тестирование разработки, выполняемое встроенным тестировщиком или командой, которая подчиняется непосредственно менеджеру по разработке. Хотя это шаг к независимому тестированию и во многом может считаться необходимым, этот уровень тестирования не должен рассматриваться как адекватный для поставки программного обеспечения заказчику или конечному пользователю. Перед тестировщиком или командой, выполняющей эти интеграционные тесты разработки, может быть поставлена задача снизить стоимость тестирования из-за ограничений по времени или бюджету. Следует также учитывать среду, в которой проводятся эти тесты.
Среды разработки, как правило, не являются репрезентативными для среды, в которой программное обеспечение в итоге будет поставляться. Большинство сред разработки предназначены для небольшого числа пользователей или не имеют полной интеграции, в отличие от тестовых или производственных сред, где работает множество системных процессов и пользователей. Стресс-тестирование и другие формы тестирования производительности невозможны в ограниченных средах разработки.
Тестирование решения и приемочное тестирование
Хороший уровень независимого тестирования может быть достигнут командой тестировщиков, независимых и внешних по отношению к команде разработчиков, но подчиняющихся руководству проекта. Этот уровень тестирования обычно проводится в специальной среде, напоминающей производственную среду, в которой поставляется конечный продукт.
Он обеспечивает определенную степень независимости, но на него могут влиять цели проекта и, что более важно, ограничительные сроки, установленные для поставки. И снова мы можем столкнуться с предрассудками. В данном случае это предубеждение не в пользу продукта, а в пользу проекта.
Независимое тестирование
Полностью независимая команда тестирования программного обеспечения — это отдельная команда, которая отчитывается перед организацией наравне с командами разработки и/или проекта. В идеале она должна состоять из специалистов по продукту, специалистов по технологиям и специалистов по тестированию, таких как тестировщики безопасности, тестировщики сертификации или эксперты по автоматизации тестирования.
Цель тестирования – установить, были ли выполнены требования к конкретным продуктам или услугам. Команда независимых тестировщиков должна быть достаточно смелой, чтобы задать все вопросы о требованиях, чтобы выработать общее понимание и базу знаний.
Основные преимущества независимого тестирования
Независимое тестирование превосходит традиционное тестирование по многим параметрам. Давайте рассмотрим некоторые из ключевых преимуществ, которые оно дает:
- Улучшенное качество программного обеспечения:
Одним из основных преимуществ передачи тестирования на аутсорсинг независимым тестирующим организациям является повышение качества программного обеспечения. Независимые команды тестировщиков участвуют в беспристрастном процессе и гарантируют, что продукт разработан в соответствии с требованиями заказчика и отвечает поставленным целям, сохраняя при этом высокое качество.
- Опытная и квалифицированная рабочая сила:
Независимые организации по тестированию располагают опытным и квалифицированным персоналом для проведения тестирования наилучшим образом. Они нанимают специалистов в различных областях тестирования, таких как автоматическое тестирование, ручное тестирование, нагрузочное тестирование, тестирование безопасности и т. д. Независимые аудиторы имеют большое количество опытных и квалифицированных сотрудников для проведения тестирования наилучшим образом.
- Снижение затрат на жизненный цикл:
Организации, нанимающие независимых тестировщиков, могут сосредоточиться исключительно на качестве и соответствии требованиям, а также на ремонтопригодности и масштабируемости для удовлетворения будущих потребностей. Это обеспечивает низкий уровень отказов и снижает затраты на обслуживание. Строгие циклы тестирования обеспечиваются для функциональных и нефункциональных аспектов, таких как производительность и управление стрессом.
- Сокращение времени выхода на рынок:
Время выхода на рынок сокращается и улучшается для организаций с независимой практикой тестирования. Доступ к опыту автоматизации тестирования обеспечивает более быстрые циклы тестирования. Предсказуемость усилий по тестированию обеспечивает своевременность. Оптимизация персонала обеспечивает эффективное управление динамичными требованиями.