Интеграция автотестов
в процесс разработки
Обо мне
2
Казаченко Александр
Фронтенд-разработчик, Tinkoff.ru
shoom3301@gmail.com
Протестируем google
3
Действие: ввести поисковый запрос
Проверка: результат содержит слово “автотесты”
4
клац-клац-клац
Passed!
Зачем нам автотесты?
5
Зачем нам автотесты?
6
Зачем нам автотесты?
7
Continuous delivery
8
Development
Version control
Build & unit tests
Automated acceptance tests
User acceptance tests
Release
Automated acceptance tests
9
Что имеем?
Angular SPA
10
Testrail
11
Testrail - test case manager
Testrail
12
Аналоги testrail
13
14
Что такое тест-кейс?
Структура тест кейса
15
Preconditions
Steps
Expect
Preconditions
16
beforeEach(async () => {
await appPageObject.login();
await appPageObject.openMainPage();
});
Steps (Page object)
17
get conversationInput(): ElementFinder {
return byAutomationId('conversation-input');
}
@Step('Заполнить поле ввода темы для нового диалога')
async setNewConversationCaption(caption: string) {
const {conversationInput} = this;
await waitFor(conversationInput);
await conversationInput.sendKeys(caption);
}
Test
18
it('[171924] Кнопка "отправить" активна, если введен текст',
async () => {
await appPageObject.setText(someText);
const {sendButton} = appPageObject;
await waitFor(sendButton);
await expect(sendButton.isEnabled()).toBe(true);
});
Teamcity CI
19
Build
Unit tests & lint
Deploy
Освежим память
20
21
Что будем делать?
Testrail time!
22
Связывание кейсов в коде и в testrail
23
it('[171881] Менеджер заходит на карточку...
it('[171882] Менеджер кликает на стрелку...
it('[171883] Менеджер жмет на пункт меню...
Code
Testrail
Запуск автотестов в teamcity
24
API request
Click
Testrail
Trigger
Teamcity
Click
Trigger
25
Protractor
26
Protractor - e2e тест-фреймворк на основе WebDriverJS
RunId
27
Run - запуск автотестов и результат их выполнения
Run
28
Освежим память
29
Загрузка кейсов из testrail
30
перед запуском
Protractor
Testrail
загружаем кейсы
сохраняем кейсы
кейсы из run’а
запрос к API
по runId
Фильтрация кейсов
31
Загруженные
В коде
it('[171924] Кнопка "отправить" неактивна...
it('[171925] Менеджер не может управлять...
it('[171926] После ввода текста и темы диалога...
it('[171927] После нажатия кнопки "отправить"….
it('[171930] Подсказки бота отсутствую...
Статус кейса inWork
32
перед запуском теста
отправляем статус “в работе”
устанавливаем статус теста
запрос к API
с statusId
Protractor
Testrail
Результат выполнения кейса
33
перед запуском теста
отправляем статус
устанавливаем статус теста
запрос к API
с statusId
Protractor
Testrail
не успешно
успешно
Освежим память
34
Запуск автотестов на pull request
35
Запуск автотестов на pull request
36
Features - описание функциональностей в виде тэгов
Features тэги в jira
37
Features тэги в testrail
38
Связь через features
39
Jira
Testrail
Триггер запуска автотестов
40
Pull request
Unit tests & lint
Build
Deploy
protractor
Немного магии
41
Загрузка features из jira
42
#!/bin/bash
JIRAID=%dep.PullRequestBuild.JiraTaskId%
FEATURES=$(curl -s -k -u $PASS -X GET
-H "Content-Type: application/json" https://jira/rest/api/2/search?jql=id=$JIRAID
| python -c 'import json,sys;obj=json.load(sys.stdin);
[sys.stdout.write(i+",") for i in obj[u"issues"][0][u"fields"][u"customfield_7777"]]')
echo "##teamcity[setParameter name='env.TESTS_FEATURES' value='$FEATURES']"
echo "##teamcity[setParameter name='env.URL' value='https://$JIRAID.some-app.tinkoff.ru']"
Загрузка и фильтрация кейсов
43
перед запуском
загружаем кейсы
фильруем кейсы по features
запускаем только кейсы
с соот-ми features
PR build result
44
PR build result
45
Закрепим
46
47
Какие профиты?
Профиты
48
49
Спасибо!
Источники информации:
https://goo.gl/UyViTK