Мы уже знаем, что тестирование — важная часть создания любого продукта. Но зачем оно нужно на самом деле и какие принципы лежат в его основе? Давайте разберемся.
Зачем тестировать ПО?
Представьте: вы купили новый смартфон, а у него не работает камера или постоянно зависают приложения. Приятно? Вряд ли. Точно так же и с программами. Вот главные цели тестирования:
- Найти ошибки (баги). Это очевидно. Тестировщики ищут ошибки, из-за которых программа работает неправильно, теряет данные или просто неудобна.
- Улучшить качество продукта. Чем меньше ошибок, тем стабильнее и надёжнее работает программа. Пользователи это оценят.
- Снизить риски. Ошибки, найденные в начале разработки, исправить гораздо дешевле. Представьте, сколько денег и репутации потеряет банк, если в его онлайн-системе из-за ошибки будут неправильно списываться деньги!
- Проверить, соответствует ли программа требованиям. Программа должна делать то, что от неё ожидают. Тестирование подтверждает, что функционал соответствует изначальным требованиям заказчика или пользователя.
- Оценить производительность и удобство. Важно не только, что программа делает, но и как быстро она работает, не «тормозит» ли, и насколько понятен её интерфейс.
Тестирование не просто ищет ошибки. Оно даёт уверенность, что продукт работает как надо и будет полезен пользователям.
Ключевые принципы тестирования
Чтобы тестирование было эффективным, оно опирается на несколько фундаментальных принципов. Их сформулировали эксперты, чтобы мы могли работать системно.
- Тестирование показывает наличие дефектов, а не их отсутствие. Мы никогда не можем гарантировать 100% отсутствие ошибок. Тестирование — это поиск. Чем больше ищем, тем больше шансов найти. Но даже после самого тщательного тестирования могут остаться скрытые баги.
- Исчерпывающее тестирование невозможно. Проверить все возможные комбинации данных, сценарии использования и состояния системы практически нереально. Представьте калькулятор: сколько комбинаций чисел и операций можно ввести? Миллиарды! Поэтому мы используем специальные техники, чтобы выбрать самые важные и вероятные сценарии.
- Начинайте тестировать как можно раньше. Чем раньше найдём дефект, тем дешевле его исправить. Ошибка, обнаруженная на этапе проектирования, займёт минуты. Если же она «дожила» до выпуска продукта, это может стоить компании миллионы и подорвать репутацию.
- Скопление дефектов. Большинство дефектов обычно сосредоточено в небольшом количестве модулей или функций. Это похоже на закон Парето (80/20): 80% проблем вызваны 20% кода. Опытные тестировщики знают, где «копать» глубже.
- Парадокс пестицида. Если одни и те же тесты повторять снова и снова, они перестанут находить новые дефекты. Программа меняется, и тесты тоже должны развиваться. Нужно постоянно обновлять и создавать новые тест-кейсы, чтобы «поймать» новые ошибки.
- Тестирование зависит от контекста. Подходы к тестированию сильно отличаются в зависимости от типа продукта. Тестирование мобильного приложения для банка будет отличаться от тестирования компьютерной игры или сайта-визитки. Важно понимать специфику проекта.
- Заблуждение об отсутствии ошибок. Если программа работает идеально, но при этом никому не нужна или не решает реальных проблем пользователя, то её качество всё равно низкое. Тестирование должно не только находить ошибки, но и убеждаться, что продукт соответствует потребностям пользователя.
Пример из жизни: Вы тестируете онлайн-магазин. Принцип «Тестирование зависит от контекста» означает, что вы уделите особое внимание безопасности платежей, скорости загрузки страниц с товарами и удобству оформления заказа, а не, скажем, цвету кнопки «Добавить в корзину» (хотя и это важно для UI/UX).
Теперь, когда мы понимаем, зачем и по каким принципам мы тестируем, пришло время узнать, кто и как участвует в этом процессе. В следующем разделе мы погрузимся в мир жизненного цикла разработки программного обеспечения и узнаем, где в нём место тестировщику.