Здравствуйте!
В прошлой записи я рассказывал о том, как много дефектов, в том числе критических, есть в ПО на момент его ввода в эксплуатацию. Для заказчика важно как можно более эффективное выявление и устранение этих дефектов.
Выявить дефекты можно 2 способами:
- Вручную
- Автоматически
Рассмотрим оба этих варианта поподробнее.
Ручной вариант
В этом случае тестировщик делает следующие вещи:
- Пытается «разломать» тестируемое ПО.
- Описывает действия, которые необходимо сделать с программой, чтобы случился сбой.
- После того, как программисты устранили выявленные тестировщиком сбои, он проверяет работу программистов.
- Перед важными событиями (например, сдача очередной версии) он вручную выполняет все имеющиеся у него проверки.
Из всех этих действий творческими являются только первые 2.
Остальные описанные здесь действия являются тупым выполнением проверок по сценариям – нажал кнопку, посмотрел на результат, сверил результат с ожидаемым.
Это нудная, рутинная работа приводит к следующим проблемам:
- Тестировщики выполняют не все проверки, а только некоторые
- Из-за монотонности работы, они часто прибегают к перекурам и другим перерывам, что задерживает проверку
- На выявление новых ошибок не остаётся ни времени, ни энергии.
В экстремальных случаях это приводит к тому, что команда из 10 человек усердно что-то делает целыми днями, но результата (в виде выявленных дефектов) почти нет.
Идеальный вариант
Прежде, чем мы рассмотрим прелести автоматизации, давайте подумаем о том, как процесс выявления дефектов должен выглядеть в идеале.
Все дефекты можно грубо разделить на 2 типа:
- Технические
- Предметные
Технические дефекты – это, например, когда программа виснет.
Предметные дефекты – это когда программа, например, неправильно считает НДС для того или иного товара, но при этом не виснет.
Технические дефекты могут быть выявлены как программистами, так и тестировщиками, так и пользователями.
А вот предметные дефекты могут быть выявлены только теми, кто знает предментую область, т. е. тестировщиками. Как человек может выявить ошибку при подсчёте НДС для товара, если он не знает, как это правильно считать?
В идеальном мире тестировщики большую часть времени посвящают выявлению предметных дефектов.
Автоматизированный вариант
Одно из основных преимуществ автоматизации ПО является освобождение тестировщиков от рутинной работы. То есть, в результате автоматизации они будут заниматься не прогонкой проверок (это будет происходить автоматически), а выявлением тех дефектов, которые невозможно выявить, не зная предметную область приложения.
Автоматизированный процесс проверки ПО выглядит так:
- Тестировщик пишет сценарий проверки.
- Программисты преобразовывают этот сценарий в проверочную программу.
- С этого момента эту проверку можно проводить (без траты времени тестировщика) автоматически.
- А тестировщик может уделить своё время выявлению дефектов, требующих знания предметной области.
Кроме того, при наличии автоматизированных проверочных программ, их можно выполнять бесплатно любое количество раз. Если работать исключительно вручную, то прогонка тестов может обойтись довольно дорого – время тестировщиков тоже стоит денег. Подробнее об экономии за счёт автоматизации проверок ПО можно прочитать здесь.
Как сделать проверочные программы?
Думаю, что теперь преимущества автоматизации проверок ПО очевидны. Возникает вопрос – как создать эти проверочные программы с минимальными трудозатратами?
На этот вопрос есть 2 принципиальных ответа, 2 крайности:
- С самого начала разработки делать не только, собственно ПО, но и проверочные программы для него.
- В процессе разработки не заниматься проверками ПО, и начать делать это только перед вводом продукта в эксплуатацию.
Первый вариант стоит намного меньше денег, чем второй. Более того, с моей точки зрения, второй вариант подходит только для средних и крупных компаний, у которых есть ресурсы на такие дорогостоящие проекты.
Поэтому в следующем выпуске мы поговорим о том, как сделать Ваше приложение проверяемым с самого начала.
Успехов
Дмитрий Писаренко