четверг, 22 мая 2008 г.

Динамическое автоматизированное тестирование

В процессе непосредственно тестирования мы сталкиваемся с тем, что выполняем одну и туже операцию сотни раз в пределах одной итерации тестирования или в несколько раз больше за весь цикл тестирования. Для того, чтобы избавится от такой рутинной работы, кто-то, видимо очень умный, придумал инструменты для автоматизированного тестирования. Теперь мы "просто" пишем автоматизированные тесты, которые будет за нас нажимать кнопки, вводить данные, проверять соответствие и иногда даже писать баги в систему трекинга ошибок. Все стало намного проще, и у нас появилось больше времени на придумывание хитроумных сценариев, создание тестовых данных для увеличения покрытия автоматизированных тестов.

Я же думаю, что на самом деле не так все просто. И что, процесс требует от нас дополнительной автоматизации, которую, как я считаю каждый по отдельности реализует в пределах своего проекта, в зависимости от требований и видов проводимых тестов. Этот процесс - Автоматическая Генерация Тест Кейсов и Тестовых Данных.

В данный момент я нахожусь на стадии написания более менее универсального генератора, основанного на простейших принципах (пилотная версия уже доступна ProTesting Test Case Generator):
1. В процессе тестирования мы используем данные, создавая которые, мы пользуемся определенными требованиями.
2. Каждое требование можно условно разбить на несколько под-требований:
• требование к значению
• требование к формату
• требование к вводимым символам
3. Генерация по под-требованиям поддается простейшим правилам, которые могут быть запрограммированы.

Исходя из последнего пункта, раз требования по генерации могут быть запрограммированы, значит процесс Генерации Тестовых Данных можно автоматизировать. То есть мы можем один раз написать генератор и использовать его в дальнейшей работе, зная, что данные будут генерироваться исходя из поставленных требований. Единственное, что остается тестировщик это описать требования к тестовым данным.

Приведу пример, для более наглядной демонстрации:
Поле: Дата Рождения
Требования:
• значение - дата,
• формат день.месяц.год,
• разрешены только цифры и символ "."
Дополнительные требования: дата в интервале от 1908 до 2008 годов

Имея в требованиях интервал допустимых значений, мы с легко можем определить позитивные и негативные тест кейсы, используя правила для проверки граничных значений:

Позитивные, если границы включены: левая граница, правая граница и значение внутри интервала
Позитивные, если границы НЕ включены: значение внутри интервала
Негативные, если границы включены: меньше левой граница, больше правой границы
Негативные, если границы НЕ включены: левая граница, правая граница


Причем принцип генерации одинаков для любых типов значений (целое число, число с десятичной точкой, дата), к которым применяется требование по граничным условиям. А это значит, что позитивные и негативные значения в тест кейсы можно генерировать динамически в процессе прогона теста.

Далее накладываем дополнительные условия по формату и разрешенным символам и получаем готовые наборы данных удовлетворяющие выставленным требованиям.

Аналогичные правила к генерации значений можно применить и к строковым данным, накладывая на них требования по длине, которые является частным случаем требований на граничные условия с фиксированной постоянно включенной левой границей:
• Строка длиной 25 символов - это строка с длиной в интервале от 0 до 25 символов.

То есть при генерации строки заданной длины мы пользуемся теми же правилами, что и при генерации строки с требованиями по граничным условиям.


Таким образом мы переходим на принципиально новый уровень автоматизации тестирования - Динамическое Автоматизированное Тестирование, где тест кейсы генерируются непосредственно во время прогона автоматического теста.

Отправить комментарий

Условия копирования публикаций:

Все публикации в данном блоге являются частной собственностью авторов. Любое копирование информации допускается только при условии указания имени автора и активной ссылки на источник.