Несколько вещей в помощь
автоматизатору
ЧЕРНОВИК!
Об авторе
•
Занимался автоматизированным
тестированием
•
Now development
•
Где работал
Point 1: Domain’ая модель
•
Domain – область знаний
•
Что это?
•
Цель : стремиться при написании кода
тестовых сценариев, использовать
понятные всем сущности и оперировать
ими.
•
Зачем?
Пример 1
Пример кода тестового сценария :
Apple apple = appleBuilder.buildApple();
Kid kid = kidFactory.getKid();
kid.eat(apple);
asserts.isTrue(kid.isHungry(),
“Kid is hungry after ate apple”);
Пример 2
PostRequest postRequest = new PostRequest();
postRequest.setURI(testServerUri + kidEatUri);
postRequest.setBody(“Food : Apple”);
httpClient.execute(postRequest);
Boolean isHungry = checkHungry();
asserts.isTrue(isHungry,
“Kid is hungry after ate apple”);
Как достичь Примера 1?
Point 2 : Качество кода
•
Проблемы :
•
Часто, никто вокруг не считает, что
разработка автотестов – это разработка.
•
Разработчик автотестов не считает, что
он занимается разработкой
Что делать?
•
Программа минимум : Don’t Repeat
Yourself (DRY)
•
Middle level : делать код чище (Роб
Мартин – Чистый код)
•
Hard level : Фаулер – Архитектура
корпоративных приложений
Point 3 : DDT
•
Что такое?
•
Картинка с разными тестовыми
данными (как обойма) и один
выполняющий это скрипт
(автоматическое оружие?)
Пример
TestData testData = TestDataExtractor.getData();
Food food = testData.getFood();
Kid kid = kidFactory.getKid();
kid.eat(food);
asserts.isEquals(testData.getExpectedResult(),
kid.isHungry());
Test data :
“Food : Apple”, “True”
“Food : Empty”, “False”
“Food : Pear”, “True”
Как этого достичь?
•
Архитектура, картинка
Point 4 : useful artifacts
•
CI : зачем нужен?
•
автоматический запуск тестов/сборок.
•
запуски по event’у.
Вопросы?
Контакты : …
SOLIDарность: Тестирование как разработка