Если вы можете общаться с вашим программным обеспечением с использованием текста, то у меня был успех в прошлых проектах, которые меняли мою собственную структуру, используя expect.
Структура, в которой я готовил хранимые тесты в виде файлов XML, с использованием простой разметки стиля xUnit. Затем xml-файлы были преобразованы в исполняемые тесты с использованием таблицы стилей. Я закончил преобразование тестов в Tcl/Expect, но вы могли превратить их во что угодно. Фактически, если вы хотите, вы можете преобразовать их на несколько языков, в зависимости от ваших потребностей.
Несколько люди любезно напомнили мне (так же, как вы напомните вам бедную dottering дедушка о слюне на подбородке), что мы находимся в 21 м века, когда они спросить, почему я выбрал бы Tcl через некоторые более современный язык. Как оказалось, для целей такого тестирования я еще не нашел лучшего выбора. Язык Tcl по-прежнему ногами в этой области. Поверьте мне, я однажды не проснулся и не сказал себе «что мне нужно, чтобы тестовая среда была реализована на языке сценариев, который все будут ненавидеть!»
Верьте или нет, я действительно искал инструмент, любой инструмент, который имел следующие характеристики:
- Кроссплатформенность. Это не подлежит обсуждению. Мы делаем много кросс-платформенной разработки, и мы уже используем WAY слишком много инструментов, которые не поддерживают кросс-платформенную разработку.
- Простой синтаксис. Скажите, что вы хотите о Tcl, но синтаксис очень обычный. Я знал, что некоторый собственный код, вероятно, ползет даже в XML-файлы (и первоначально это был только Tcl, без XML), и я хотел, чтобы синтаксис был понятным для не-программиста. Эта простота является основной прочностью Tcl. Как оказалось, это также упростило преобразование XML.
- Бесплатно.Моя любимая цена ;-)
- Письменные тесты как простые xml-файлы разрешали не-программистам писать тесты уровня приема клиентов - не требуется программирование.
- Легко расширенный.
Я не отправлялся в дом, увеличивая это до такой степени, насколько я есть. Первоначально я рассматривал установленные тестовые рамки, такие как DejaGnu и android. В основном у них было слишком много функций. Они были настолько нагружены, что я не думал, что им будет легко начать проект без большого обучения. Глядя на DejaGnu, меня заинтересовал Tcl в целом, и после краткого взгляда на tcltest я почти сдался. Как DejaGnu, так и tcltest предполагают, что вы являетесь продвинутым скриптом Tcl, который я не думал, что кто-либо из моих компаний когда-либо будет. Кроме того, я хотел, чтобы платформа тестирования (если возможно) поддерживала xUnit-тип тестовой среды, и ни один из этих инструментов не выполнялся.
В конце концов я нашел TclTkUnit, платформу тестирования на основе Tcl, разработанную вдоль линий xUnit. Это был всего лишь короткий шаг логики, чтобы понять, что я могу запустить TclTkUnit в Expect вместо tclsh и получить все, что мне нужно.
По мере того, как он привык больше, я добавил еще одну таблицу стилей, чтобы сделать XML-файлы красиво в веб-браузере. В тестовой структуре создана собственная документация.
В другом проекте нам нужна очень простая атмосфера sim/stim, чтобы подражать человеку, бросающему переключатели и нажав кнопки на части оборудования, которого у нас не было. Прошло всего несколько часов, чтобы взломать тестовую структуру для работы в качестве симулятора. Создание структуры заняло определенную работу, но мы чувствовали, что в долгосрочной перспективе это принесло пользу. Я действительно считаю, что эти типы непредвиденных последствий создания ваших собственных инструментов - это то, почему люди в гибком сообществе & XP, в частности, всегда были такими сильными сторонниками.
У меня нет ничего против TCL, но FYI «Ожидающая» подобная семантика была перенесена на другие языки, например pexpect для Python (http://pypi.python.org/pypi/pexpect). – orip
Вы использовали их недавно? В прошлый раз, когда я смотрел на это, у меня было достаточно проблем с надежностью, что я чувствовал, что они отрицательно повлияли на тест. Если тест не удался, я не хотел задаваться вопросом, где проблема: SUT или тестовая среда? Проблема для меня заключалась в том, что pyexpect или jexpect открывали открытые соединения сокетов. – DaveParillo