Возникла проблема с запуском тестов через Jenkins.
Тесты состоят из Ant + Selenium + JUnit.
На удалённой установленна ОС Ubuntu, в домашней папке лежит selenium-server-standalone-2.31.0.jar. Тест организован следующим образом. Есть класс, который содежит метод TurnUp, - для создания кастомного профиля и подключения к selenium server.
public void TurnUp() throws Throwable
{
profile = new FirefoxProfile(new File("resources"));
profile.setAssumeUntrustedCertificateIssuer(false);
DesiredCapabilities capabillities = new DesiredCapabilities().firefox();
capabillities.setCapability(FirefoxDriver.PROFILE, profile);
driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), capabillities);
}
Собственно, в других пакетах проекта, лежат готовые сценарии для тестов. testAuthorization(), testForum(), testAdmin() и тд. Из основого класса с помощью аннтоации @Before, вызываю метод TurnUp, для того, чтобы подключить кастомный профиль FF, установить соединение с селениум сервером и начать вызывать методы: testAuthorization(), testForum(), testAdmin() - используя @Test.
Думаю пока всё понятно...
Дескриптор проекта выглядит примерно следующим образом:
И так, для того чтобы запустить данный тест, на своей машине, я запускаю из командной строки selenium-server
java -jar selenium-server.2.31.0.jar
После, из корня проекта
ant some_job
Всё отлично. На моей локале открывается кастомный ФФ профиль, который подключил, выполняются тесты.
Проблема с запуском на Jenkins'е. Не так давно писал тест, который запускали Selenium server из кода, но решили отказатся от этого. Теперь, выглядит приблизительно следующим образом. На удалённой машине имеется уже установленный jenkins. Cоздаю новый job:
имя, Run Xvnc during build, Skip internal tag, для ant - some_job
После, подключаюсь удалённо по shh, выполняю запуск ручками selenium-server, а затем, запускаю сам тест на jenkins'е
Получаю вот такой вот стек-трейс
clean:
compile:
[javac] Compiling 9 source files to /var/lib/jenkins/jobs/SomeJob - Create Order/workspace/build
some_job:
Unable to obtain resource from /var/lib/jenkins/jobs/SomeJob - Create Order/workspace/resources/cert8.db: java.util.zip.ZipException: error in opening zip file
[junit] Unable to obtain resource from /var/lib/jenkins/jobs/SomeJob - Create Order/workspace/resources/cert8.db:
[junit] java.util.zip.ZipException: error in opening zip file
[junit] at java.util.zip.ZipFile.open(Native Method)
[junit] at java.util.zip.ZipFile.<init>(ZipFile.java:127)
[junit] at java.util.jar.JarFile.<init>(JarFile.java:135)
[junit] at java.util.jar.JarFile.<init>(JarFile.java:99)
[junit] at org.apache.tools.ant.AntClassLoader.getResourceURL(AntClassLoader.java:1002)
[junit] at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.findNextResource(AntClassLoader.java:145)
[junit] at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.<init>(AntClassLoader.java:109)
[junit] at org.apache.tools.ant.AntClassLoader.findResources(AntClassLoader.java:949)
[junit] at org.apache.tools.ant.AntClassLoader.getNamedResources(AntClassLoader.java:918)
[junit] at org.apache.tools.ant.loader.AntClassLoader5.getResources(AntClassLoader5.java:54)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.checkForkedPath(JUnitTask.java:1135)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1011)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:811)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1808)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:760)
[junit] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[junit] at java.lang.reflect.Method.invoke(Method.java:597)
[junit] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[junit] at org.apache.tools.ant.Task.perform(Task.java:348)
[junit] at org.apache.tools.ant.Target.execute(Target.java:390)
[junit] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[junit] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
[junit] at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
[junit] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[junit] at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
[junit] at org.apache.tools.ant.Main.runBuild(Main.java:801)
[junit] at org.apache.tools.ant.Main.startAnt(Main.java:218)
[junit] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[junit] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
Unable to obtain resource from /var/lib/jenkins/jobs/SomeJob - Create Order/workspace/resources/cert_override.txt: java.util.zip.ZipException: error in opening zip file
[junit] Unable to obtain resource from /var/lib/jenkins/jobs/SomeJob - Create Order/workspace/resources/cert_override.txt:
[junit] java.util.zip.ZipException: error in opening zip file
[junit] at java.util.zip.ZipFile.open(Native Method)
[junit] at java.util.zip.ZipFile.<init>(ZipFile.java:127)
[junit] at java.util.jar.JarFile.<init>(JarFile.java:135)
[junit] at java.util.jar.JarFile.<init>(JarFile.java:99)
[junit] at org.apache.tools.ant.AntClassLoader.getResourceURL(AntClassLoader.java:1002)
[junit] at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.findNextResource(AntClassLoader.java:145)
[junit] at org.apache.tools.ant.AntClassLoader$ResourceEnumeration.<init>(AntClassLoader.java:109)
[junit] at org.apache.tools.ant.AntClassLoader.findResources(AntClassLoader.java:949)
[junit] at org.apache.tools.ant.AntClassLoader.getNamedResources(AntClassLoader.java:918)
[junit] at org.apache.tools.ant.loader.AntClassLoader5.getResources(AntClassLoader5.java:54)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.checkForkedPath(JUnitTask.java:1135)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeAsForked(JUnitTask.java:1011)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:811)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.executeOrQueue(JUnitTask.java:1808)
[junit] at org.apache.tools.ant.taskdefs.optional.junit.JUnitTask.execute(JUnitTask.java:760)
[junit] at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[junit] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[junit] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[junit] at java.lang.reflect.Method.invoke(Method.java:597)
[junit] at org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106)
[junit] at org.apache.tools.ant.Task.perform(Task.java:348)
[junit] at org.apache.tools.ant.Target.execute(Target.java:390)
[junit] at org.apache.tools.ant.Target.performTasks(Target.java:411)
[junit] at org.apache.tools.ant.Project.executeSortedTargets(Project.java:1397)
[junit] at org.apache.tools.ant.Project.executeTarget(Project.java:1366)
[junit] at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41)
[junit] at org.apache.tools.ant.Project.executeTargets(Project.java:1249)
[junit] at org.apache.tools.ant.Main.runBuild(Main.java:801)
[junit] at org.apache.tools.ant.Main.startAnt(Main.java:218)
[junit] at org.apache.tools.ant.launch.Launcher.run(Launcher.java:280)
[junit] at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109)
[junit] Running somejobpacket.SomeJob
[junit] Testsuite: somejobpacket.SomeJob
[junit] Tests run: 1, Failures: 0, Errors: 2, Time elapsed: 45.987 sec
[junit] Tests run: 1, Failures: 0, Errors: 2, Time elapsed: 45.987 sec
[junit]
[junit] Testcase: NewOrderFromAdmin took 45.965 sec
[junit] Caused an ERROR
[junit] Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[junit]
[junit] (firefox:32408): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] (firefox:32415): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] Command duration or timeout: 45.66 seconds
[junit] Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:23:22'
[junit] System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic', java.version: '1.6.0_26'
[junit] Driver info: org.openqa.selenium.remote.RemoteWebDriver
[junit] org.openqa.selenium.WebDriverException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[junit]
[junit] (firefox:32408): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] (firefox:32415): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] Command duration or timeout: 45.66 seconds
[junit] Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:23:22'
[junit] System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic', java.version: '1.6.0_26'
[junit] Driver info: org.openqa.selenium.remote.RemoteWebDriver
[junit] at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[junit] at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:187)
[junit] at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
[junit] at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
[junit] at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:216)
[junit] at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:111)
[junit] at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:129)
[junit] at UVOFramework.Methods.TurnUp(Methods.java:39)
[junit] at somejobpacket.SomeJob.setUp(SomeJob.java:25)
[junit] Caused by: org.openqa.selenium.remote.ErrorHandler$UnknownServerException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[junit]
[junit] (firefox:32408): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] (firefox:32415): Gtk-WARNING **: Locale not supported by C library.
[junit] Using the fallback 'C' locale.
[junit] Error: no display specified
[junit]
[junit] Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:23:22'
[junit] System info: os.name: 'Linux', os.arch: 'i386', os.version: '2.6.38-10-generic', java.version: '1.6.0_26'
[junit] Driver info: driver.version: FirefoxDriver
[junit] at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:106)
[junit] at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:244)
[junit] at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
[junit] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190)
[junit] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:183)
[junit] at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:101)
[junit] at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
[junit] at org.openqa.selenium.remote.server.DefaultDriverFactory.callConstructor(DefaultDriverFactory.java:57)
[junit] at org.openqa.selenium.remote.server.DefaultDriverFactory.newInstance(DefaultDriverFactory.java:51)
[junit] at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:215)
[junit] at org.openqa.selenium.remote.server.DefaultSession$BrowserCreator.call(DefaultSession.java:1)
[junit] at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
[junit] at java.util.concurrent.FutureTask.run(FutureTask.java:138)
[junit] at org.openqa.selenium.remote.server.DefaultSession$1.run(DefaultSession.java:169)
[junit] at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
[junit] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
[junit] at java.lang.Thread.run(Thread.java:662)
[junit]
[junit] Caused an ERROR
[junit] null
[junit] java.lang.NullPointerException
[junit] at UVOFramework.Methods.TurnDown(Methods.java:51)
[junit] at somejobpacket.SomeJob.turnDown(SomeJob.java:31)
[junit]
BUILD FAILED
/var/lib/jenkins/jobs/SomeJob - Create Order/workspace/build.xml:35: Test somejobpacket.SomeJob failed
Total time: 49 seconds
Build step 'Invoke Ant' marked build as failure
Terminating xvnc.
$ vncserver -kill :10
Killing Xvnc4 process ID 32338
Finished: FAILURE
В течении нескольких часов перелопатил интернет в поисках ошибки, - не нашёл. Пытался и с версиями сервера поиграться, и с версиями ФФ,т.к. в связи с этим могла вылезти - Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms , - нифига.
Могли бы пожалуйста подсказать в чём, может быть проблема?
В современном IT мире Bug tracking системы уже не столько помогают, как мешают продуктовой команде развиваться. Когда все общение по проблемам происходит через такие системы теряется коммуникативная связь между тестировщиками, разработчиками и заказчиками. Все обсуждения в рамках задач в карточках занимают непростительно много времени, которое можно было потратить более эффективно. Да и вообще само название такого продукта как "Bug tracking система" несет негативный посыл, ведь все команды стремятся, чтобы багов в их проектах не было.
Так где же мы храним эти баги?
Джира, Багзила , Мантис, Редмайн, Берт, Трелло, Мингл, а может кто то использовал Гугл доки или Гугл таблицы для этого, думаю еще есть варианты.
Каждый из нас работает с Багтрекинг системами или когда либо работал в прошлом.
Как же мы с ними работаем?
Стандартная зарисовка из жизни:
Тестировщик, проверяя очередной новый функционал продукта, сталкивается с некорректным поведением в нем. Конечно же он начинает локализовывать причины его появления и по результатам этого заводит таск в системе.
Для успеха мероприятия он тщательно и подробно описывает его, в чем он состоит и как должна система вести себя корректно и конечно шаги по его воспроизведению.
Далее разработчик через какое то время находит этот таск с багом и пытается воспроизвести проблему у себя, потратив на это как минимум столько же времени сколько ушло на оформление этого таска.
В такой ситуации тратится двойное время на запись-воспроизведение, ошибки где то складируются , теряется фокус.
Как начать?
2013-05-16 16:18
Проблема: не могу понять, как начать тестировать именно в среде Eclipse.
Что есть: открытый Eclipse SDK (Java), к нему добавлены selenium-server-standalone-2.32.0.jar и selenium-java-2.15.0.jar (подключено первое)
Как я поняла надо создать проект, написать код, с помощью которого будет проведено тестирование (понятия не имею какой код, буду благодарна за примеры), как-то запустить, чтобы тестирование началось (как?)
ЗЫ: буду благодарна за хоть какую-нибудь помощь.
Дано: QTP11+WinXP+IE8 и страница (см. прикрепленный файл)
Цель: получить видимый(раскрытый) объект Drop-down list с помощью XPath
Элементы страницы скрываются/показываются используя стили display:none и display:block соответственно.
Маска "//tbody[contains(@style, 'block')]//select" прекрасно находит нужный тег в Selenium IDE и Firebug в любой момент времени,
но QTP по данной маске ничего не находит, так как ,похоже, ищет объекты только по коду, который был загружен в браузер изначально.
Page.sync в данном случае никак не помогает, а использование аттрибута id не позволяет сделать "универсальную" маску, так как количество элементов и их порядок могут меняться.
Какие могут быть варианты заставить QTP найти видимый select по указанной выше XPath маске?