Личный перевод из книги «Искусство тестирования» Г. Майерса
Важная причина плохого тестирования программных продуктов заключается в том, что большинство специалистов отталкивается от ложного определения этого термина. Они могут сказать:
— тестирование – это процесс для демонстрации того, что в программе нет ошибок; — цель тестирования в том, чтобы показать, что программа выполняет ожидаемые от нее действия корректным образом; — тестирование – это процесс, направленный на создание уверенности, что программа делает то, что должна.
Эти определения неверны.
Вот вам дедуктивное умозаключение:
Вписываясь в тестирование, мы желаем добавить продукту значимость (ценность) – Добавление ценности продукту происходит за счет увеличения качества и надежности продукта – Добавление надежности продукта происходит путем поиска и удаления ошибок.
Поэтому не занимайтесь тестированием. Не занимайтесь тестированием для того, чтобы показать, что все работает; начните с аксиомы – программа содержит ошибки (кстати, это верно для большинства программ), и далее тестируйте так, чтобы найти их столько, сколько это вообще возможно, будто это Ваш последний день (в тестировании).
Добрый день. Не так давно, в компании где я работаю, мне сказали, что бы я развивался и обучился мастерству автоматизированного тестирования. В течении двух часов я просматривал всевозможные гайды различных мастеров, и вот он, первый юнит тест написанный мной! Радости не было предела, и казалось бы что я овладел мастерством автоматизированного тестирования, но спустя пару дней, все тесты перестали отрабатывать. Облазил кучу форумов решение этой проблемы так и не нашел.
Итак, для тестирования я использую intellij idea + selenium + webdriver
В качестве браузера выбрал firefox (последняя версия) так же подключен geckodriver (Последняя версия).
вот к примеру выполнение поискового запроса:
public void searchForumElectro() {
driver.get("https://www.*******.ru");
driver.findElement(By.cssSelector("input[class='search form-control']")).sendKeys("Труба");
driver.findElement(By.xpath("(//button[@type='submit'])[2]")).click();
}
а вот что мне возвращает:
1496646250440 geckodriver INFO Listening on 127.0.0.1:39714
1496646252004 geckodriver::marionette INFO Starting browser \\?\C:\Program Files (x86)\Mozilla Firefox\firefox.exe with args ["-marionette"]
1496646252720 addons.manager ERROR startup failed: [Exception... "Component returned failure code: 0x80070057 (NS_ERROR_ILLEGAL_VALUE) [nsIFile.create]" nsresult: "0x80070057 (NS_ERROR_ILLEGAL_VALUE)" location: "JS frame :: resource://gre/modules/FileUtils.jsm :: FileUtils_getDir :: line 70" data: no] Stack trace: FileUtils_getDir()@resource://gre/modules/FileUtils.jsm:70 < FileUtils_getFile()@resource://gre/modules/FileUtils.jsm:42 < validateBlocklist()@resource://gre/modules/AddonManager.jsm:671 < startup()@resource://gre/modules/AddonManager.jsm:834 < startup()@resource://gre/modules/AddonManager.jsm:3129 < observe()@resource://gre/components/addonManager.js:65
JavaScript error: resource://gre/modules/AddonManager.jsm, line 1657: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
1496646256674 Marionette INFO Listening on port 52671
JavaScript error: resource://gre/modules/AddonManager.jsm, line 2570: NS_ERROR_NOT_INITIALIZED: AddonManager is not initialized
Exception in thread "main" org.openqa.selenium.SessionNotCreatedException: Unable to create new remote session. desired capabilities = Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={}, profile=null}}], required capabilities = Capabilities [{moz:firefoxOptions={binary=Optional.empty, args=[], legacy=null, logLevel=null, prefs={}, profile=null}}]
Build info: version: '3.3.1', revision: '5234b32', time: '2017-03-10 09:04:52 -0800'
System info: host: 'DESKTOP-QO098HM', ip: '192.168.0.22', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '1.8.0_121'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:126)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:141)
at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:82)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:604)
at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:244)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:218)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:125)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:121)
at com.company.Test.<init>(Test.java:15)
at com.company.Main.main(Main.java:21)
Process finished with exit code 1
Может кто сталкивался с подобным. И ещё раз, пару дней работало, потом отвалилось. само
PROFI.RU — крупная IT-компания, разрабатывающая рекомендательный сервис по подбору частных специалистов. Сейчас мы расширяемся и ищем талантливого тестировщика.
Нашего героя легко узнать: он осознаёт свой вклад в развитие продукта, имеет огромное желание влиять на его качество и делает для этого всё возможное. Не боится общаться с менеджерами продукта и разработчиками, чтобы собрать необходимую информацию или предложить улучшения. Имеет опыт тестирования веб-приложений, понимает принципы их работы и имеет представление о работе серверной части. Если вы стремитесь к постоянному развитию — нам по пути!
Какие задачи предстоит решать:
функциональное тестирование наших продуктов;
составление чек-листов;
заведение и отслеживание баг-репортов;
взаимодействие с менеджерами и командой разработки.
Хотим видеть в вас:
опыт функционального тестирования;
опыт тестирования веб-приложений, веб-сервисов (SOAP, REST);
опыт ведения тестовой документации (тест-кейсы, чек-листы);
понимание процессов тестирования и разработки;
знакомство с SQL.
Плюсом будет:
знакомство с Selenium WebDriver;
опыт написания автотестов (особенно BDD фреймворки Codeception, JBehave, Nightwatch-Cucumber);
опыт функционального тестирования мобильных приложений;
умение работать с *nix-подобными операционными системами;
навыки программирования.
Личные качества:
ответственность, внимание к деталям и здоровый перфекционизм;
огромное желание влиять на качество продукта;
умение собирать информацию из различных источников;
непреодолимое желание развиваться в своей сфере.
Мы предлагаем:
сильную команду профессионалов, увлечённых своим делом;
уютный офис на 15-м этаже в бизнес-центре на Ходынском поле (ст. м. «Аэропорт»);
мы заботимся о наших кадрах, поэтому половину стоимости ДМС оплачивает компания, а по утрам вас будут ждать полезный завтрак, фрукты в офисе, кофе из Starbucks;
доплату 15 000 руб. в месяц тем, кто арендует квартиру недалеко от офиса;
новым сотрудникам из других городов с удовольствием поможем с переездом в Москву и адаптацией в новом городе;
мы уважаем спорт — вы найдёте единомышленников по занятиям бегом, боксом, йогой, капоэйрой и другими видами спорта. А занятия в сборной по футболу, волейболу наполовину оплачивает компания, как и абонемент в фитнес-клуб «Палестра Sport»;
Этот курс, предназначенный для обучения тестировщиков программированию на языке Java, является одним из самых популярных курсов в нашей линейке.
Обратите внимание, что это курс именно для тестировщиков. Обучение программированию не сводится только к изучению языка программирования. Построение правильной архитектуры, использование фреймворков и библиотек, владение инструментами разработки и отладки -- это тоже часть “умения програмировать”. Поэтому в этом курсе детально рассматриваются именно те возможности языка и вспомогательных библиотек, которые наиболее востребованы при разработке автотестов.
Продолжительность нового курса осталась прежней, два с половиной месяца разбитых на 10 больших блоков, каждый из которых разбит на короткие фрегменты, но программа претерпела значительные изменения на основе анализа отзывов участников.
С одной стороны, мы решили выбросить некоторые темы, которые оценивались как не слишком полезные. С другой стороны, за счёт освободившегося места и более плотной компоновки материала появилась возможность добавить множество новых гораздо более интересных и полезных тем.
Что мы решили убрать из курса:
тестирование Windows-приложений через пользовательский интерфейс -- всё таки Java совсем не приспособлена для этого, если перед вами стоит такая задача -- тогда лучше выбрать другой язык для написания тестов, например, C# или Python;
тестирование Java приложений через пользовательский интерфейс -- просто потому, что таких приложений слишком мало, и эта тема оказалась невостребованной.
А теперь гораздо более длинный список того, что добавлено:
большой блок, посвящённый самым основам языка Java и программирования вообще, теперь тренинг подходит даже для тех, кто совсем-совсем не умеет программировать, обучение начинается с нулевого уровня подготовки;
использование сборщика Gradle;
дополнительные приёмы повышения надёжности тестов за счёт проверки и обеспечения выполнения предусловий;
работа с файлами в формате JSON;
более глубокое рассмотрение возможностей тестового фреймворка TestNG;
работа с удалёнными программными интерфейсами SOAP и REST;
настройка и использование сервера непрерывной интеграции Jenkins и генерация красивых отчётов при помощи инструмента Allure;
написание тестов в разных стилях: на псевдоестественном языке Gherkin (этот подход называется Behavior Driven Development) и в виде табличек с использованием инструмента Robot Framework (этот подход называется Keyword Driven Testing).
Все “старые” темы тоже полностью переписаны, материал лекций уплотнён (по нашему исследованию 1 час наших лекций по содержательности равняется более чем 3 часам живого рассказа за счет выверенности всех фраз и удаления всего лишнего мусора), и для удобства просмотра разбит на небольшие фрагменты продолжительностью не более 20 минут.
А ещё по многочисленным просьбам в лекциях теперь используется IntelliJ IDEA вместо Eclipse ;)