Дело тестера боится: как в опытных руках могут заиграть Java и TestNg

IT61
IT61IT61
QA meetup #4
Дело тестера боится: как в
опытных руках могут заиграть
Java и TestNg
Вячеслав Марков, QA
engineer at Weezlabs
Что нужно проверять при
функциональном тестировании
REST API?
Статус-коды ответа при
различных входных данных
Корректность возвращаемых
данных
Корректность логики работы
TestNG
TestNG (Next generation) – тестовый фреймворк для
написания автотестов на языке Java.
Unit-тестирование
Функциональное тестирование
End-to-End тесты
Интеграционное тестирование
И это далеко не всё!
+- before suite/
+- before group/
+- before test/
+- before class/
+- before method/
+- test/
+- after method/
...
+- after class/
...
+- after test/
...
+- after group/
...
+- after suite/
Как это работает?
TestNG использует
иерархический механизм
before- и after-
аннотаций для
конфигурирования тестов
Что можно протестировать с помощью TestNG?
Выполнить функциональные
тесты
Провести регрессионное
тестирование
Организовать Continuous
Integration
Для чего TestNG подходит не так хорошо?
Нагрузочное тестирование
Data-Driven Testing (DDT)
Большие наборы
тестовых данных
Много данных — один
код
Лёгкое добавление
тестовых данных
Data-Driven Testing - подход
к написанию тестов,
позволяющий разнести
тестовый код и тестовые
данные.
Преимущества DDT
Лёгкость изменения и
добавления тестовых
данных
Тест управляется
входными данными
Отлично подходит для
позитивного и
негативного
тестирования REST API
Недостатки DDT
Не всегда удобно для проверки эйдж-
кейсов
Усложняется код теста
Data-Provider в TestNG
• В TestNG реализовать DDT- подход позволяет механизм Data-Provider,
последовательно предоставляющий тестовому методу элементы
набора тестовых данных
• Наборы тестовых данных мы храним в JSON-файлах в виде массивов
• В коде теста необходимо описать метод с аннотацией
@DataProvider
@DataProvider(name = "ddtSet")
public Object[][] ddtSet(ITestContext context) throws IOException, URISyntaxException {
String jsonDdtFile = context.getCurrentXmlTest().getParameter("jsonDdtFile");
URL resourceUrl = getClass().getResource(DDT_DATA_PATH+jsonDdtFile);
ArrayList<userSet> userSetArrayList = new ArrayList<userSet>();
userSetArrayList = mapper.readValue(new File(resourceUrl.getFile()),
new TypeReference<ArrayList<userSet>>() {});
Object[][] objectArray = new Object[userSetArrayList.size()][];
for(int i=0;i<userSetArrayList.size();i++){
objectArray[i] = new Object[] {userSetArrayList.get(i)};
}
return objectArray;
}
@Test(dataProvider = "ddtSet", description = "Perform single charge")
public void postSingleCharge(userSet testSet)
Пример используемой нами
структуры проекта TestNG
• Maven-проект
• Основные элементы структуры
— модели данных (dto),
служебные классы, сами тесты
(stories), наборы тестовых
данных (ddt), наборы тестов
(suites)
Библиотека Rest-Assured
 Эта библиотека позволяет тестировать REST API
 Имеется возможность составлять REST-запросы
любой сложности
 https://github.com/rest-assured/rest-assured
Response response = given().
header("uid", uid).
header("client", client).
header("access-token", access_token).
header("Content-Type", "multipart/form-data").
header("Accept-Charset", "UTF-8").
multiPart((new MultiPartSpecBuilder(file)
.fileName(filename)
.controlName("origin")
.mimeType(media_type).build())).
post("attachments/image_uploader");
Простой пример: тестируем API
для логина
• POST api/v1/users/sign_in
Assertions. Как проверить результат
вызова API?
Hard Assertions
Тест отмечается как проваленный при провале Hard
Assert
Выполнение тестового метода прекращается после
провала Hard Assert
Полезны для общих проверок верхнего уровня
Soft Assertions
Провал SoftAssert не приводит к остановке теста
Все проваленные SoftAssert выводятся после
окончания теста
Позволяют проверить множество параметров
А если что-то сложнее логина?
Проверка совершения оплаты при вызове
POST api/v1/payment/single_charge/
• Проверяются не только ожидаемые статус-коды
• Проверяется корректность расчётов
• Вызов многих REST API в одном тесте
А как собрать мои тесты в тест-сьют?
• Списки выполняемых тестов собраны в xml-файлах
• Каждый тест может быть легко параметризован
<test name="Sign Up">
<parameter name="runId" value="68"/>
<parameter name="jsonDdtFile" value="SignUp.json"/>
<classes>
<class name="stories.UserStory.SignUp" > </class>
</classes>
</test>
<test name="SignIn">
<parameter name="runId" value="68"/>
<parameter name="jsonDdtFile" value="SignIn.json"/>
<classes>
<class name="stories.UserStory.SignIn" > </class>
</classes>
</test>
Организовываем Continious Integration
 Интеграция со всеми
наиболее популярными
VCS (Git, SVN etc.)
 Поддержка Maven
 Интеграция со Slack
 Возможность создания
гибкого расписания
запуска тестов
Мы используем
Jenkins, и вот почему:
Документирование результатов
• Web-система тест-
менеджмента TestRail
• Поддержка интеграции с Jira
• Связь с TestRail с помощью
listeners
Наши вакансии в Ростове-на-Дону и
Таганроге
Project Manager
Middle iOS developer
Ждём ваших резюме по адресу
hr@weezlabs.com
Спасибо за внимание!
Вячеслав Марков, QA Engineer at Weezlabs
vmarkov@weezlabs.com
vk.com/markov_tgn
1 von 19

Recomendados

Организация процесса ручного тестирования von
Организация процесса ручного тестированияОрганизация процесса ручного тестирования
Организация процесса ручного тестированияIT61
1.4K views19 Folien
Микросервисы для автоматизации тестирования - опыт "Одноклассников" von
Микросервисы для автоматизации тестирования - опыт "Одноклассников"Микросервисы для автоматизации тестирования - опыт "Одноклассников"
Микросервисы для автоматизации тестирования - опыт "Одноклассников"SQALab
1.8K views45 Folien
Опыт тестирования API САПР платформы von
Опыт тестирования API САПР платформыОпыт тестирования API САПР платформы
Опыт тестирования API САПР платформыSQALab
2.8K views42 Folien
Инструментация среды исполнения в арсенале тестировщика von
Инструментация среды исполнения в арсенале тестировщикаИнструментация среды исполнения в арсенале тестировщика
Инструментация среды исполнения в арсенале тестировщикаSQALab
9K views31 Folien
GUI-автоматизация в Telerik Test Studio von
GUI-автоматизация в Telerik Test StudioGUI-автоматизация в Telerik Test Studio
GUI-автоматизация в Telerik Test StudioSQALab
2.3K views22 Folien
Как Cluster Membership Software может помочь QA von
Как Cluster Membership Software может помочь QAКак Cluster Membership Software может помочь QA
Как Cluster Membership Software может помочь QASQALab
10.6K views26 Folien

Más contenido relacionado

Was ist angesagt?

Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы... von
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...WrikeTechClub
18.3K views82 Folien
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад von
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадSQALab
6.2K views47 Folien
Seamy side of autotests von
Seamy side of autotestsSeamy side of autotests
Seamy side of autotestsAnton Stepanenko
321 views35 Folien
Автоматическое тестирование Web api von
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web apiIgor Lyubin
316 views37 Folien
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник von
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникSQALab
1K views40 Folien
Визуализация покрытия автоматизированными UI тестами von
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестамиSQALab
5.9K views48 Folien

Was ist angesagt?(20)

Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы... von WrikeTechClub
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
Илья Кудинов «Развитие процессов тестирования в Badoo за три года, или как мы...
WrikeTechClub18.3K views
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад von SQALab
Концепция QaAPI: взгляд на тестирование с другой стороны баррикадКонцепция QaAPI: взгляд на тестирование с другой стороны баррикад
Концепция QaAPI: взгляд на тестирование с другой стороны баррикад
SQALab6.2K views
Автоматическое тестирование Web api von Igor Lyubin
Автоматическое тестирование Web apiАвтоматическое тестирование Web api
Автоматическое тестирование Web api
Igor Lyubin316 views
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник von SQALab
Подводная часть айсберга: что делать, чтобы автотесты не превратились в ТитаникПодводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
Подводная часть айсберга: что делать, чтобы автотесты не превратились в Титаник
SQALab1K views
Визуализация покрытия автоматизированными UI тестами von SQALab
Визуализация покрытия автоматизированными UI тестамиВизуализация покрытия автоматизированными UI тестами
Визуализация покрытия автоматизированными UI тестами
SQALab5.9K views
Автоматизация функционального тестирования REST API von Pavel Asanov
Автоматизация функционального тестирования REST APIАвтоматизация функционального тестирования REST API
Автоматизация функционального тестирования REST API
Pavel Asanov485 views
Поиск багов в поиске von yaevents
Поиск багов в поискеПоиск багов в поиске
Поиск багов в поиске
yaevents425 views
Тестирование REST-сервисов с применением инженерных практик von SQALab
Тестирование REST-сервисов с применением инженерных практикТестирование REST-сервисов с применением инженерных практик
Тестирование REST-сервисов с применением инженерных практик
SQALab515 views
Практика тестирования web сервисов von SQALab
Практика тестирования web сервисовПрактика тестирования web сервисов
Практика тестирования web сервисов
SQALab9.2K views
Архитектура автоматизированных тестов von SQALab
Архитектура автоматизированных тестовАрхитектура автоматизированных тестов
Архитектура автоматизированных тестов
SQALab4.8K views
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов von SQALab
Непрерывная интеграция и автотесты. Сравнительный анализ инструментовНепрерывная интеграция и автотесты. Сравнительный анализ инструментов
Непрерывная интеграция и автотесты. Сравнительный анализ инструментов
SQALab1.1K views
UICov - инструмент анализа покрытия UI-тестами von SQALab
UICov - инструмент анализа покрытия UI-тестамиUICov - инструмент анализа покрытия UI-тестами
UICov - инструмент анализа покрытия UI-тестами
SQALab1.3K views
WP как экспериментальная платформа von SQALab
WP как экспериментальная платформаWP как экспериментальная платформа
WP как экспериментальная платформа
SQALab682 views
Grail: шаги для ваших Python-тестов von CodeFest
Grail: шаги для ваших Python-тестовGrail: шаги для ваших Python-тестов
Grail: шаги для ваших Python-тестов
CodeFest3.7K views
Оценка качества автотестов von SQALab
Оценка качества автотестовОценка качества автотестов
Оценка качества автотестов
SQALab34.8K views
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров von Positive Hack Days
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей БуровСистема мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Система мониторинга Zabbix в процессах разработки и тестирования | Алексей Буров
Positive Hack Days12.5K views
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F... von SQALab
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...
SQALab3.1K views
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов... von Positive Hack Days
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Практические рекомендации по использованию системы TestRail | Дмитрий Рыльцов...
Positive Hack Days3.4K views
Selenium grid on-demand von SQALab
Selenium grid on-demandSelenium grid on-demand
Selenium grid on-demand
SQALab701 views

Similar a Дело тестера боится: как в опытных руках могут заиграть Java и TestNg

Как построить свой фреймворк для автотестов? von
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?Dmitry Buzdin
1.7K views93 Folien
Meeting #4. Frameworks. von
Meeting #4. Frameworks.Meeting #4. Frameworks.
Meeting #4. Frameworks.Igor Khrol
546 views28 Folien
Simonova CSEDays von
Simonova CSEDaysSimonova CSEDays
Simonova CSEDaysLiloSEA
216 views35 Folien
Katerina Simonova CSEDays von
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
278 views35 Folien
Katerina Simonova CSEDays von
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDaysLiloSEA
1 view35 Folien
анализ кода: от проверки стиля до автоматического тестирования von
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестированияRuslan Shevchenko
753 views24 Folien

Similar a Дело тестера боится: как в опытных руках могут заиграть Java и TestNg(20)

Как построить свой фреймворк для автотестов? von Dmitry Buzdin
Как построить свой фреймворк для автотестов?Как построить свой фреймворк для автотестов?
Как построить свой фреймворк для автотестов?
Dmitry Buzdin1.7K views
Meeting #4. Frameworks. von Igor Khrol
Meeting #4. Frameworks.Meeting #4. Frameworks.
Meeting #4. Frameworks.
Igor Khrol546 views
Simonova CSEDays von LiloSEA
Simonova CSEDaysSimonova CSEDays
Simonova CSEDays
LiloSEA216 views
Katerina Simonova CSEDays von LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA278 views
Katerina Simonova CSEDays von LiloSEA
Katerina Simonova CSEDaysKaterina Simonova CSEDays
Katerina Simonova CSEDays
LiloSEA1 view
анализ кода: от проверки стиля до автоматического тестирования von Ruslan Shevchenko
анализ кода: от проверки стиля до автоматического тестированияанализ кода: от проверки стиля до автоматического тестирования
анализ кода: от проверки стиля до автоматического тестирования
Ruslan Shevchenko753 views
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium von jazzteam
Agile Java Development компания JazzTeam - Техническая презентация Xml2SeleniumAgile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
Agile Java Development компания JazzTeam - Техническая презентация Xml2Selenium
jazzteam3.4K views
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий von solit
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко ДмитрийSolit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
Solit 2013, Разбор конкретного примера – продукта XML2Selenium, Горячко Дмитрий
solit1K views
Python Meetup von iQSpace
Python Meetup Python Meetup
Python Meetup
iQSpace306 views
Скриптовой язык Groovy и его применение в рамках разработки ПО von Fedor Malyshkin
Скриптовой язык Groovy и его применение в рамках разработки ПОСкриптовой язык Groovy и его применение в рамках разработки ПО
Скриптовой язык Groovy и его применение в рамках разработки ПО
Fedor Malyshkin2.6K views
"Опыт создания системы управления сборкой и тестированием" (полная) von SPB SQA Group
"Опыт создания системы управления сборкой и тестированием" (полная)"Опыт создания системы управления сборкой и тестированием" (полная)
"Опыт создания системы управления сборкой и тестированием" (полная)
SPB SQA Group541 views
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те... von CodeFest
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest 2010. Жемчужникова М., Овчарова О. —Принципы выбора ПО для группы те...
CodeFest613 views
Building Open Source Test Automation Frameworks. Watir based automation case ... von Aliaksandr Ikhelis
Building Open Source Test Automation Frameworks. Watir based automation case ...Building Open Source Test Automation Frameworks. Watir based automation case ...
Building Open Source Test Automation Frameworks. Watir based automation case ...
Aliaksandr Ikhelis1.1K views
Testing RIA with Selenium von Sergey Shvets
Testing RIA with SeleniumTesting RIA with Selenium
Testing RIA with Selenium
Sergey Shvets1.4K views
Automation Functional Testing in Agile Projects von Andrey Rebrov
Automation Functional Testing in Agile ProjectsAutomation Functional Testing in Agile Projects
Automation Functional Testing in Agile Projects
Andrey Rebrov1K views
Simonova sql server-enginetesting von LiloSEA
Simonova sql server-enginetestingSimonova sql server-enginetesting
Simonova sql server-enginetesting
LiloSEA254 views
Новости Global summit 2015 von Timur Safin
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
Timur Safin539 views
Unit test быстрый старт von Antonio
Unit test быстрый стартUnit test быстрый старт
Unit test быстрый старт
Antonio 1.5K views

Más de IT61

Александр Шорин - Как перестать гоняться за кандидатом и начать жить? von
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?IT61
2K views8 Folien
Нина Марменкова - Найти себя и нАЙТИ своих von
Нина Марменкова - Найти себя и нАЙТИ своихНина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своихIT61
358 views13 Folien
Павел Седаков - Performance review: теория и практика оценки эффективности ра... von
Павел Седаков - Performance review: теория и практика оценки эффективности ра...Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...IT61
327 views14 Folien
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера von
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераДмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераIT61
243 views29 Folien
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за... von
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...IT61
278 views17 Folien
Ольга Стратанович - Менеджер будущего von
Ольга Стратанович - Менеджер будущегоОльга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущегоIT61
255 views29 Folien

Más de IT61(20)

Александр Шорин - Как перестать гоняться за кандидатом и начать жить? von IT61
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
Александр Шорин - Как перестать гоняться за кандидатом и начать жить?
IT612K views
Нина Марменкова - Найти себя и нАЙТИ своих von IT61
Нина Марменкова - Найти себя и нАЙТИ своихНина Марменкова - Найти себя и нАЙТИ своих
Нина Марменкова - Найти себя и нАЙТИ своих
IT61358 views
Павел Седаков - Performance review: теория и практика оценки эффективности ра... von IT61
Павел Седаков - Performance review: теория и практика оценки эффективности ра...Павел Седаков - Performance review: теория и практика оценки эффективности ра...
Павел Седаков - Performance review: теория и практика оценки эффективности ра...
IT61327 views
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера von IT61
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджераДмитрий Костюк - Необходимые инструменты и качества для роста менеджера
Дмитрий Костюк - Необходимые инструменты и качества для роста менеджера
IT61243 views
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за... von IT61
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
Константин Гуфан - Чем должны заниматься менеджеры и чем они на самом деле за...
IT61278 views
Ольга Стратанович - Менеджер будущего von IT61
Ольга Стратанович - Менеджер будущегоОльга Стратанович - Менеджер будущего
Ольга Стратанович - Менеджер будущего
IT61255 views
Константин Гуфан - Сколько лет живет любовь к работе? von IT61
Константин Гуфан - Сколько лет живет любовь к работе?Константин Гуфан - Сколько лет живет любовь к работе?
Константин Гуфан - Сколько лет живет любовь к работе?
IT61219 views
Организация тестирования в Inostudio von IT61
Организация тестирования в InostudioОрганизация тестирования в Inostudio
Организация тестирования в Inostudio
IT61235 views
Нагрузочное тестирование API. Как летать, а не ползать? von IT61
Нагрузочное тестирование API. Как летать, а не ползать?Нагрузочное тестирование API. Как летать, а не ползать?
Нагрузочное тестирование API. Как летать, а не ползать?
IT612.3K views
Calabash. Автоматизированное тестирование мобильных приложений von IT61
Calabash. Автоматизированное тестирование мобильных приложенийCalabash. Автоматизированное тестирование мобильных приложений
Calabash. Автоматизированное тестирование мобильных приложений
IT61353 views
Особенности тестирования мобильных приложений von IT61
Особенности тестирования мобильных приложенийОсобенности тестирования мобильных приложений
Особенности тестирования мобильных приложений
IT61443 views
Machine learning на примере алгоритма ценообразования, Овсеп Авакян von IT61
Machine learning на примере алгоритма ценообразования, Овсеп АвакянMachine learning на примере алгоритма ценообразования, Овсеп Авакян
Machine learning на примере алгоритма ценообразования, Овсеп Авакян
IT61265 views
Machine learning c использованием нейронных сетей, Дмитрий Лапин von IT61
Machine learning c использованием нейронных сетей, Дмитрий ЛапинMachine learning c использованием нейронных сетей, Дмитрий Лапин
Machine learning c использованием нейронных сетей, Дмитрий Лапин
IT61591 views
Изоморфизм как предметное поле data science, Артем Москалец von IT61
Изоморфизм как предметное поле data science, Артем МоскалецИзоморфизм как предметное поле data science, Артем Москалец
Изоморфизм как предметное поле data science, Артем Москалец
IT61241 views
Data scientology starter pack, Сергей Казаков von IT61
Data scientology starter pack, Сергей КазаковData scientology starter pack, Сергей Казаков
Data scientology starter pack, Сергей Казаков
IT61301 views
Параллельное управление, Елена Сибилева (Жмек дизайн) von IT61
Параллельное управление, Елена Сибилева (Жмек дизайн)Параллельное управление, Елена Сибилева (Жмек дизайн)
Параллельное управление, Елена Сибилева (Жмек дизайн)
IT61161 views
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие... von IT61
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
Эффективный отдел техподдержки сайтов без вашего участия, Максим Мул (Рабочие...
IT61168 views
Тренды в процессах разработки, Константин Иванов (TradingView) von IT61
Тренды в процессах разработки, Константин Иванов (TradingView)Тренды в процессах разработки, Константин Иванов (TradingView)
Тренды в процессах разработки, Константин Иванов (TradingView)
IT61244 views
Амина Прима - Ой, все! Я ухожу von IT61
Амина Прима - Ой, все! Я ухожуАмина Прима - Ой, все! Я ухожу
Амина Прима - Ой, все! Я ухожу
IT61655 views
Как перестать беспокоиться и начать тестировать или это волшебное слово Agile von IT61
Как перестать беспокоиться и начать тестировать или это волшебное слово AgileКак перестать беспокоиться и начать тестировать или это волшебное слово Agile
Как перестать беспокоиться и начать тестировать или это волшебное слово Agile
IT61431 views

Дело тестера боится: как в опытных руках могут заиграть Java и TestNg

  • 1. QA meetup #4 Дело тестера боится: как в опытных руках могут заиграть Java и TestNg Вячеслав Марков, QA engineer at Weezlabs
  • 2. Что нужно проверять при функциональном тестировании REST API? Статус-коды ответа при различных входных данных Корректность возвращаемых данных Корректность логики работы
  • 3. TestNG TestNG (Next generation) – тестовый фреймворк для написания автотестов на языке Java. Unit-тестирование Функциональное тестирование End-to-End тесты Интеграционное тестирование И это далеко не всё!
  • 4. +- before suite/ +- before group/ +- before test/ +- before class/ +- before method/ +- test/ +- after method/ ... +- after class/ ... +- after test/ ... +- after group/ ... +- after suite/ Как это работает? TestNG использует иерархический механизм before- и after- аннотаций для конфигурирования тестов
  • 5. Что можно протестировать с помощью TestNG? Выполнить функциональные тесты Провести регрессионное тестирование Организовать Continuous Integration Для чего TestNG подходит не так хорошо? Нагрузочное тестирование
  • 6. Data-Driven Testing (DDT) Большие наборы тестовых данных Много данных — один код Лёгкое добавление тестовых данных Data-Driven Testing - подход к написанию тестов, позволяющий разнести тестовый код и тестовые данные.
  • 7. Преимущества DDT Лёгкость изменения и добавления тестовых данных Тест управляется входными данными Отлично подходит для позитивного и негативного тестирования REST API
  • 8. Недостатки DDT Не всегда удобно для проверки эйдж- кейсов Усложняется код теста
  • 9. Data-Provider в TestNG • В TestNG реализовать DDT- подход позволяет механизм Data-Provider, последовательно предоставляющий тестовому методу элементы набора тестовых данных • Наборы тестовых данных мы храним в JSON-файлах в виде массивов • В коде теста необходимо описать метод с аннотацией @DataProvider @DataProvider(name = "ddtSet") public Object[][] ddtSet(ITestContext context) throws IOException, URISyntaxException { String jsonDdtFile = context.getCurrentXmlTest().getParameter("jsonDdtFile"); URL resourceUrl = getClass().getResource(DDT_DATA_PATH+jsonDdtFile); ArrayList<userSet> userSetArrayList = new ArrayList<userSet>(); userSetArrayList = mapper.readValue(new File(resourceUrl.getFile()), new TypeReference<ArrayList<userSet>>() {}); Object[][] objectArray = new Object[userSetArrayList.size()][]; for(int i=0;i<userSetArrayList.size();i++){ objectArray[i] = new Object[] {userSetArrayList.get(i)}; } return objectArray; } @Test(dataProvider = "ddtSet", description = "Perform single charge") public void postSingleCharge(userSet testSet)
  • 10. Пример используемой нами структуры проекта TestNG • Maven-проект • Основные элементы структуры — модели данных (dto), служебные классы, сами тесты (stories), наборы тестовых данных (ddt), наборы тестов (suites)
  • 11. Библиотека Rest-Assured  Эта библиотека позволяет тестировать REST API  Имеется возможность составлять REST-запросы любой сложности  https://github.com/rest-assured/rest-assured Response response = given(). header("uid", uid). header("client", client). header("access-token", access_token). header("Content-Type", "multipart/form-data"). header("Accept-Charset", "UTF-8"). multiPart((new MultiPartSpecBuilder(file) .fileName(filename) .controlName("origin") .mimeType(media_type).build())). post("attachments/image_uploader");
  • 12. Простой пример: тестируем API для логина • POST api/v1/users/sign_in
  • 13. Assertions. Как проверить результат вызова API? Hard Assertions Тест отмечается как проваленный при провале Hard Assert Выполнение тестового метода прекращается после провала Hard Assert Полезны для общих проверок верхнего уровня Soft Assertions Провал SoftAssert не приводит к остановке теста Все проваленные SoftAssert выводятся после окончания теста Позволяют проверить множество параметров
  • 14. А если что-то сложнее логина? Проверка совершения оплаты при вызове POST api/v1/payment/single_charge/ • Проверяются не только ожидаемые статус-коды • Проверяется корректность расчётов • Вызов многих REST API в одном тесте
  • 15. А как собрать мои тесты в тест-сьют? • Списки выполняемых тестов собраны в xml-файлах • Каждый тест может быть легко параметризован <test name="Sign Up"> <parameter name="runId" value="68"/> <parameter name="jsonDdtFile" value="SignUp.json"/> <classes> <class name="stories.UserStory.SignUp" > </class> </classes> </test> <test name="SignIn"> <parameter name="runId" value="68"/> <parameter name="jsonDdtFile" value="SignIn.json"/> <classes> <class name="stories.UserStory.SignIn" > </class> </classes> </test>
  • 16. Организовываем Continious Integration  Интеграция со всеми наиболее популярными VCS (Git, SVN etc.)  Поддержка Maven  Интеграция со Slack  Возможность создания гибкого расписания запуска тестов Мы используем Jenkins, и вот почему:
  • 17. Документирование результатов • Web-система тест- менеджмента TestRail • Поддержка интеграции с Jira • Связь с TestRail с помощью listeners
  • 18. Наши вакансии в Ростове-на-Дону и Таганроге Project Manager Middle iOS developer Ждём ваших резюме по адресу hr@weezlabs.com
  • 19. Спасибо за внимание! Вячеслав Марков, QA Engineer at Weezlabs vmarkov@weezlabs.com vk.com/markov_tgn