Язык, чтобы научиться переходить от ручного тестирования к автоматизированному/программированию
Я работаю в качестве ручного тестера и документации (планы тестирования и т.д.) персонала в программном обеспечении/ИТ-подразделении компании. У меня нет большого фона программирования, но я хочу изучать языки (языки) программирования и инструменты (ы). Следовательно, я ищу инструменты для автоматического тестирования и язык программирования, чтобы узнать, что также дает мне промышленное преимущество.
Следует отметить следующие моменты:
- Мне нужно знать, какие инструменты наиболее распространены в отрасли и языки, связанные с этими инструментами.
- У меня нет много времени, чтобы узнать массу вещей. Следовательно, я ищу инструменты, которые используют языки, которые могут быть полезны для изучения, если я хочу больше программировать.
- Я бы предпочел тестирование веб-приложений, но это не ограничение.
- Вы можете дать 2-3 языка, поскольку я понимаю, что не может быть одного победителя.
- Я сделал некоторый QTP, который использует VBScript, но VBScript широко используется. Я хочу изучить язык с более широкой базой.
- Пожалуйста, продолжайте давать свои материалы и идеи, даже если этот вопрос кажется действительно трудным для ответа.
Спасибо заранее.
EDIT:
Я думаю, что до сих пор я решил, что поеду за:
- QTP
- Селен
- Методы разработки, основанные на тестировании.
Мне просто нужно выяснить хороший язык программирования, который дает мне край программиста и подходит для нескольких инструментов тестирования (включая Selenium). Может быть, Python, Ruby или Java?
Ответы
Ответ 1
Ничего себе, это довольно широкий вопрос. Я бы сказал, что вы были в хорошем положении, когда индустрия движется к Test Driven Development (или напишет ваши тесты перед вашим кодом).
Прежде всего, вы захотите узнать о Unit Testing, Непрерывная интеграция и веб-автоматизация.
Я собираюсь сосредоточиться на тех областях, которые я знаю (.NET, Java, Javascript, Build Automation, Selenium)
- В .NET NUnit, вероятно, наиболее широко используется модульная система тестирования. Это порт (копия) JUnit в мире java. Большинство модулей тестирования модулей очень похожи на эти понятия с точки зрения концепций. Так что научись одному, и тебе не потребуется много времени, чтобы забрать других.
- Я думаю, что чтение вышеуказанных ссылок и представление об этих концепциях помогут вам. Вероятно, стоит поэкспериментировать с Python или Ruby, поскольку они имеют низкие барьеры для входа в беспорядок с некоторыми простыми тестами.
-
Для веб-тестирования наиболее известными являются, вероятно, Selenium и Watin. Это позволяет script браузерам выполнять действия автоматически. Тем не менее, я натолкнулся на очень мало пользы от них, и они очень неудобны (вы говорите о днях/неделях усилий), чтобы их настроить и использовать. Опять же, концепции, лежащие в их основе, схожи с любой используемой структурой.
Думаю, я ответил 4,5,6 в 1,2,3: -)
НТН
Ответ 2
Что касается "промышленного преимущества", это зависит от того, что вы подразумеваете под этим.
Для крупных компаний QTP широко используется. Вещь, чтобы учиться с QTP - это не язык, а сам инструмент. Для меня было более трудным преодолеть специфику инструмента, чем изучение VBscript. Если бы вы подумали о тестировании производительности, то, вероятно, это был бы выбор PerformanceCenter. Здесь у вас есть язык C, но опять же, есть больше борьбы с инструментом, чем с языком.
В некоторых компаниях есть стек от IBM, поэтому программное обеспечение Rational начинает играть (FunctionalTester, Robot, PerformanceTester). Существует также небольшая сложность инструмента, с которой можно справиться (IBM Redbobks может помочь).
В небольших компаниях Java/С# может быть полезным. Здесь вы можете ознакомиться с junit/nunit/TestNG/MSTest. Для webapps стоит посмотреть на вещи, такие как Selenium/Watij/Watin/Fit/Fitness/Concordian. Если у вас есть момент взглянуть на AutoIT, PowerShell, Python, Fiddler, Jmeter, Abbot, Watir/Cucumber, Sikuli.
Существует также множество других инструментов, таких как WebAii, TestComplete, Twist.. некоторые другие коммерческие инструменты. Обычно вы можете получить судебные разбирательства для них, чтобы играть с ним в течение недели или двух.
Все зависит от того, с каким видом проекта вы столкнетесь, и какой компанией он будет.
Несмотря на это, на мой взгляд, достаточно изучать Java/С# до некоторой степени. Вам не нужно быть С#/Java ninja, знать каждую библиотеку и изучать действительно жесткий язык. Вы видите, что разработка программного обеспечения - это больше, чем знание языка программирования, а автоматизация тестирования - это больше, чем знание инструмента/языка (M. Fewster и D. Graham), поэтому не обманывайтесь. Если вы можете запрограммировать script в QTP ( не запись, а программу, используя Описательное программирование, разложение логики на библиотеки, полное управление TestResults с помощью надлежащих методов и т.д.), Чем другие инструменты не будут вопрос. Вам может понадобиться неделя или два, чтобы изучить основы данного языка, но это все для автоматизации тестирования (для начала как минимум). Вам нужно больше иметь некоторый опыт, знать инструменты, знать понятия, знать плюсы и минусы разных подходов, иметь более общую картину в голове, чем просто "как я пишу это на этом языке" (у вас есть SO для этого: D).
Ответ 3
Ответ на этот вопрос действительно зависит от нескольких вещей. Во-первых, какое тестирование вы делаете? Тестирование веб-приложений? Тестирование библиотек/компонентов более крупной программы? Проверка графического интерфейса? Тестирование приложений командной строки?
Я нашел следующее полезным при создании сценариев/автоматизированных средств тестирования:
TCL - TCL может взаимодействовать с командной строкой так же легко, как командный файл, но имеет мощный язык, который удаляет пакет (включая возможности GUI). Если вы используете консольные приложения на базе Windows (либо для проверки их, либо для их использования для тестирования чего-то еще), я рекомендую потратить время на использование TCL.
AutoIt - Этот язык сценариев позволяет быстро и легко автоматизировать взаимодействие пользовательского интерфейса с приложениями Windows. Это также довольно легко изучить. Если вы хотите потратить время и проблемы на разработку утилиты для очистки экрана, вы можете объединить ее с AutoIt для создания довольно сложных тестовых систем.
C - При тестировании скомпилированных библиотек у меня был удивительный успех, используя хороший 'ol C. Я напишу основной скелет для тестового приложения и создаю скриптовую утилиту, которая будет динамически генерировать остальную часть кода на основе о том, какие тесты нужно выполнить (я даю ему библиотеку фрагментов примера С, которые он может использовать для более сложных задач).
Ruby - Когда вы выполняете автоматическое тестирование, надежный язык сценариев может зайти очень далеко. Если вам нужно анализировать журналы тестов, создавать отчеты или автоматически генерировать тестовые сценарии, язык сценариев, который, как вы знаете, может сэкономить вам много времени и головной боли. Мой язык выбора - Ruby, но другие в моей компании предпочитают другие языки, такие как Perl или Python. Выбор языка не слишком важен, выберите его и хорошо изучите.
В зависимости от того, что вы тестируете, у вас также могут быть какие-то инструменты тестирования, встроенные в тестируемый вами код. Java-код иногда записывается с помощью тестов JUnit, код Ruby может использовать платформу Test:: Unit и т.д. Здесь приведен список инфраструктур модульного тестирования для самых разных языков. Если код, который вы тестируете, был построен с учетом модульного тестирования, вам нужно будет изучить язык, на котором был написан код, чтобы вы могли воспользоваться этими модульными тестами.
Ответ 4
Для веб-тестирования вы можете проверить fitnesse. Кроме того, автоматизированная тестовая среда, построенная на python, представляет собой инфраструктуру робота.
Ответ 5
- Selenium очень популярен для автоматизированного тестирования на уровне QA.
- Независимо от того, что вы делаете, будет какая-то кривая обучения, связанная с вашим решением.
- Точка Selenium - это обеспечить структуру тестирования для webapps - вы используете Selenium для управления элементами DOM в браузере, без текущей версии вашего приложения.
-
Selenium - модель клиент/сервер (вы запускаете сервер где-нибудь, у которого есть доступ к вашему экземпляру приложения QA, вы кодируете свои тесты с использованием клиентских библиотек), который предоставляет клиентам несколько языков (java, ruby, и т.д.)
-
Этот тип тестирования - хорошая идея, если у вас есть выделенные ресурсы QA, которые могут писать код. Он обеспечивает некоторые регрессионные тесты высокого уровня. Однако это не лишено недостатков: (1) тесты могут занять некоторое время, (2) вам может потребоваться внести некоторые изменения в элементы веб-приложения dom, чтобы использовать инфраструктуру легко, (3) изменение веб-приложения потребует изменяя ваш тестовый код, который может быть нетривиальным.
Ваши другие варианты - написать модульные тесты для кода приложения. Обычно разработчики делают это как часть тестового процесса. Таким образом, для разработчиков есть TDD, а затем автоматическое тестирование QA для QA.
Ответ 6
Я также добавлю небольшой комментарий
Существует новая платформа автоматизации тестирования XML2Selenium
Эта платформа построена поверх класса Selenium и предоставляет множество полезных функций.
Но это довольно просто использовать
Вам не нужно изучать java или ruby - вы можете писать в XML
SMth вроде этого:
<!-- here we have some imports Frame - is like a class, you can extend it with extends -->
<import resource="Demo.a-server/03Registration/framesRegist.xml" name="frames"/>
<import resource="Demo.a-server/01Action/FramesAction.xml" name="framesAct"/>
<import resource="Demo.a-server/03Registration/FramesLogin.xml" name="framesLog"/>
<property resource="Demo.a-server/LogValue.properties" name="logValue"/>
<test name="creatAction" description="create and check action">
<frame extends="frames:logAdmin"/>
<frame extends="framesAct:createAct"/>
// here we upload the image
<upload id="img_id0" resource="image.jpg"/>
// click save button with id=save
<button id="save" />
// make a screen shot
<screenshot/>
// sleep for 3 seconds
<pause time="3000" />
// make a screenshot again
<screenshot/>
// navigate to the given URL:
<navigate to="${logValue.baseUrl}/admin"/>
<frame extends="framesLog:logOutAdmin"/>
<pause time="1000"/>
</test>
Здесь вы можете увидеть отчет с ошибками: http://xml2selenium.com/demored/xml2selenium/
И здесь вы можете увидеть отчет с успешным состоянием:
http://xml2selenium.com/demogreen/xml2selenium/
PS: он поддерживает тестирование во всех браузерах не только в Firefox, но и в Selenium IDE
Ответ 7
-
Да, вы можете изучить Selenium IDE, его как дополнение в браузере Firefox, с помощью которого вы можете записывать свои тесты и воспроизводить их по мере необходимости. Ограничение IDE можно использовать только в firefox.
-
Если вы хотите протестировать несколько браузеров, вам нужна Selenium Grid или WebDriver, которая требует знания Java. И снова вам не нужно быть Java pro для этого, простое обучение поможет.
-
Вы можете выполнить поиск на сайте youtube.com для учебных пособий Selenium.
Преимущества селена:
- Его открытый источник!!
- Его легко узнать и внедрить.
- Поддержка нескольких браузеров.
- Поддержка нескольких языков сценариев/программирования.
- Гибкий по вашему выбору, простой записи и воспроизведения (IDE), дизайн рамочной сборки по вашему выбору, используя ваш любимый язык программирования.
- Поддерживает выполнение parellel.
Надеюсь, это поможет вам.