Нужна помощь. Есть web проект на java. Какой программой можно протестировать, если ссылка статическая, при переходе на разные части программы ссылка не меняется? Selenium тут не подходит.
Раздел форума, посвященный инструменту Selenium недавно вышел на первое место по количеству тем, а общее количество комментариев в этом разделе буквально только что перевалило через 10 000!
Какие есть Учебники и ресурсы по Selenium, интересуется один из участников форума. Конечно, можно погуглить, но было бы хорошо собрать эту информацию в одном месте. Давайте вместо сделаем это?
Следите за новостями?
Правильно делаете! Потому что Selenium развивается очень быстро.
Вышла новая версия Selenium 2.40 – в ней больше нет AndroidDriver и IPhoneDriver. Вместо них рекомендуется использовать appium, ios-driver и selendroid.
Тестирование методом свободного поиска, или тестирование без заранее спроектированных тестов, выполняемых в точном соответствии с планом -- это, наверное, единственный подход к тестированию, который эффективно работает в условиях неопределенности:
когда требований нет или они часто меняются,
когда на ранних этапах разработки отдельные части программы уже работают, но некоторые еще не реализованы,
когда программа активно эволюционирует и не удается зафиксировать тесты,
когда тестировщик осваивает новую предметную область или новый вид тестирования,
когда тестировщик начинает использовать новые методы тест-дизайна, опыта применения которых у него нет,
когда цели следующей итерации тестирования меняются в зависимости от результатов предыдущей итерации,
когда все остальные подходы уже исчерпали себя, а пользователи почему-то все равно не считают наш продукт идеальным :)
Предварительное проектирование тестов -- это попытка построить тактический план тестирования, попытка декомпозировать задачу тестирования до уровня отдельных тестов.
Однако неопределенность мешает построить стабильный тактический план, поскольку в процессе его выполнения обнаруживается новая информация, приводящая к изменению планов и первоначальных оценок.
Что же делать?
Если неопределенность высока, надо отказаться от предварительного проектирования тестов и низкоуровневых планов тестирования. Это позволит сохранить гибкость, даст возможность быстро реагировать на появление новой информации и подстраиваться к изменившейся ситуации.
Надо перейти к тестированию методом свободного поиска.
А как же контроль и учет? Можно ли при этом сохранить управляемость процесса тестирования?
Всем известна народная мудрость: «Встречают по одёжке, а провожают по функционалу». Что бы ни умел ваш продукт, им не будут пользоваться, если он недостаточно удобен и интуитивно не понятен. Возможно, его безумно полезный и жизненно необходимый функционал просто не найдут!
Но что делать? Как оценить удобство? Как его измерить? Как избежать субъективности в оценках? Как сделать продукт, который будет нравиться вашим пользователям, а не тестировщикам? Как донести до руководства необходимость внесения изменений?
Ответить на все эти вопросы далеко не так просто, как кажется. Наука человеко-машинного взаимодействия активно развивается, и если вы хотите выпускать действительно качественные продукты, которые будут радовать ваших пользователей, вы должны глубоко в ней разобраться!
О том, как правильно тестировать удобство использования, вы узнаете в этом онлайн-курсе.
Есть TWiki страницы. В них нужно заменить слово1 на слово2. Сделать это надо на стороне клиента т.е. через web форму.
Проблема:
Когда работаю без селениума в браузере, он меня помнит и, даже, если не помнит, то достаточно вести данные один раз, и тогда запоминает. При работе через селениум не хочет запоминать и на каждой странице запрашивает идентификационные данные.
Открываю строницу в selenium webdriver. При попытке редактировать стриницу возникает запрос на идентификацию, с которым мне не удаются работать ни через селениум ни руками (работает только <ctrl+v> <ctrl+c> и смена фокуса мышкой). Поэтому хочу открыть страницу, один раз ввести пароль руками и все страницы открывать уже будучи идентифицированным (либо научиться работать с этой формой идентификации, но как не понимаю). Но этот редиска не запоминает меня, и запрашивает идентификацию каждый раз при октрытиb новой страницы (даже в одной сессии и в одной вкладке). Как его победить?
использую selenium-2.39.0 на линуксе, работаю через firefox
сервера запускаю так (пытался использовать профайл не помогло. возможно что-то делаю не то):
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from selenium.common.exceptions import StaleElementReferenceException
import time
import pickle
browser = webdriver.Firefox()
link_list = {}
cookies_list = {}
# click edit button in the main TestGroup page
browser.get('http://server_name/twiki/bin/view/TestGroup/WebHome')
print ("Title: '"+browser.title+"'")
element_edit_button = browser.find_element_by_xpath("/html/body/div[3]/div[2]/div/div/ul/li/a/b")
#element_edit_button.click()
try:
element_edit_button.click()
except StaleElementReferenceException:
print ("Exception during opening")
# тут появляется идентификационная форма, с которой мне не удается работать
# ввожу данные руками, использую <ctrl+c>, <ctrl+v>
element_edit_text = browser.find_element_by_xpath('//*[@id="topic"]')
print (element_edit_text.text)
element_cancel_button = browser.find_element_by_xpath('//*[@id="cancel"]')
try:
element_cancel_button.click()
except StaleElementReferenceException:
print ("Exception during canceling")
дальше открываю следующую страницу и пытаюсь ее редактировать, но получаю повторный запрос на идентификацию.
Отредактировать надо большое кол-во страниц, т.е. руками это делать не вариант.
Что я не учитываю? Как победить этого "злого монстра"? Буду рад любой помощи.
Наверное каждый QA инженер сталкивался с проблемой автоматизации флеша. Когда я слышу эту тему, в голове возникают термины - Eggplant, Sikuli, Selenium-flash... И никакого позитива :)
Пару недель я случайно узнал о Automated UI Tester for Adobe ActionScript или если кратко - Genie. Как понятно из названия – это инструмент тестирования флеш - приложений. Его легко установить, он бесплатный и довольно удобный. Если честно, то я не планировал писать ознакомительную статью, но я думаю, что инструмент достоин внимания.
Если вы заинтересовались тогда, пожалуйста, почитайте вот эти замечательные статьи:
Там вы найдёте плюсы продукта, его установку и азы работы. Всё очень понятно и доступно.
Мне бы хотелось пойти чуть дальше и описать простой пример интеграции Genie с Selenium Webdriver и TestNg. Писать всё будем, конечно, на Java.
Мы прочитали мануал, статьи и теперь знаем, как запустить отдельный скрипт Genie. Но давайте представим, что мы тестируем онлайн-игру. Или несколько игр. Нам бы хотелось сначала открыть страницу с игрой, прокрутить Genie-скрипт, а потом как-то посмотреть, что флешка корректно взаимодействует со страницей. Тогда хорошо бы и Genie сервер запускать и останавливать автоматически. Да и вообще неплохо бы обернуть всё нами написанное в тесты под какими-нибудь jUnit или TestNG.
Давайте попробуем.
1.Автоматический запуск и остановка Genieсервера.
Давайте изначально условимся, что наш проект лежит по вот такому пути: C:\Projects\Java\GenieTestNG. Для запуска сервера можно пойти самым простым путём – добавить в проект командный файлик runServer.bat. Он будет запускать файл GenieSocketServer.jar, который, в свою очередь, входит в пакет файлов Genie и лежит по адресу C:\Libs\Genie\GenieServer\GenieSocketServer.jar. Потому наш командный файл будет выглядеть так:
Поступим точно также и с остановкой сервера. Напишем командный файлик stopServer.bat:
taskkill /FI "WINDOWTITLE eq GenieServer"
А теперь сделаем методы запуска и остановки:
privatevoid startGenieServer() {
ExecuteBatch("cmd /c start runServer.bat");
}
privatevoid stopGenieServer() {
ExecuteBatch("cmd /c start stopServer.bat");
}
privatevoid ExecuteBatch(String command){
try {
Runtime.getRuntime().exec(command);
} catch (IOException e) {
e.printStackTrace();
}
}
2.Запуск Genie скриптов.
Вариант запуска скриптов, предложенный в мануале, нас не вполне устраивает. Нам не нужна отдельная конфигурация запуска под каждый Genie-скрипт. Нужно чтобы мы могли запускать любой скрипт, внутри тестов, передавая путь к скрипту, как параметр. Давайте создадим класс GenieScriptsExecutor и в нём метод ExecuteScript:
publicclass GenieScriptsExecutor {
publicstaticvoid ExecuteScript(String path) {
try {
String[] path_arr = new String[]{path};
Executor.startExecution(path_arr);
}
catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
Я умолчал, что предварительно, нужно было добавить файл Executor.jar в Buildpath нашего проекта. Этот файлик находится среди других файлов пакета Genie: Genie-binary\Genie\GenieScripts\Executor.jar.
Вернёмся к коду. Команда выполнения скрипта будет теперь выглядеть так:
Мы уже умеем выполнять нужные нам скрипты внутри кода. Можно оборачивать их в любую нужную нам логику. Например - в тесте нужно открыть страницу с игрой, сделать несколько действий во флешке, затем проверить, что на странице появился нужный нам элемент с локатором id=“gameEnd”. Тестовый метод будет выглядеть так:
Запуск Genie-сервера и вебдрайвера вынесем в отдельный метод и будем запускать их перед всеми тестами. Для этого создадим метод Setup и пометим его аннотацией @BeforeTest:
Остановку вебдрайвера и Genie сервера также вынесем в отдельный метод. Назовём его TearDown и пометим аннотацией @AfterTest, чтобы выполнять после прохождения всех тестов.
@AfterTest
publicvoid TearDown(){
stopGenieServer();
driver.close();
driver.quit();
}
Напомню, что методы startGenieServer() и stopGenieServer() мы создали в первой части статьи.
На этом всё. Пример прост, без использования каких-либо паттернов проектирования или хитростей, но я надеюсь, что так получилось доступнее.
The value of the field Test1.baseUrl is not used Test1.java /Selenium_tests/src/com/example/tests line 14 Java Problem The method isElementPresent(By) from the type Test1 is never used locally Test1.java /Selenium_tests/src/com/example/tests line 38 Java Problem The method isAlertPresent() from the type Test1 is never used locally Test1.java /Selenium_tests/src/com/example/tests line 47 Java Problem The method closeAlertAndGetItsText() from the type Test1 is never used locally Test1.java /Selenium_tests/src/com/example/tests line 56 Java Problem The import java.util.regex.Pattern is never used Test1.java /Selenium_tests/src/com/example/tests line 3 Java Problem The import org.hamcrest.CoreMatchers is never used Test1.java /Selenium_tests/src/com/example/tests line 7 Java Problem The import org.openqa.selenium.support.ui.Select is never used Test1.java /Selenium_tests/src/com/example/tests line 10 Java Problem
Несколько недель назад, 15 февраля, компания Badoo проводила конференцию для тестировщиков LoveQA. Сегодня были выложены первые 4 доклада конференции, к пятнице представители компании обещают выложить остальные доклады.
Доклады
«Есть ли жизнь после релиза? Наш опыт тестирования мобильных приложений» Александр z3us Хозя & Николай Козлов, Badoo.