На этой неделе я получил одну из приятных и хитрых задач: изучить веб- тест Canoo , протестировать его и доказать его полезность для проекта в течение трех дней — убедить менеджеров, что он должен быть частью проекта. Цель проекта — подготовить финансовый отчет объемом ~ 200 страниц, который должен быть проверен с помощью приемочных тестов с нулевой ошибкой. Было рассмотрено несколько инструментов, в том числе Selenium и другие, но Canoo был выбран из-за его возможностей тестирования PDF.
Тестирование PDF документов с помощью веб-теста Maven & Canoo
Canoo Webtest можно использовать тремя различными способами:
- Задача Ant : это оригинальный и очень хорошо документированный дистрибутив для веб-тестирования. Есть только одна ошибка: задача муравья зависит от библиотеки, которую нужно скопировать где-то локально.
- Groovy + GMaven : в блоге Gillemot есть запись, объясняющая, как можно кодировать свой веб-тест в Groovy вместо использования ANT. Это идеальный выбор, если вы уже используете Groovy, но в моем случае дополнительный язык будет стоить ненужных объяснений на техническом совещании ?
- Плагин WebTest Maven2 : плагин webtest-maven-plugin является чистым плагином Maven, который позволяет вашему приложению тестировать созданные PDF-файлы без каких-либо зависимостей от локальных артефактов и без необходимости добавлять Groovy в набор технологий вашего проекта. Это то, что я искал, и это мой главный выбор.
После первого часа эйфории все стало мутно с конфигурацией плагина maven. Я не уверен, что из-за сжатых сроков или просто из-за скудной документации в Интернете, но, тем не менее, после присоединения к списку рассылки Canoo, я начал искать свой путь.
Конфигурация Maven
<dependencies>
<dependency>
<groupId>com.canoo.webtest</groupId>
<artifactId>webtest</artifactId>
<version>3.1-SNAPSHOT</version>
<scope>integration-test</scope>
</dependency>
</dependencies>
<repositories>
<repository>
<id>webtest_dependencies_snapshot</id>
<name>WebTest dependencies</name>
<url>http://webtest.canoo.com/webtest/m2-repo-snapshots</url>
</repository>
<repository>
<id>codehaus</id>
<name>codehaus</name>
<url>http://repository.codehaus.org</url>
</repository>
<repository>
<id>ibiblio.mirrors</id>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
</repository>
</repositories>
<reporting>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>webtest-maven-plugin</artifactId>
</plugin>
</plugins>
</reporting>
Конфигурация веб-теста
Конфигурация теста была немного сложной, потому что я не смог найти работающий пример в сети (основной мотив этой записи в блоге). После двухдневного перевода образцов муравья в maven я наконец получил следующую конфигурацию. Это работает, но все же не идеально, потому что я не уверен во всех его деталях и не уверен, как сделать его модульным. Я обновлю эту запись, как только выясню, как сделать ее модульной, если вы уже знаете, пожалуйста, дайте мне свой отзыв. Я верю, что могут быть сделаны другие усовершенствования, чтобы сделать все решение более элегантным, но пока оно делает свою работу, и у меня есть готовая презентация для менеджеров;)
<target name="all">
<webtest name="Test">
<config protocol="file" haltonerror="false" haltonfailure="false" summary="true" saveresponse="true" resultpath="../../../target/webtest/webtest-results" />
<steps>
<invoke description="get PDF document" url="${basedir}/foo.pdf" />
<pdfVerifyPageCount count="1" />
<pdfVerifyText description="Investment Proposal" text="Canoo webtest line #1" startPage="1" endPage="1" />
</steps>
</webtest>
</target>
Загрузите полный пример
Здесь вы можете скачать полный пример, он требует только Maven 2 и должен работать из коробки. любые проблемы, пытаясь это, пожалуйста, дайте мне знать. Для запуска примера выполните следующие действия:
- Загрузите и распакуйте образец приложения.
- Откройте консоль, перейдите в папку, в которую вы распаковали приложение, и введите:
mvn install eclipse:eclipse
mvn webtest:clean webtest:test webtest:report
Готово, вы найдете отчет в файле .\myWebTestApp\target\site\webtest\index.html
Подтверждения
Я получил полезную поддержку от списков рассылки Webtest , с особой благодарностью Christoph Lipp, nodje и Marc Guillemot. Моя задача еще не закончена, но поддержка этих членов сообщества была фундаментальной для моего первого успеха с использованием веб-теста Canoo.