Планировать – хорошо, а хорошо планировать – ещё лучше! Но как часто мы сталкиваемся со сложностями: это не получается, на это нет времени, такой риск нельзя было предусмотреть, а незнакомую задачу невозможно точно оценить…
Наш онлайн-интенсив по планированию говорит: Нет отмазкам!
Всего за 1 неделю активной работы над собой вы научитесь точному планированию и более эффективному построению тестирования.
онлайн-тренинг с домашней работой, 6 занятий, начало 17 апреля
Компьютерные языки постоянно появляются и исчезают, видоизменяются или не меняются, выходят в топ самых популярных и падают с этого пьедестала. Очень немногие из них переживают 20-летний рубеж. К одному из таких относится SQL — язык длиною в 30 с лишним лет, но все еще развивающийся и перспективный.
Сегодня SQL используется программистами для создания, модификации и управления данными в реляционных базах данных и нам (тестировщикам) необходимо уметь формировать корректные запросы к таким базам. Хакеры всех мастей используют SQL-инъекции для получения доступа к базам данных и нам (тестировщикам) необходимо уметь это делать для предупреждения взломов дорогого нам сервиса. А еще тестировщикам необходимо уметь выявлять медленные SQL-запросы для профессионального анализа результатов тестирования производительности. А еще выявлять некорректные SQL-запросы. А еще...
Все чаще на собеседованиях тестировщикам задаются вопросы про владение языком запросов SQL. Что Вы сможете ответить работодателю в следующий раз?
На нашем онлайн-тренинге «SQL для тестировщиков» Вы сможете узнать:
что такое клиент-серверная технология и как устроена СУБД;
как создать, модифицировать или удалить БД;
какие операторы SQL считаются основными;
как правильно формировать запросы к базам данных;
как анализировать лог-файлы СУБД и выявить медленные и некорректные SQL-запросы;
как писать сложные SQL-запросы;
как проводить SQL-инъекции и как от них уберечься.
А также Вы можете выбрать на примере какой СУБД обучаться: MySQL или MS SQL.
А еще мы научимся использовать два интерфейса: Console и PHPMyAdmin, узнаем что такое MyISAM и InnoDB и в чем их сходства и различия, а также попробуем логгировать запросы и анализировать результаты.
Самый лучший способ изучения любого языка (программирования и не только) — это практика. Поэтому в нашем курсе будет много домашних заданий, при выполнении которых будет приобретаться так необходимый практический опыт.
Кто-нибудь прикручивал такую связку и может помочь советом? Предполагается, что WebDriver тесты будут запускаться на отдельной Windows машине, так как нужно тестировать с IE. Не уверен с чего начать. У меня в принципе через maven запускаются тесты тоже, то есть в теории не должно возникнуть проблем с настройкой Bamboo? Перерыл Google, но так толком и не нашёл путёвых ответов.
Во время выполнения может появиться ошибка timeout'а:
org.openqa.selenium.WebDriverException: Session [33fae241-ba43-40e5-ae16-2882c30dd8cf] was terminated due to SO_TIMEOUT
Command duration or timeout: 4 milliseconds
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'tsd-prog135', ip: '10.76.113.128', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51'
Session ID: 33fae241-ba43-40e5-ae16-2882c30dd8cf
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{platform=XP, javascriptEnabled=true, acceptSslCerts=true, browserName=firefox, rotatable=false, locationContextEnabled=true, webdriver.remote.sessionid=33fae241-ba43-40e5-ae16-2882c30dd8cf, version=25.0.1, databaseEnabled=true, cssSelectorsEnabled=true, handlesAlerts=true, browserConnectionEnabled=true, nativeEvents=true, webStorageEnabled=true, applicationCacheEnabled=true, takesScreenshot=true}]
at sun.reflect.GeneratedConstructorAccessor12.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
at org.openqa.selenium.remote.ErrorHandler.createThrowable(ErrorHandler.java:193)
at org.openqa.selenium.remote.ErrorHandler.throwIfResponseFailed(ErrorHandler.java:145)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:554)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:307)
at org.openqa.selenium.remote.RemoteWebDriver.findElementByCssSelector(RemoteWebDriver.java:396)
at org.openqa.selenium.By$ByCssSelector.findElement(By.java:432)
at org.openqa.selenium.remote.RemoteWebDriver.findElement(RemoteWebDriver.java:299)
at ru.tensor.ws.testframework.Wait.forElementPresent(Wait.java:107)
at ru.tensor.ws.testframework.Wait.forElementPresent(Wait.java:48)
at ru.tensor.ws.testframework.Wait.forElementPresent(Wait.java:44)
at ru.tensor.ws.testframework.WITestLayout.waitElement(WITestLayout.java:368)
at ru.tensor.ws.tests.TestCommandDispatcher.testEscapeCommand2(TestCommandDispatcher.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at ru.tensor.ws.testframework.WITestLayout$1$1.evaluate(WITestLayout.java:128)
at org.junit.rules.TestWatchman$1.evaluate(TestWatchman.java:53)
at org.junit.internal.runners.statements.FailOnTimeout$StatementThread.run(FailOnTimeout.java:74)
Caused by: org.openqa.grid.common.exception.GridException: Session [33fae241-ba43-40e5-ae16-2882c30dd8cf] was terminated due to SO_TIMEOUT
at org.openqa.grid.internal.ActiveTestSessions.getExistingSession(ActiveTestSessions.java:104)
at org.openqa.grid.internal.Registry.getExistingSession(Registry.java:423)
at org.openqa.grid.web.servlet.handler.RequestHandler.getSession(RequestHandler.java:235)
at org.openqa.grid.web.servlet.handler.RequestHandler.process(RequestHandler.java:117)
at org.openqa.grid.web.servlet.DriverServlet.process(DriverServlet.java:84)
at org.openqa.grid.web.servlet.DriverServlet.doPost(DriverServlet.java:68)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
at org.seleniumhq.jetty7.servlet.ServletHolder.handle(ServletHolder.java:565)
at org.seleniumhq.jetty7.servlet.ServletHandler.doHandle(ServletHandler.java:479)
at org.seleniumhq.jetty7.server.session.SessionHandler.doHandle(SessionHandler.java:225)
at org.seleniumhq.jetty7.server.handler.ContextHandler.doHandle(ContextHandler.java:1031)
at org.seleniumhq.jetty7.servlet.ServletHandler.doScope(ServletHandler.java:406)
at org.seleniumhq.jetty7.server.session.SessionHandler.doScope(SessionHandler.java:186)
at org.seleniumhq.jetty7.server.handler.ContextHandler.doScope(ContextHandler.java:965)
at org.seleniumhq.jetty7.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
at org.seleniumhq.jetty7.server.handler.HandlerWrapper.handle(HandlerWrapper.java:111)
at org.seleniumhq.jetty7.server.Server.handle(Server.java:349)
at org.seleniumhq.jetty7.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:452)
at org.seleniumhq.jetty7.server.BlockingHttpConnection.handleRequest(BlockingHttpConnection.java:47)
at org.seleniumhq.jetty7.server.AbstractHttpConnection.content(AbstractHttpConnection.java:894)
at org.seleniumhq.jetty7.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:948)
at org.seleniumhq.jetty7.http.HttpParser.parseNext(HttpParser.java:857)
at org.seleniumhq.jetty7.http.HttpParser.parseAvailable(HttpParser.java:235)
at org.seleniumhq.jetty7.server.BlockingHttpConnection.handle(BlockingHttpConnection.java:66)
at org.seleniumhq.jetty7.server.bio.SocketConnector$ConnectorEndPoint.run(SocketConnector.java:254)
at org.seleniumhq.jetty7.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:599)
at org.seleniumhq.jetty7.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:534)
at java.lang.Thread.run(Unknown Source)
ERROR: Error at stopDriver: org.openqa.selenium.WebDriverException: Session [33fae241-ba43-40e5-ae16-2882c30dd8cf] was terminated due to SO_TIMEOUT
Command duration or timeout: 5 milliseconds
Build info: version: '2.37.0', revision: 'a7c61cb', time: '2013-10-18 17:14:00'
System info: host: 'tsd-prog135', ip: '10.76.113.128', os.name: 'Windows 7', os.arch: 'amd64', os.version: '6.1', java.version: '1.7.0_51'
Session ID: 33fae241-ba43-40e5-ae16-2882c30dd8cf
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Capabilities [{platform=XP, javascriptEnabled=true, acceptSslCerts=true, browserName=firef
Подскажите, пожалуйста, в чем может быть проблема?
Если нужна еще какая-то информация о проекте, grid'e и тд - готов её указать.
И еще, как на данном форуме исправить название темы?
Приветствую всех, я новичек и в селениуме и в гриде, пытаюсь разобраться:
Есть необходимость реализовать некий вид нагрузки с одновременной работой большого кол-ва эксплореров.
Условие:
-работа веб приложения возможна только в IE;
-скрипт должен выполняться одновременно, кол-во пользователей порядка 100;
Почему не jmeter:
Реализовать приходится именно через selenium grid т.к. для работы необходим обязательно запущенный IE т.к. в личных кабинетах пользователей используется плагин для использования сертификатов безопасности который работает только под ie и только если ie реально запущен....
А теперь внимание вопрос: возможно ли на каждой ноде одновременный запуск и одновременная работа нескольких IE?
На данный момент я сконфигурировал на каждой ноде по 5 возможных одновременно запущенных IE, но grid как то странно с ними работает, он вроде бы запускает необходимое кол-во IE, но действия выполняет только в той сессии которая открыта, остальные либо валяться, либо действия в них выполняют только по окончанию действий в текущей отображаемой сессии.
Вопрос возник потому, что 100 виртуалок у меня нет и точно не будет, возможно что удастся получить 10-15 виртуалок, поэтому я наивно рассчитывал на каждой одновременную работу нескольких IE.... это невозможно?
Когда искал работу, в компании http://www.ufs-online.ru/ мне предложили сделать автотест, работу к тому моменту я уже нашел, но ради интереса решил попробовать.
Автотест надо было сделать в разделе "авиабилеты" , меня удивили выпадающие списки . Выпадающие определялись рекодером не как "Selector", а элементы. И справа от города "Откуда" и "Куда" можно выбрать даты вылета\прилета, посоветуйте как лучше их выбирать создать массив и оттуда тянуть перебирая доступные доступные?
INFO - couldn't register this node : Error sending the registration
request.
INFO - couldn't register this node : Hub is down or not responding:
Connection refused: connect
Разработка тест-кейсов для ручного тестирования и автоматизации, имея минимум информации. Сбор информации, необходимой для тестирования, со всех участников проекта. Автоматизировать всё, что попадается на глаза :) В случае неудач - не унывать и качественно отлаживать написанные автотесты.
Выбор инструментов автоматизации, разработка скриптов автоматизации, поддержка в актуальном состоянии.
Настройка и поддержка continuous integration.
Разработка сопроводительной документации для процесса ручного и автоматизированного тестирования.
Тестирование имеющейся документации по проекту.
Участие в ручном тестировании по мере необходимости.
Написание отчета по результатам тестирования.
Требования:
Пользователь Linux
Опыт работы тестирощиком не менее 2 лет.
Опыт автоматизации тестирования.
Английский на уровне чтения документации.
Высшее образование (IT, telecom)
Желательно:
Представление о системе сетевого управления
Представление о телекоммуникационных протоколах связи
Опыт написания скриптов Bash/CMD
Понимание протоколов передачи данных (SIP/RTP/TCP|UDP), стека ОСИ
Знание основ Asterisk-а.
Условия:
Работа в 10-и минутах пешком от ст. м. Лесная.
Восьми часовой рабочий день (гибкое начало рабочего дня, с 8-00 до 10-00)
Официальное оформление по ТК РФ.
Заработная плата от 50 000р. до 70 000р. (зависит от опыта кандидата).
Бонусы по завершении проектов.
ДМС с корпоративной скидкой.
Для желающих организованы курсы английского языка.
Тема тестирования производительности на конференции SQA Days обычно представлена небольшим количеством выступлений, и четырнадцатая конференция не стала исключением, всего два доклада посвящены этой теме. Зато оба достаточно интересные.
Тема тестирования производительности на конференции SQA Days обычно представлена небольшим количеством выступлений, и четырнадцатая конференция не стала исключением, всего два доклада посвящены этой теме. Зато оба достаточно интересные.
В jsonwiredprotocol есть метод /url, который позволяет перейти по известному адресу.
Для него через "/timeouts" выставляется таймаут на то, сколько мы будем ждать загрузки страницы.
Но проблема в том, что если на страничке тупит какой-нибудь малозначительный рисунок, то /url будет ждать загрузки по максимуму, а потом упадёт с ошибкой "Timed out waiting for page load"
Никто не придумал ничего лучше, кроме try{}catch{} ?
Возникла необходимость нагрузить один веб портал, но есть проблема, без проски к нему никак не достучаться.
Я знаю как заставить jmeter обращаться к proxy без GUI, запуская из командной строки:
-H [proxy server hostname or ip address]
-P [proxy server port]
-N [nonproxy hosts] (e.g. *.apache.org|localhost)
-u [username for proxy authentication - if required]
-a [password for proxy authentication - if required]
Example : jmeter -H my.proxy.server -P 8000 -u username -a password -N localhost
Alternatively, you can use --proxyHost, --proxyPort, --username, and --password
Вопрос такой: а можно ли настроить jmeter так, чтобы отправлять запросы через proxy в GUI режиме? Ведь для отладки скрипта неудобно делать запуски из командной строки, нужно сразу видеть результат. Пока что не нашёл каким образом можно сказать жметру делать запросы используя прокси севрер.