1. Scalable eCommerce Platform Solutions
Автоматизатор, копай
глубже, копай шире!
IT Global MeetUp
Saint-Petersburg,
23 July, 2016
2. Scalable eCommerce Platform Solutions
О выступающих
Работаем тестировщиками-автоматизаторами в компании Grid
Dynamics
Используем в основном Java для back-end тестов и JavaScript для
front-end
Илья Коробицын
talks@korobochka.org
Всеволод Брекелов
vsevolod.brekelov@gmail.com
3. Scalable eCommerce Platform Solutions
• Философски-мотивационная речь о пользе знаний
• Глубже: чем лучше вы знаете используемые инструменты,
тем эффективней получится их использовать
• Шире: знания вещей, не относящихся напрямую к вашей
работе, могут пригодиться или натолкнуть на новые мысли
“Вещи” здесь это не только инструменты, но и подходы и общая
философия
Вступление
4. Scalable eCommerce Platform Solutions
Аналитики пишут требования в специальной форме “историй”:
Who, Why, What for
Given -> When -> Then
Тестировщики пишут обвязку, которая интерпретирует
требования и проверяет их автоматически
BDD
5. Scalable eCommerce Platform Solutions
Specification & Property based
• Декларативность против императивности
• Вместо поведения в нескольких фиксированных ситуациях
можно проверить соответствие некоторым свойствам
• Многие параметры можно выбрать случайным образом
автоматически - позволяет покрыть больше случаев в
перспективе
• Полезней выбирать не совсем случайные значения, а
“нехорошие”, пример: Big List of Naughty Strings для юникода
7. Scalable eCommerce Platform Solutions
CI/CD
• Польза тестов многократно возрастает, когда их запускают 0_о
• CI инструменты позволяют сделать запуск тестов
автоматическим, регулярным и обязательным
• Обычно ещё решает проблему с тем, что собрать проект на
чистой системе нетривиально
8. Scalable eCommerce Platform Solutions
CI и аналитика
• Бинарный статус: прошли или не прошли тесты - не очень
полезен
• Можно использовать инструмент, который поддерживает
анализ падений, например TeamCity & Youtrack
• Не так сложно написать интеграцию самостоятельно с тем
багтрекером, который вы используете
• В результате у вас будут более подробные отчёты и
возможность автоматически отслеживать исправление
отдельных багов
9. Scalable eCommerce Platform Solutions
Скорость
• Со временем количество тестов растёт. При наличии CI они
запускаются часто и работают долго
• А если у вас нет CI, то обычно на этом этапе разработчики
начинают лениться запускать тесты
10. Scalable eCommerce Platform Solutions
Как ускорить тесты?
Параллельный запуск
• Тут пригодится знание конкретных технологий
• Лучше об этом думать заранее
• Отсутствие стейта у большинства сущностей сильно помогает
Компонентные тесты
12. Scalable eCommerce Platform Solutions
Haskell and monads
class Monad m where
(>>=) :: m a -> (a -> m b) -> m b
(>>) :: m a -> m b -> m b
return :: a -> m a
fail :: String -> m a
14. Scalable eCommerce Platform Solutions
tj/co
co(function *(){
// resolve multiple promises in parallel
var a = Promise.resolve(1);
var b = Promise.resolve(2);
var c = Promise.resolve(3);
var res = yield [a, b, c];
console.log(res);
// => [1, 2, 3]
}).catch(onerror);
15. Scalable eCommerce Platform Solutions
jasmine-es6-generator
var testGen = require('jasmine-es6-generator');
it('should done', testGen(function *() {
var res = yield someFn();
expect(res).toEqual(1234);
}));
16. Scalable eCommerce Platform Solutions
JsonWireProtocol & Protractor
JsonWire - это протокол, лежащий в основе Selenium
Интересно и полезно заглянуть внутрь
Он совсем не сложный
Protractor - это библиотека для тестирования Angular
приложений
Умеет из коробки ждать, где нужно, искать элементы по
биндингам, резолвить промисы и многое другое