Как задать нужные для тестового прогона параметры, такие как имя браузера, имя или url сервера, передать ссылку на определенныый набор параметров через командную строку или конфиг файл. Как организовать параллельный прогон тестов на сыром Webdriver (JS) без использования вспомогательных фреймворков (protractor, parallel-cucumber etc.) используя child_process.
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQAFest
Page Objects, вероятно, самый известный на сегодня паттерн, используемый в автоматизации через UI. И самый простой, скажете вы? Не соглашусь, по моим наблюдением применение данного паттерна таит в себе подводные камни даже для наиболее типичных веб-приложений.
В данном докладе я познакомлю вас с тремя простыми и практичными видами PageObject архитектуры - Static, Void и Fluent, продемонстрирую использование кодом, сравню плюсы и минусы подходов. Также я расскажу о важных недостатках Yandex HTMLElements и о некоторых других неудачных подходах, которые повторяются из одного самодельного фреймворка в другой. Вы увидите на примерах, как простой код решает проблемы лучше, чем слишком умный. Примеры на языке Java/Selenide легко переносимы и на другие языки программирования (.NET, Python и другие).
QA Fes 2016. Алексей Виноградов. Page Objects: лучше проще, да лучшeQAFest
Page Objects, вероятно, самый известный на сегодня паттерн, используемый в автоматизации через UI. И самый простой, скажете вы? Не соглашусь, по моим наблюдением применение данного паттерна таит в себе подводные камни даже для наиболее типичных веб-приложений.
В данном докладе я познакомлю вас с тремя простыми и практичными видами PageObject архитектуры - Static, Void и Fluent, продемонстрирую использование кодом, сравню плюсы и минусы подходов. Также я расскажу о важных недостатках Yandex HTMLElements и о некоторых других неудачных подходах, которые повторяются из одного самодельного фреймворка в другой. Вы увидите на примерах, как простой код решает проблемы лучше, чем слишком умный. Примеры на языке Java/Selenide легко переносимы и на другие языки программирования (.NET, Python и другие).
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
Сергей Коржнев
Архитектор версии 1.4 2ГИС Web API
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Тезисы:
● Как организован код в старой версии.
● Вдумчиво смотрим, как мы используем Yii, хватаемся за голову и клавиатуру. Там отрезаем, тут пришиваем, и вуаля!
● Ну и делаем выводы, как мы забороли две классические проблемы программирования: борьба с дублированием кода и сложностью системы.
Рендеринг может больше: vue.js vs React, Андрей СолодовниковDevDay
О том, как перестать вручную контролировать DOM, писать логику навигаций и почему DOM-шаблонизация — это классно, а так же немного самокритики и сравнительных тест-кейсов.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
Архитектура кода нового 2ГИС Web API или куда мы дели MVCDevDay
Сергей Коржнев
Архитектор версии 1.4 2ГИС Web API
Архитектура кода нового 2ГИС Web API или куда мы дели MVC
Тезисы:
● Как организован код в старой версии.
● Вдумчиво смотрим, как мы используем Yii, хватаемся за голову и клавиатуру. Там отрезаем, тут пришиваем, и вуаля!
● Ну и делаем выводы, как мы забороли две классические проблемы программирования: борьба с дублированием кода и сложностью системы.
Разработка Web-приложений на Angular JS. Архитектурные семинары SoftengiSoftengi
Разработка Web-приложений на Angular JS — доклад Бориса Левицкого, архитектора ПО в команде портфеля проектов Enviance компании Softengi.
Видео с докладом от автора можно посмотреть по ссылке: http://youtu.be/oTXxrmIxo8Y
Презентация ответит на вопросы:
- что такое Angular?
- для чего он используется и что с ним можно делать?
- как работает Data-Binding?
- кастомные фильтры
- структура Angular приложения
Архитектурные семинары Softengi - еженедельные встречи, на которые приглашаются ведущие разработчики/архитекторы Softengi и других компаний нашего консорциума Intecracy Group.
Все проведенные семинары мы записывали, и теперь хотим поделиться опытом и знаниями с такими же профессионалами.
Подписывайся на канал Softengi https://www.youtube.com/user/softengi и узнай первым о новых семинарах.
http://www.softengi.com
Тестируй это / Виктор Русакович (GP Solutions)Ontico
РИТ++ 2017, Frontend Сonf
Зал Дели + Калькутта, 5 июня, 18:00
Тезисы:
http://frontendconf.ru/2017/abstracts/2625.html
Как писать тесты?
Как запускать тесты?
Кто все сломал?
Все три вопроса рассмотрены в докладе. Также будет демо интеграции проекта, покрытого тестами, и cloud-based-сервиса по запуску этих тестов (github+travis).
Кроме того, расскажу об опыте по сокращению времени прогона тестов; о том, как добавить тесты в случае, если у вас уже есть большое приложение, но все еще без тестов.
"Опыт разработки универсальной библиотеки визуальных компонентов в HeadHunter...MoscowJS
При увеличении количества проектов в компании, разработчики сталкиваются с задачей унификации кодовой базы. Решением подобной задачи может быть библиотека, фреймворк или общий набор компонент. Такой инструмент позволит разработчикам сконцентрироваться только на новых задачах, избежать дублирования кода и повысить производительность.
В HeadHunter с такой задачей столкнулись в 2014 году. Решением данной проблемы стало создание унифицированной библиотеки компонент, которая успешно используется на всех проектах HH. В своем докладе я хотел бы поделиться опытом развития библиотеки, проблемами, которые возникали при разработке, и их последовательным решением.
Семинар по Node.js в КПИ 20 октября 2014. Докладчики: Тимур Шемсединов, Никита Савченко, Максим Петренко. Краткое содержание:
* Что такое Node.js и как работает JavaScript в V8
* Профессионалы расскажут, почему они выбрали Node.js
* Вы узнаете его сильные и слабые стороны и где его лучше применять
* Будет полный обзор особеностей и внутреннего строения Node.js
* Примеры внедрения и Highload-проекты
* Вопросы развертывания, хостинг, тестирования, и отладки
* Где и что учить, что читать, как осваивать
Automating Canvas: difficult but possibleCOMAQA.BY
Пожалуй, нет такого проекта, на котором автоматизированное тестирование GUI прошло бы быстро и гладко. Особенно это актуально для нового проекта, когда не знаешь, какие трудности придется преодолеть во время написания авто-тестов. При работе с веб-приложением, написанном с использованием canvas, мы также не подозревали, что внутри этого маленького элемента «таится целый мир», и что этот «мир» нужно как-то тестировать.
В докладе будет рассказано о том:
· как мы разбирались с возможностью автоматизировать тестирование canvas через UI;
· какие подходы для этого выбрали;
· с какими вызовами столкнулись и как их преодолели.
JavaScript-модули "из прошлого в будущее"oelifantiev
Доклад на первом Ярославском форнтэнд-митапе.
Рассказ об имеющихся методиках описания модулей в JavaScript а также о грядущем стандарте ES6 и, наконец-то, нативной поддержке модулей языком.
Дмитрий Лукьяненко: Первый фреймворк на Selenium + TestNGDataArt
Дмитрий Лукьяненко, QA Automation рассматривает:
- Selenium IDE;
- Selenium WebDriver;
- Page Obgect Pattern;
- Page Factory Pattern;
- локаторы;
- как построить фреймворк и куда его можно дальше развивать.
Перспектива разработки мобильного приложения, которое не потребуется скачивать и ждать review из App Store, очень заманчива, ведь аналогов привычного ПО существует несколько: Progressive Web Apps (PWA), Android Instant Apps (AIA) и Accelerated Mobile Pages (AMP). Как сделать верный выбор, найти «серебряную пулю», ведь у каждой из перечисленных технологий своя специфика разработки, поддержки и тестирования, сильные и слабые стороны. В докладе мы, по возможности, детально рассмотрим каждую из платформ, проведем сравнительный анализ альтенратив “обычными” мобильными приложениями. Давайте все вместе подготовимся к грядущим вызовам обеспечения качества в столь «необычных», новых проектах.
Anton semenchenko. Comaqa Spring 2018. Nine circles of hell. Antipatterns in ...COMAQA.BY
В рамках нашего сдвоенного доклада мы проговорим проблему построения Архитектуры решений Автоматизации «от обратного» - систематизируем классические Архитектурные недочеты, в том числе процессного происхождения, сформулируем варианты решения каждой рассмотренной проблемы, критерии выбора решения, и конечно условия перехода проблемы из не идеальной, но промышленно приемлемой, в потенциально опасный для проекта прецедент.
Vivien Ibironke Ibiyemi. Comaqa Spring 2018. Enhance your Testing Skills With...COMAQA.BY
Using real life test stories, I will present to you examples of mindset tools that I have identified, how I have used them to optimize collaboration in software development teams, become a valuable team member and a skilled tester. I will further propose a model that can help individuals develop their own mindset tools depending on the type of environment and product being developed.
Roman Soroka. Comaqa Spring 2018. Глобальный обзор процесса QA и его важностьCOMAQA.BY
Рассмотрим как используется QA в различных аспектах жизни. Поговорим о его основных целях и задачах. Рассмотрим примеры хороших и плохих подходов. Поговорим о рисках.
Roman Iovlev. Comaqa Spring 2018. Архитектура Open Source решений для автомат...COMAQA.BY
Мы поговорим о новых возможностях Open Source фреймворка JDI для Автоматизации UI Тестирования и не только на языках Java, C# .Net и Python. Архитектор проекта расскажет «всю правду» о своем детище, а мы послушаем, сделаем выводы и, возможно, используем это решение для нашего следующего проекта.
Vladimir Polyakov. Comaqa Spring 2018. Особенности тестирования ПО в предметн...COMAQA.BY
This document discusses software testing in the life sciences domain. It notes that life sciences data involves large volumes of data that can be represented in different ways. While there are engineering issues to consider when testing life sciences software, the principles of testing do not differ. Examples are given of types of life sciences software like genome browsers and molecular viewers. The document provides suggestions for test data sources and discusses tools and languages commonly used for automated testing of life sciences software like Java, Selenium, and Python. It also highlights some challenges in automating the testing of things like canvas elements and 3D models. Links are provided to open source projects and demos from EPAM as examples.
Kimmo Hakala. Comaqa Spring 2018. Challenges and good QA practices in softwar...COMAQA.BY
This presentation is based on Kimmo’s experiences in product component QA at Qvantel and it is aimed at everyone willing to know and understand, what are the challenges we’re facing in QA during software product development in BSS & Telco domain and, in the other hand, what are the good practices and success factors, so that we are able to 1. Test the product properly 2. Deliver smoothly and also 3. Continuously improve. The perspective of the presentation is “managerial”. However, we will also discuss about the technical and methodical aspects in component testing like different test levels, methods, test automation, test data management and testing tools. We also take a look at the different expectations towards testing personnel, like documentation, visibility of test activities, re-usable test assets etc. Finally we discuss about the key success factors in QA for software product development.
Дмитрий Лемешко. Comaqa Spring 2018. Continuous mobile automation in build pi...COMAQA.BY
В докладе я расскажу, как был организован запуск автоматических тестов (appium/javascript) в gitlab CI для нативного Android приложения на каждый Merge Request. Опишу, как можно встроить автотесты в существующий процесс сборки, как правильно настроить запуск тестов в docker image (тесты бегут в TestObject облаке), как произошла интеграция с клаудом и какие результаты это принесло. Tech stack: Gitlab CI, kubernetes, android, appium, javascript, testobject.
Ivan Katunov. Comaqa Spring 2018. Test Design and Automation for Rest API.COMAQA.BY
Чем тестирование RESTful API сервисов схоже и чем отличается от тестирования других типов приложений? Какое покрытие тестами является достаточным? Какие лучшие практики существуют для автоматизированного тестирования REST API? Эти и другие темы будут раскрыты в рамках доклада.
Vadim Zubovich. Comaqa Spring 2018. Красивое тестирование производительности.COMAQA.BY
Все, кто когда-либо сталкивался с тестированием производительности, прекрасно знают, как сложно сделать отчеты понятными, хорошо визуализированными и прозрачными для заказчика. Очень важно выбрать "правильные" метрики и разработать нужные профили нагрузки, но если в результате заказчик увидит скучные и непонятные кривые на белом фоне, он вполне может отказаться от тестирования производительности как такового, поскольку результат будет не вполне прозрачен. Давайте посмотрим, как можно улучшить впечатление от результатов тестирования производительности, на примере интеграции JMeter с мощным инструментом визуализации - Grafana.
Alexander Andelkovic. Comaqa Spring 2018. Using Artificial Intelligence to Te...COMAQA.BY
This document discusses using artificial intelligence to test levels in the Candy Crush Saga game. It describes King.com, the developer of Candy Crush, and their use of QA teams. It then covers using AI techniques like Monte Carlo tree search and neuroevolution to have automated bots play levels and provide feedback. This could help level designers, reduce human testing workload, and assist data scientists. Challenges include maintaining the bots and integrating them into King's development process.
Даже если вы - самый мирный человек, конфликты все равно случаются. Как и почему это происходит, можно ли их избежать и как вести себя, если конфликт уже случился - об этом мы поговорим в рамках доклада "Мое место в конфликте". Конфликт - интереснейшее явление, и то, какие он принесет плоды - разрушение или сотрудничество - зависит в том числе и от того поведения, которое мы реализуем. И напоследок вы узнаете о том, как защитить себя, даже если конструктивно выйти из конфликта уже не удалось.
Организация приемочного тестирования силами матерых тестировщиковCOMAQA.BY
Тестировщик и его взгляд на бизнес тестирование. Как охватить необъятное или совместить своё желание всё проверить как в обычном функциональном тестировании и проверку с точки зрения бизнеса. Организация такого тестирования, взаимодействие с командой разработки и тестирования. Какие плюсы и минусы от того, что в UAT тестировании участвуют матерые тестировщики, а не люди, которые эксплуатируют систему.
Развитие специалиста, менеджера - дело добровольное. Равно как и выживание. Приходите на доклад и мы обсудим: а надо ли развиваться, как развиваться, какие подходы и интструменты можно использовать, обсудим тепловую смерть специалиста.
Системный взгляд на параллельный запуск Selenium тестовCOMAQA.BY
Параллельный запуск тестов – не просто желание, но острая необходимость, стандартная задача, с которой рано или поздно столкнется каждый проект, за исключением, разве что, совсем небольших и краткосрочных. Порой, вопрос параллелизации тестов превращается в сложный или даже почти невыполнимый. Давайте поговорим о том, как избежать подобной ситуации: какие рекомендации и инструменты существуют, какую архитектуру стоит выбрать изначально, каких решений следует избегать. Антон попробует ответить на все эти актуальные вопросы и конечно приведет множество примеров для наглядности и практического подтверждения. Мы проговорим «хорошие» варианты параллельного запуска автоматизированных тестов, но так же рассмотрим ситуацию с противоположной стороны «от противного». Проанализируем десяток «плохих» решений по параллелизации на реальных примерах – сложных, медленных, дорогих, неэффективных. Фактически, беседа будет состоять из двух частей: «что такое хорошо и что такое плохо» в примерах, с аргументацией и рекомендациями.
Мы уделяем много внимания темам автоматизации тестирования. Но что, если мы посмотрим на сам процесс нашей работы? Сколько рутинных задач мы выполняем каждый день? Насколько эффективно мы их выполняем? Иван расскажет о своем опыте эффективной работы с подобными ежедневными задачами
A Senior automation engineer should be able to work independently on modules from start to finish and ask the right questions. Key areas for a Senior to focus on include processes, estimations, the Test Pyramid, programming languages, test automation frameworks, improvements, build tools, libraries, coverage, databases, design patterns, best practices, testing types, CI/CD, reporting, metrics, communication, Git, BDD, code review, coding standards, team leadership, conflict management, and business communication. Resources provided include books, presentations, documentation, and Epam webinars to learn about these topics.
В своей презентации я бы хотел рассказать о своем личном опыте в OpenSource. Начиная от контрибьюта в популярные проекты и публикации своих проектов на GitHub до участия в процессе отбора и развития OpenSource решений Презентация позволит взглянуть на OpenSource с разных сторон и понять зачем это нужно как для обычного инженера, так и для большой компании
Мы поговорим о новых возможностях Open Source фреймворка JDI для Автоматизации UI Тестирования. Архитектор проекта расскажет «всю правду» о своем детище, а мы послушаем, сделаем выводы и, возможно, используем это решение для нашего следующего проекта.
Out of box page object design pattern, javaCOMAQA.BY
Самая сложная часть в изучении новой дисциплины - разбираться с основами и базовыми понятиями. Давайте поговорим о самых популярных паттернах, которые используются в автоматизации тестирования UI - Page Object: использование статического и динамического решения, границы применимости и неприменимости, особенности реализации в зависимости от содержания, живые примеры.
2. 6 НОЯБРЯ, 2016
РАЗРАБОТЧИК: ИВАН КОТОВИЧ
Самодельная
параметризация и
параллелизация
тестов для JS
фреймворков
3. 3CONFIDENTIAL
Иван Котович
Software Test Automation Engineer
• Более 2-х лет в JS автоматизации
• Разработал с нуля и внедрил в проект несколько
тестовых фреймворка на Java и JavaScript
• Участвую в Test Automation mentoring program как
ментор
• Читаю лекции в EPAM lab по автоматизации на JS
4. 4CONFIDENTIAL
Параллелизация и параметризация на JS
Инструменты сборки (Grunt, Gulp)1
Параметризация с помощью инструментов сборки2
process.env объект содержащий настройки пользовательской среды3
child_process и его возможности4
Параллелизация тестов с помощью child process5
Итого6
7. 7CONFIDENTIAL
Параллелизация и параметризация на JS
gulp.task('protractor', function(callback) {
gulp.src(['example_spec.js'])
.pipe(gulpProtractorAngular({
'configFile': 'protractor.conf.js',
'debug': false,
'autoStartStopServer': true
}))
.on('error', function(e) {
console.log(e);
})
.on('end', callback);
});
Инструменты сборки: Gulp
Плюсы
• Лаконичен
• Простое API
• Потоковая передача данных
Минусы
• Меньше специализированных модулей
• Сложности в понимании процесса
потоковой передачи данных
8. 8CONFIDENTIAL
Параллелизация и параметризация на JS
Параметризация с помощью инструментов сборки
var gulp = require('gulp'),
util = require('gulp-util');
gulp.task('cucumber', function() {
util.env.browser ? process.env.BROWSER = util.env.browser : process.env.BROWSER = 'chrome';
util.env.view ? process.env.VIEW = util.env.view : process.env.VIEW = 'desktop';
return gulp.src('test/features/*')
.pipe(cucumber({
'steps': 'test/step_definitions/*.js',
'support': 'test/support/*.js',
'format': 'json:test/reports/json/json-report.json',
'emitErrors': false
}));
});
gulp cucumber –-browser=chrome –-view=mobile
//выставление параметров через конфиг.bat
set BROWSER=firefox
set VIEW=mobile
gulp cucumber
9. 9CONFIDENTIAL
Параллелизация и параметризация на JS
process.env объект содержащий настройки пользовательской среды
• process объект – глобаль ный объект
содержащий информацию о текущем node
процессе и предоставляющий инструменты
контроля над ним
• process доступен во всем приложении
• process.env содержит объект с информацией о
пользовательской среде
• process.env удобное место для хранения
конфигурационной информации для
приложения ( в том числе и для тестов )
$node -e ‘process.env.foo = "bar“’ && echo $foo
process.env.foo = 'bar';
console.log(process.env.foo);
chrome: {
'browserName' : 'chrome',
'chromeOptions' : {
'args': [chromeView[process.env.VIEW]]
}
}
10. 10CONFIDENTIAL
Параллелизация и параметризация на JS
child_process и его возможности
• child_process – модуль который дает
возможность создавать дочерние процессы
• child_process предоставляет удобное API для
создания и управления дочерними процессами
• Child process такой же процесс содержащий
process объект
child_process.exec(command[, options][, callback])
child_process.execFile(file[, args][, options][, callback])
child_process.fork(modulePath[, args][, options])
child_process.spawn(command[, args][, options])
const exec = require('child_process').exec;
exec('cat *.js bad_file | wc -l', (error, stdout, stderr) => {
if (error) {
console.error(`exec error: ${error}`);
return;
}
console.log(`stdout: ${stdout}`);
console.log(`stderr: ${stderr}`);
});
11. 11CONFIDENTIAL
Параллелизация и параметризация на JS
Параллелизация тестов с помощью child process
gulp parallel = gulp cucumber Х 4
var q = require('q');
var exec = require('child-process-promise').exec;
gulp.task(‘parallel', function(){
var promises = [];
var f1 = function(){
return exec('gulp cucumber')
.then(function (results) {console.log(results.stdout);})
.catch(function (err) {console.error('ERROR: ', err);});
};
for( var i = 0; i<4; i++){
promises.push(f1());
}
return q.all(promises);
});
Минус: зачем нам 4
параллельных прогона с
одинаковыми параметрами ??
15. 15CONFIDENTIAL
Параллелизация и параметризация на JS
Итого: Что мы имеем?
• Удобный параметризируемый прогон
тестов в одном потоке с
возможностью выбора браузера и
разрешения окна браузера через
командную строку или конфиг
• Удобный параметризируемый прогон
тестов в разных процессах с
возможностью задать количество
дочерних процессов, браузер и вью
для каждого
• Возможность добавлять
дополнительные параметры для
выборки по тэгам, спекам итд
• Поле для дальнейших исследований и
улучшений
• Удовлетворение от проделанной
работы
Note: Параллелизация в protractor и
других JS фреймворках основана на
тех же принципах
16. 16CONFIDENTIAL
• “JavaScript Patterns” Stoyan Stefanov
Useful literature Useful links
• https://nodejs.org/api/
• https://www.npmjs.com/package/gru
nt
• https://www.npmjs.com/package/gul
p
• https://www.npmjs.com/package/chil
d-process-promise
Параллелизация и параметризация на JS