На сайте http://software-testing.ru есть много курсов. Но какой правильный алгоритм/порядок изучения курсов, если нужно начинать с нуля?
Работаю с сайтами в качестве менеджера проекта (интернет-магазина), но хотелось бы стать тестировщиком (заниматься автоматизованым тестированием. К примеру, на Java).
Можно узнать, какие курсы нужно пройти? по порядку
Ты студент или выпускник? Хочешь освоить интересную и высокооплачиваемую работу?
Работа тестировщиком это не просто прохождение тестов, это еще и их создание! Для этого тебе понадобятся навыки программирования
и другие навыки, которым ты обучишься в данном руководстве. В свободном доступе его нет, а купить его можно только у меня, как сотрудника данной компании.
Ты конечно можешь собирать по крупицам информацию в интернете, но на это у тебя уйдет на порядок больше времени и сил, чем если ты прочитаешь этот грамотно
структурированный, последовательный и наиболее полный мануал для тестировщика. И шансов трудоустроиться после качественного обучения у тебя будет гораздо
больше, чем от постоянного насилования Гугла или Яндекса:) Хотя бы потому, что структурированная информация лучше воспринимается твоим мозгом, чем разрозненная.
Начальная зарплата тестировщика всего лишь 30-40 тыс. рублей, но через 1.5-2 года она уже может вырасти до 100 тысяч рублей в месяц!
А это сравнимо с зарплатой профессионального разработчика.
По поводу приобретения мануала обращайтесь в личку
Сделка проходит строго через гарант-сервис! Вы получаете мануал, после этого переводите внесенный залог.
А вот и содержание мануала:
ТЕМА 1: ОСНОВЫ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
1.1. ПРОЦЕСС РАЗРАБОТКИ И ТЕСТИРОВАНИЯ, РОЛЬ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
1.1.1. СВЯЗЬ РАЗРАБОТКИ И ТЕСТИРОВАНИЯ
1.1.2. ЗАДАЧИ АВТОМАТИЗАЦИИ
1.2. КЛЮЧЕВЫЕ ПОНЯТИЯ ТЕСТИРОВАНИЯ
1.2.1. РАЗВИТИЕ ТЕСТИРОВАНИЯ
1.2.2. ОСНОВНАЯ ТЕРМИНОЛОГИЯ ТЕСТИРОВАНИЯ
1.3. ТЕСТИРОВАНИЕ ДОКУМЕНТАЦИИ И ТРЕБОВАНИЙ
1.3.1. ВАЖНОСТЬ ТРЕБОВАНИЙ
1.3.2. УРОВНИ ТРЕБОВАНИЙ
1.3.3. ТИПЫ ТРЕБОВАНИЙ
1.3.4. СВОЙСТВА ХОРОШЕГО ТРЕБОВАНИЯ
1.3.5. ТИПИЧНЫЕ ПРОБЛЕМЫ С ТРЕБОВАНИЯМИ
1.3.6. ТЕХНИКИ РАБОТЫ С ТРЕБОВАНИЯМИ
1.3.7. ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1.4. РАЗРАБОТКА ТЕСТ-КЕЙСОВ
1.4.1. КЛАССЫ ЭКВИВАЛЕНТНОСТИ И ГРАНИЧНЫЕ УСЛОВИЯ
1.4.2. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1.4.3. ОФОРМЛЕНИЕ ТЕСТ-КЕЙСОВ
1.4.4. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1.4.5. ОСОБЕННОСТИ ТЕСТ-КЕЙСОВ ДЛЯ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ
1.5. ОРИЕНТАЦИЯ НА КАЧЕСТВО
1.5.1. ЭФФЕКТИВНЫЕ ПРОВЕРКИ В ТЕСТИРОВАНИИ
1.5.2. ДОМЕННОЕ ТЕСТИРОВАНИЕ КАК ТЕХНИКА ЭФФЕКТИВНЫХ ПРОВЕРОК
1.6. СОЗДАНИЕ ОТЧЁТОВ ОБ ОШИБКАХ
1.6.1. ЖИЗНЕННЫЙ ЦИКЛ ДЕФЕКТА
1.6.2. ПРАВИЛА ОФОРМЛЕНИЯ ОТЧЁТОВ ОБ ОШИБКАХ
1.6.3. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
1.7. ОТЧЁТНОСТЬ О РЕЗУЛЬТАТАХ ТЕСТИРОВАНИЯ
1.7.1. СОЗДАНИЕ ОТЧЁТОВ О РЕЗУЛЬТАТАХ ТЕСТИРОВАНИЯ
1.7.2. ОСОБЕННОСТЬ ОТЧЁТОВ О РЕЗУЛЬТАТАХ ТЕСТИРОВАНИЯ В АВТОМАТИЗИРОВАННОМ ТЕСТИРОВАНИИ
ТЕМА 2:ОСНОВЫ ПРОГРАММИРОВАНИЯ НА JAVA ДЛЯ СПЕЦИАЛИСТОВ ПО АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
2.1. ОСНОВЫ РАБОТЫ С JAVA
2.1.1. ОСНОВНЫЕ СВЕДЕНИЯ О JAVA
2.1.2. JDK, ЕГО УСТАНОВКА И НАСТРОЙКА
2.1.3. КОД ПРОСТЕЙШЕГО ПРИЛОЖЕНИЯ
2.1.4. КОМПИЛЯЦИЯ И ЗАПУСК ИЗ КОМАНДНОЙ СТРОКИ
2.1.5. ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.1.6. ИСПОЛЬЗОВАНИЕ IDE ECLIPSE
2.2. ОСНОВЫ ЯЗЫКА JAVA
2.2.1. ИДЕНТИФИКАТОРЫ, ТИПЫ ДАННЫХ, КОНСТАНТЫ И ПЕРЕМЕННЫЕ
2.2.2. ОСНОВНЫЕ ОПЕРАЦИИ
2.2.3. ОПЕРАТОРЫ УПРАВЛЕНИЯ
2.2.4. ПРЕОБРАЗОВАНИЕ ТИПОВ
2.2.5. РАБОТА С ДРОБНЫМИ ЧИСЛАМИ
2.2.6. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.2.7. ВЫПОЛНЕНИЕ МАТЕМАТИЧЕСКИХ ОПЕРАЦИЙ
2.2.8. ЗАДАЧИ ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.2.9. РАБОТА СО СТРОКАМИ
2.2.10. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.2.11. МАССИВЫ И РАБОТА С НИМИ
2.2.12. РАБОТА С КОНСОЛЬЮ
2.2.13. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.3. ОБРАБОТКА ДАННЫХ НА JAVA
2.3.1. КОЛЛЕКЦИИ И РАБОТА С НИМИ
2.3.2. РАБОТА С ФАЙЛАМИ И КАТАЛОГАМИ
2.3.3. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
2.4. ООП В JAVA
2.4.1. ПРИНЦИПЫ ООП
2.4.2. СОЗДАНИЕ КЛАССОВ И МЕТОДОВ
2.4.3. КОНСТРУКТОРЫ И ПЕРЕКРЫТИЕ МЕТОДОВ
2.4.4. МОДИФИКАТОРЫ ДОСТУПА
2.4.5. ИНТЕРФЕЙСЫ
2.4.6. ПАРАМЕТРИЗАЦИЯ
2.5. ИСКЛЮЧЕНИЯ И ИХ ОБРАБОТКА
2.5.1. БЛОКИ TRY … CATCH
2.5.2. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
ТЕМА 3: ВВЕДЕНИЕ В АВТОМАТИЗАЦИЮ ТЕСТИРОВАНИЯ
3.1. КЛЮЧЕВЫЕ ПОНЯТИЯ И ОБЛАСТИ ПРИМЕНЕНИЯ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
3.1.1. ОПРЕДЕЛЕНИЯ
3.1.2. ОБЛАСТИ АВТОМАТИЗАЦИИ
3.1.3. УЧИТЫВАЕМЫЕ ПРИ АВТОМАТИЗАЦИИ ФАКТОРЫ
3.1.4. ПЛЮСЫ И МИНУСЫ АВТОМАТИЗАЦИИ
3.1.5. ТЕХНИЧЕСКИЕ ОСОБЕННОСТИ АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ
3.1.6. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
3.2. ПЛАНИРОВАНИЕ И ОЦЕНКА ТРУДОЗАТРАТ НА ОСНОВЕ ТРЕБОВАНИЙ И ТЕСТКЕЙСОВ
3.2.1. ОЦЕНКА ТРУДОЗАТРАТ – ОБЩИЕ ИДЕИ
3.2.2. ОЦЕНКА НА ОСНОВЕ ТРЕБОВАНИЙ
3.2.3. ОЦЕНКА НА ОСНОВЕ ТЕСТ-КЕЙСОВ
3.2.4. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
ТЕМА 4: АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ С ПРИМЕНЕНИЕМ TESTCOMPLETE
4.1. ВОЗМОЖНОСТИ TESTCOMPLETE
4.1.1. ОБЩИЕ СВЕДЕНИЯ
4.1.2. КЛЮЧЕВЫЕ ВОЗМОЖНОСТИ И ОСОБЕННОСТИ
4.1.3. ТЕХНОЛОГИЯ RECORD & PLAYBACK В TESTCOMPLETE
4.1.4. ЗАПИСЬ И ВОСПРОИЗВЕДЕНИЕ ТЕСТОВ В TESTCOMPLETE
4.2. ПРАКТИЧЕСКОЕ ПРИМЕНЕНИЕ TESTCOMPLETE
4.2.1. ИНТЕРФЕЙС TESTCOMPLETE
4.2.2. KEYWORD-ТЕСТЫ
4.2.3. ЭЛЕМЕНТЫ ПРИЛОЖЕНИЯ И РАБОТА С НИМИ
4.2.4. РУЧНОЕ НАПИСАНИЕ КОДА
4.2.5. КОД И ФУНКЦИОНАЛЬНАЯ ДЕКОМПОЗИЦИЯ
4.2.6. ОСНОВЫ ПРИМЕНЕНИЯ JSCRIPT
4.2.7. ОСНОВНЫЕ БИБЛИОТЕКИ TESTCOMPLETE
4.2.8. ПРОЕЦИРОВАНИЕ ИМЁН, СОБЫТИЯ, ИСКЛЮЧЕНИЯ В TESTCOMPLETE
4.2.9. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
ТЕМА 5: МОДУЛЬНОЕ ТЕСТИРОВАНИЕ В JAVA
5.1. КЛЮЧЕВЫЕ ПОНЯТИЯ МОДУЛЬНОГО ТЕСТИРОВАНИЯ
5.1.1. ОБЩИЕ СВЕДЕНИЯ
5.1.2. ФРЕЙМВОРКИ
5.1.3. ФРЕЙМВОРКИ МОДУЛЬНОГО ТЕСТИРОВАНИЯ В JAVA
5.1.4. КАК ТЕСТИРОВАТЬ…
5.1.5. ТИПИЧНЫЕ ОШИБКИ ПРИ СОЗДАНИИ МОДУЛЬНЫХ ТЕСТОВ
5.1.6. АННОТАЦИИ В JAVA И ИХ СВЯЗЬ С МОДУЛЬНЫМ ТЕСТИРОВАНИЕМ
5.2. JUNIT
5.2.1. СОЗДАНИЕ JUNIT-ТЕСТОВ В ECLIPSE
5.2.2. ОСНОВНЫЕ АННОТАЦИИ В JUNIT
5.2.3. ОСНОВНЫЕ ПРОВЕРКИ В JUNIT
5.2.4. ТЕСТОВЫЕ СЦЕНАРИИ В JUNIT
5.2.5. JUNIT 4 И JUNIT 3
5.2.6. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
5.3. TESTNG
5.3.1. СРАВНЕНИЕ TESTNG И JUNIT
5.3.2. УСТАНОВКА TESTNG
5.3.3. СОЗДАНИЕ TESTNG-ТЕСТОВ В ECLIPSE
5.3.4. ОСНОВНЫЕ АННОТАЦИИ В TESTNG
5.3.5. ОСНОВНЫЕ ПРОВЕРКИ В TESTNG
5.3.6. ТЕСТОВЫЕ СЦЕНАРИИ В TESTNG
5.3.7. ПРЕОБРАЗОВАНИЕ JUNIT-ТЕСТОВ В TESTNG-ТЕСТЫ
5.3.8. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
5.4. РАЗРАБОТКА ПОД УПРАВЛЕНИЕМ ТЕСТИРОВАНИЕМ
5.4.1. ОБЩИЕ СВЕДЕНИЯ
5.4.2. ПРИНЦИП RED-GREEN-REFACTOR
5.5. JMOCK
5.5.1. ПОНЯТИЕ MOCK-ОБЪЕКТОВ
5.5.2. ПРИМЕНЕНИЕ JMOCK В РАЗРАБОТКЕ ПОД УПРАВЛЕНИЕМ ТЕСТИРОВАНИЕМ
5.5.3. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
ТЕМА 6: ПОДХОДЫ К АВТОМАТИЗАЦИИ ТЕСТИРОВАНИЯ, ПОСТРОЕНИЕ ФРЕЙМВОРКОВ
6.1. ПОДХОДЫ К ОРГАНИЗАЦИИ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ
6.2. ТЕСТИРОВАНИЕ ПОД УПРАВЛЕНИЕМ ДАННЫМИ
6.2.1. ВНЕШНИЕ ИСТОЧНИКИ ДАННЫХ
6.2.2. XML И ЕГО ПРИМЕНЕНИЕ
6.2.3. ПРИМЕРЫ
6.2.4. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
6.3. ТЕСТИРОВАНИЕ ПОД УПРАВЛЕНИЕМ КЛЮЧЕВЫМИ СЛОВАМИ
6.3.1. ОБЩИЕ ПРИНЦИПЫ
6.3.2. ПРИМЕР
6.4. ФУНКЦИОНАЛЬНАЯ ДЕКОМПОЗИЦИЯ И ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ
6.4.1. ФУНКЦИОНАЛЬНАЯ ДЕКОМПОЗИЦИЯ
6.4.2. ПАТТЕРНЫ ПРОЕКТИРОВАНИЯ НА ПРОСТЫХ ПРИМЕРАХ
6.5. ПРИНЦИПЫ СОЗДАНИЯ ФРЕЙМВОРКОВ
6.5.1. ОБЩИЕ ИДЕИ
6.5.2. ЗАДАЧА ДЛЯ САМОСТОЯТЕЛЬНОГО РЕШЕНИЯ
ТЕМА 7: ТЕСТИРОВАНИЕ ПРОИЗВОДИТЕЛЬНОСТИ
7.1. КЛЮЧЕВЫЕ ПОНЯТИЯ ТЕСТИРОВАНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
7.1.1. ОБЩАЯ ТЕРМИНОЛОГИЯ
7.1.2. ЦЕЛИ ТЕСТИРОВАНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
7.1.3. ОСНОВНЫЕ ТЕСТЫ ПРОИЗВОДИТЕЛЬНОСТИ
7.2. ЭТАПЫ ПРОВЕДЕНИЯ ТЕСТИРОВАНИЯ ПРОИЗВОДИТЕЛЬНОСТИ
7.3. ОТЧЁТНОСТЬ О ТЕСТИРОВАНИИ ПРОИЗВОДИТЕЛЬНОСТИ
7.3.1. ПРИНЦИПЫ ФОРМИРОВАНИЯ ОТЧЁТОВ О ТЕСТИРОВАНИИ ПРОИЗВОДИТЕЛЬНОСТИ
7.3.2. ЗАДАНИЕ ДЛЯ САМОСТОЯТЕЛЬНОЙ ПОДГОТОВКИ
7.4. APACHE JMETER
7.5. ДОПОЛНИТЕЛЬНЫЕ СРЕДСТВА СБОРА ИНФОРМАЦИИ О ДЕЯТЕЛЬНОСТИ ПРИЛОЖЕНИЯ
Создал класс BaseTest, в котором у меня реализована инициализация драйвера, также убрал SetProperty с явным указанием в нем пути к драйверу заменив его dependency WebDriverManager в pom файле. В итоге получился такой код:
public class BaseTest {
protected WebDriver driver;
@BeforeClass
public void setUpDriver(){
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}
@AfterClass
public void tearDown(){
driver.quit();
}
}
От этого класса у меня будут наследоваться все тестовые классы.
Дальше создал класс BasePage, от которого будут наследоваться все пейджы. Так как пейджам нужен драйвер, то в данном классе (BasePage) я создал конструктор, в итоге каждый пейдж который будет создаваться, получит драйвер через super(driver).
Также я тут создал метод find, который заменит длинное написание driver.findElement().
Код ниже:
public class BasePage {
protected WebDriver driver;
public BasePage(WebDriver driver){
this.driver = driver;
}
public WebElement find(By locator){
return driver.findElement(locator);
}
}
Дальше класс самой страницы. Тут я оставил пару методов просто для наглядности, что бы не копипастить весь класс. В итоге создаем конструктор страницы, получаем драйвер, создаем переменные типа By с которыми будем работать, создаем маленькие методы (например заполнить поле, выбрать с селекта), потом создаем метод cardFill() который обьеденит эти методы.
public class NewOrgRegistrationPage extends BasePage{
public NewOrgRegistrationPage(WebDriver driver) {
super(driver);
}
String url = "http://192.168.1.111:8085/share/page/context/mine/sxg-external-registration";
By orgRegistrationReasonDropBox = By.name("prop_uxp_orgnRegistrationReason");
By fullOrgNameField = By.name("prop_uxp_orgnName");
public NewOrgRegistrationPage selectOrgRegistrationReason(){
Select selectOrg = new Select(find(orgRegistrationReasonDropBox));
selectOrg.selectByIndex(1);
return this;
}
public NewOrgRegistrationPage setFullOrgNameField(String orgName){
find(fullOrgNameField).sendKeys(orgName);
return this;
}
public NewOrgRegistrationPage visit(){
driver.get(this.url);
return this;
}
public void cardFill(){
visit();
selectOrgRegistrationReason();
setFullOrgNameField("some name");
}
}
И наконец то сам тест класс
public class CreatingNewOrgTest extends BaseTest{
@Test
public void cardFill(){
NewOrgRegistrationPage page = new NewOrgRegistrationPage(driver);
page.cardFill();
}
}
Жду конструктивной критики особенно от пользователя Noksa, так как прошлый раз очень хорошие были замечания.
Но помимо критики у меня сразу есть вопросы.
1. Мне кажется что в тестовых классах я не должен иметь возможности делать driver.findElement, driver.click и т.д. Тоесть на прямую обращаться к драйверу. Или я ошибаюсь?
2. В архитектуре классов у меня есть также класс SummaryAPI. В лекции что я смотрел, от этого класса неследовались классы BasePage и BaseTest - тоесть в них была реализация чего то общего для этих двух классов, например того же метода find:
public WebElement find(By locator){
return driver.findElement(locator);
}
Я этого к сожелению понять не могу, зачем мне этод метод в тестовых классах? Если я могу его создать в BasePage, что я собстевнно и сделал, так как только в пейджах которые наследуються от этого класса я и буду его использовать. В чем смысл заносить его в SummaryAPI, потом наследовать в BaseTest и в тестовом методе иметь возможность делать find(By name("q")).
Я много где видел советы по созданию класса общего для BasePage и BaseTest. Но что там должно быть? Наведите пожалуйста примеры. Спасибо!