На какой основе решается писать автотесты?
Читайте внимательнее, я дал ссылку на пост.
...
To Mike
Тест-план _включает в себя_ автоматические тесты, но автотесты не должны писаться на основе ручных тесткейсов.
Ещё раз повторюсь. НЕТ ручных тесткейсов. Тесткейс - это СЛУЧАЙ тестовый, который нужно протестировать. Если вы решите его автоматизировать -то будет автоматический тест, нет - будет ручно.
Конечно, это неудобно для тест-менеджера - ему надо согласовывать тестплан с автоматизатором.
Что значит - неудобно? Это его обязанность.
Но ему (или тестдизайнеру) в любом случае прийдётся это делать - иначе либо автотесты будут писатся наобум, либо они будут неэффективны так как соответствующие тесткейсы не были расчитаны на автоматизацию.
Давайте ещё раз.
Тест-кейс - описывает что нужно протестировать и как протестировать.
Вопрос - что нужно протестировать - не относится к автоматизации.
Вопрос - как протестировать - относится.
Но вначале то мы пишем что тестируем, а потом уже решаем как....
Если решаем, что вот эти тесты вручную, то далее расписываем детально пошагово. Иначе - делаем документ, где описываем какой тестовый фреймоврк будет создан (прикидки), затем какие классы будут, методы и т.п. Выносим в этот документ список тескейсов, которые будут автоматизированы...
Что вы называете "логикой"? Алгоритмы и интерфейсы модулей надо тестировать соответстующими тестами (юнит-тестами, компонентными, API-тестами). Компонентные тесты пишут обычно разработчики. API - тестеры.
А почему бизнес-логику нельзя тестировать через GUI неясно. Приведите развёрнутую аргументацию.
Тесты на интерфейс должны заключаться в том, что внутренние функции действительно выведены наружу в соотствии со спецификацией.
Мы уже не отвечаем на вопрос - правильно ли работают эти функции с точки зрения алгоритмом. И соответственно наши тесты уже не выглядят как: ввести 100 значений и убедиться, что получили 100 верных результатов. Этими тестами мы должны раньше были заниматься и с помощью средств протестировать вне интерфейса.
Под логикой я в данной случае обобщил проверку алгоритмов (модулей), интегрированные тесты, системные. (может быть лишнее слово "логика" ввела в заблуждение)
Тестирование GUI - это завершающая часть тестирования, когда в принципе уже все готово внутри (ядро) и осталось ответить на вопросы, например:
1. А правильно ли мы вывели управляющие элементы наружу?
2. А какой дизайн будет у нашего интерфейса? Соотвествует ли он спецификациям?
3. Если результат получается визуально - то действительно ли доносится до пользователя в том виде, как он был получен функциональными тестами.
Т.е. если стек тестов, написанных не на GUI уровне проходит нормально, то осталось убедиться, что к интерфейсу "прикрутили" именно то, что требовала спецификация.
Постараюсь доходчиво аргументировать:
Если вы начинаете "тыкаться" по менюшкам, чтобы ввести кучу данных, оставляя на ночь TestComplete и находите в результате ошибки в ядре (и в ТС) - это элементарная потеря времени, т.к. на открытие формочек, ползание курсора и ввод визуально данных уходит на порядок (если не больше) выше времени, чем если эти же данные подавались на вашу внутреннюю процедуру, которая тестирует это невизуально. Это проще, но это неэффективно. Вдобавок вы не сможете весь функционал через GUI проверить.