Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014Dmytro Zharii
Демонстрация работы инструмента записи веб-элементов PageObject для Selenium WebDriver при помощи SWD Page Recorder. Демонстрация работы фреймворка SWD Starter Kit
Инструменты разные нужны, инструменты разные важныRoman Dvornov
В мире фронтенда уже существует большое количество инструментов: как браузерных, так и консольных. Но достаточно ли этих инструментов? Мне кажется, что нет. Веб-приложения становятся все больше и сложнее, и многое остается вне нашего поля зрения. Потому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и улучшающие понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи могут решать, что необходимо для их создания.
CodeFest, Новосибирск, 28 марта 2015
http://www.youtube.com/watch?v=HMTc3DERw5c
В лекции рассказано о доступных средствах по отладке веб-сайтов, их возможностях, а также способах их использования. Также речь пойдет о том, как искать ошибки у пользователей в продакшене и контролировать качество продукта.
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "IT Event
I've been surprised how easy it is today to program hardware containing Wi-Fi module and start receiving data from a chosen sensor (those perceiving motion, light or sound, etc.). Without a line in C++, all in JavaScript solely.
Together with Sergey, we'll elaborate more on how any frontend engineer can easily jumpstart his journey within the Internet of Things.
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Конференция FrontTalks, Екатеринбург, 19 сентября
Видео: https://vimeo.com/107694664
Видео: https://www.youtube.com/watch?v=IUtbbN9aevU
Веб-приложения становятся все больше и сложнее, так что многое остается вне нашего поля зрения. Поэтому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи решать, что необходимо для их создания.
SPA Meetup, 28 февраля 2015, Москва, Авито
Читабельные отчеты для автоматизации на C# / Gallio / BDDfyDmytro Zharii
Мой доклад про создание читабельных отчетов для автоматизации тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy
Доклад был сделан специально для онлайн конференции Auto ConfeT&QA, прошедшей в октябре 2012 года.
http://confetqa.ru/
======================================
См. также:
Gallio Icarus:
http://gallio.org
BDDfy – фреймворк для БыДиДификации кода :)
Страница проекта на Github:
http://teststack.github.com/TestStack.BDDfy/
Описание на английском:
http://www.mehdi-khalili.com/bddify-in-action/introduction
SWD Page Recorder: Записывает PageObject'ы со скоростью ниндзя SeleniumCamp 2014Dmytro Zharii
Демонстрация работы инструмента записи веб-элементов PageObject для Selenium WebDriver при помощи SWD Page Recorder. Демонстрация работы фреймворка SWD Starter Kit
Инструменты разные нужны, инструменты разные важныRoman Dvornov
В мире фронтенда уже существует большое количество инструментов: как браузерных, так и консольных. Но достаточно ли этих инструментов? Мне кажется, что нет. Веб-приложения становятся все больше и сложнее, и многое остается вне нашего поля зрения. Потому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и улучшающие понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи могут решать, что необходимо для их создания.
CodeFest, Новосибирск, 28 марта 2015
http://www.youtube.com/watch?v=HMTc3DERw5c
В лекции рассказано о доступных средствах по отладке веб-сайтов, их возможностях, а также способах их использования. Также речь пойдет о том, как искать ошибки у пользователей в продакшене и контролировать качество продукта.
Есть такая штука как инструментирование кода. Мало кто знает о ней, даже пользуясь результатами ее применения. Между тем, с инструментированием можно делать много всего интересного и, главное, полезного. Например, это может вам помочь лучше понять код или сделать процесс разработки более эффективным. Примеры инструментирования кода и принципы его работы.
Roman Romanovsky, Sergey Rak - "JavaScript в IoT "IT Event
I've been surprised how easy it is today to program hardware containing Wi-Fi module and start receiving data from a chosen sensor (those perceiving motion, light or sound, etc.). Without a line in C++, all in JavaScript solely.
Together with Sergey, we'll elaborate more on how any frontend engineer can easily jumpstart his journey within the Internet of Things.
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Конференция FrontTalks, Екатеринбург, 19 сентября
Видео: https://vimeo.com/107694664
Видео: https://www.youtube.com/watch?v=IUtbbN9aevU
Веб-приложения становятся все больше и сложнее, так что многое остается вне нашего поля зрения. Поэтому фреймворки и приложения должны предоставлять дополнительные инструменты, упрощающие разработку и понимание того, что же происходит у них там — «под капотом». В ходе доклада я расскажу о таких инструментах: какими они могут быть, какие задачи решать, что необходимо для их создания.
SPA Meetup, 28 февраля 2015, Москва, Авито
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
Сколько раз мы собираем ПО каждый день? Сколько раз за день код компилируется, тестируется и превращается в артефакты? Какие разнообразные сценарии возможны в казалось бы простой цепочке compile-test-assemble? Билд-системы из узкоспециализованных утилит превратились в мощный инструмент сборки, валидации, дистрибуции и автоматизации наших программных продуктов.
Это будет тематический доклад о том как настроить инструмент сборки для себя, а не против себя. Мы рассмотрим основные принципы работы Gradle DSL и возможности его расширения. Как и на чём их писать, как тестировать и как делиться результатами своего труда со своими коллегами.
Вместе с вами мы напишем автоматизированный сценарий сборки для проекта и покажем как ловко можно вставлять костыли всю силу и мощь Gradle 2.x.
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"IT Event
The world of frontend development is changing rapidly. No one stays at the top for a long time. Just yesterday we saw the triumph of React, but today Angular2 treads on its heels. Why have I chosen Vue in 2017? Why not to use a usual React? Have the Chinese managed to create a "silver bullet"? In this report we'll consider these questions and we'll find out why Vue is at the top among JS-frameworks on GitHub and whether it's worth chosing it.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.
О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
Как искать и выбирать оптимальные решения? Для одной задачи подойдет React, для другой - Zepto. Сегодня вы пишите для браузера, завтра думаете, как использовать native-ресурсы iOS.
Не все технологии, которые удобны разработчику, могут дать удобство конечному пользователю.
Я расскажу о балансе, который позволяет бизнесу получать результат, а разработчику - решение.
Основные ошибки внедрения ATDD, BDD, CI, CD на проектах, Резчиков Алексей
Каждый новый проект, к которому Алексей подключается в качестве консультанта, уже имеет свою историю внедрения автоматизации тестирования, CI и CD. Истории очень разные, каждая интересна по-своему, каждая рассказывает об ошибках. О самых распространенных из них, а также о том, как их не допустить, Алексей расскажет в своем докладе.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
За пределами PageObject, Дмитрий Жарий
Есть ли необходимость в использовании объектно-ориентированного подхода в автоматизации тестирования? Нужно ли нам экономить исходный код, или лучше скопировать, вставить и подправить? Что лучше, “сложное” ООП или простые “дубовые” тесты. Ответ зависит от Вашего проекта автоматизации и от дальнейших планов его развития. Если Вы планируете остановится на десятке тестов, то в таком случае в “более сложных практиках” необходимости нет. Если же Вы планируете долгосрочное развитие фреймворка автоматизации, то задуматься о правильной архитекторе и будущем росте необходимо уже прямо сейчас.
В своем докладе Дмитрий расскажет, как очень несложные практики ООП помогут сделать код еще проще и понятней. И поверьте, в хорошем коде может разобраться любой человек, а горы “вечно падающего копи-паста” будут просто ненавидеть. Также Дмитрий расскажет о том, как Автоматизация может тестировать сама себя при помощи легких UI тестов перед тем, как запустить более тяжелые функциональные тесты и сценарии. Он покажет, как написав код тестового набора всего лишь один раз, применить его для каждой страницы отдельно. Примеры кода к докладу будут на C#/.NET. Но, любую такую практику можно реализовать на любом общеизвестном и популярном языке программирования.
Расскажу про мотивацию и трудности создания сервиса скриншотов веб-страниц на базе headless chrome и puppeteer. Наличие готовых инструментов еще не означает наличие готового сервиса.
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
Последние несколько лет в индустрии активно развивается WebRTC — технология, которая позволяет делать голосовые и видеозвонки прямо из браузеров. Но мало кто знает, что эта же технология может быть использована в нативных мобильных приложениях и основанных на них SDK. В своем докладе я хочу рассказать про опыт заворачивания существующих Android и iOS SDK в React Native:
— Как поддерживать несколько разных архитектур
— Как работать с нативными виджетами, такими как «вывод видео»
— Синхронизация event loop между C-реализацией и — JavaScript движком React Native
— Планы на будущее: React Native WebRTC
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
С ростом кодовой базы становится все более очевидной необходимость использования компонентного подхода, когда каждая логическая часть обособлена. Если говорить про JavaScript, то в нем есть области видимости, опираясь на которые можно соорудить изолированные компоненты. Но в CSS нет подобных механизмов, поэтому и придумываются Shadow DOM (Web Components) и различные методики вроде БЭМ.
Но что если взглянуть на проблему под другим углом? Адаптируя подходы, что уже используются для других задач, можно получить куда больше выгоды, чем просто изолированные стили!
FrontendConf, Москва, 21 мая 2015
WSD, Санкт-Петербург, 20 июня 2015
Запись трансляции: https://youtu.be/V7bnSOwuO4M?t=1h31m33s
Сколько раз мы собираем ПО каждый день? Сколько раз за день код компилируется, тестируется и превращается в артефакты? Какие разнообразные сценарии возможны в казалось бы простой цепочке compile-test-assemble? Билд-системы из узкоспециализованных утилит превратились в мощный инструмент сборки, валидации, дистрибуции и автоматизации наших программных продуктов.
Это будет тематический доклад о том как настроить инструмент сборки для себя, а не против себя. Мы рассмотрим основные принципы работы Gradle DSL и возможности его расширения. Как и на чём их писать, как тестировать и как делиться результатами своего труда со своими коллегами.
Вместе с вами мы напишем автоматизированный сценарий сборки для проекта и покажем как ловко можно вставлять костыли всю силу и мощь Gradle 2.x.
Illya Klymov - "Vue.JS: What did I swap React for in 2017 and why?"IT Event
The world of frontend development is changing rapidly. No one stays at the top for a long time. Just yesterday we saw the triumph of React, but today Angular2 treads on its heels. Why have I chosen Vue in 2017? Why not to use a usual React? Have the Chinese managed to create a "silver bullet"? In this report we'll consider these questions and we'll find out why Vue is at the top among JS-frameworks on GitHub and whether it's worth chosing it.
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагр...IT-Portfolio
13 октября, DEV {web} - конференция о Highload веб-разработке. "Java под нагрузкой, в поисках проблем...", Филипп Дельгядо (CTO Goodwix, ex-teamlead Яндекс.Деньги)
Аннотация
Не так давно с некоторым изумлением узнал, что Java для нагруженных систем представляется совершенной terra incognita. Хотя и совершенно не хочется бороться с мифами, по крайней мере, с удовольствием расскажу, как просто и без хлопот использовать Java в вебе. Про "суровый" highload рассказывать не буду, а вот про простые решения - с удовольствием. Ну и на закуску расскажу, за что я нежно люблю блобы.
О себе
Teamlead сколько себя помню, успел поработать и в "Яндекс.Деньгах" и в "БК Марафон". Люблю простые решения, сложные задачи и хорошую коммуникацию.
Евгений Жарков "Как быть хорошим фронтенд-разработчиком"Fwdays
Как искать и выбирать оптимальные решения? Для одной задачи подойдет React, для другой - Zepto. Сегодня вы пишите для браузера, завтра думаете, как использовать native-ресурсы iOS.
Не все технологии, которые удобны разработчику, могут дать удобство конечному пользователю.
Я расскажу о балансе, который позволяет бизнесу получать результат, а разработчику - решение.
Основные ошибки внедрения ATDD, BDD, CI, CD на проектах, Резчиков Алексей
Каждый новый проект, к которому Алексей подключается в качестве консультанта, уже имеет свою историю внедрения автоматизации тестирования, CI и CD. Истории очень разные, каждая интересна по-своему, каждая рассказывает об ошибках. О самых распространенных из них, а также о том, как их не допустить, Алексей расскажет в своем докладе.
Vue.js и его брат-близнец Vue-server.js / Андрей Солодовников (НГС)Ontico
Современный Веб всё больше стремится к динамичным, похожим на приложения, сайтам.
Оперативно строить быстрый и динамичный интерфейс на проекте N1.RU нам помогает Vue.js.
Однако, как и многие современные библиотеки и фреймворки, Vue.js не умеет рендериться на сервере.
При этом иметь такую возможность бывает полезно по нескольким причинам: начиная от вопросов SEO и заканчивая красотой загрузки страницы.
Чтобы реализовать такую возможность для Vue.js мы создали его дополнение — Vue-server.js.
Я расскажу о том, что умеет Vue.js, что у нашего дополнения "под капотом", почему мы выбрали такой путь и как, вообще, всё это работает. А ещё попробую дать критическую оценку проделанной работе.
За пределами PageObject, Дмитрий Жарий
Есть ли необходимость в использовании объектно-ориентированного подхода в автоматизации тестирования? Нужно ли нам экономить исходный код, или лучше скопировать, вставить и подправить? Что лучше, “сложное” ООП или простые “дубовые” тесты. Ответ зависит от Вашего проекта автоматизации и от дальнейших планов его развития. Если Вы планируете остановится на десятке тестов, то в таком случае в “более сложных практиках” необходимости нет. Если же Вы планируете долгосрочное развитие фреймворка автоматизации, то задуматься о правильной архитекторе и будущем росте необходимо уже прямо сейчас.
В своем докладе Дмитрий расскажет, как очень несложные практики ООП помогут сделать код еще проще и понятней. И поверьте, в хорошем коде может разобраться любой человек, а горы “вечно падающего копи-паста” будут просто ненавидеть. Также Дмитрий расскажет о том, как Автоматизация может тестировать сама себя при помощи легких UI тестов перед тем, как запустить более тяжелые функциональные тесты и сценарии. Он покажет, как написав код тестового набора всего лишь один раз, применить его для каждой страницы отдельно. Примеры кода к докладу будут на C#/.NET. Но, любую такую практику можно реализовать на любом общеизвестном и популярном языке программирования.
Расскажу про мотивацию и трудности создания сервиса скриншотов веб-страниц на базе headless chrome и puppeteer. Наличие готовых инструментов еще не означает наличие готового сервиса.
Баба-Яга против! — Роман Дворнов, Ostrovok.ruYandex
В последнее время во фронтенде появляется столько нового и внедряется настолько быстро, что не все успевают осознать последствия. Хорошо это или плохо? Рассмотрим некоторые новинки с точки зрения «за», а главное – «против».
Григорий Петров "WebRTC в мобильных приложениях при помощи React Native"IT Event
Последние несколько лет в индустрии активно развивается WebRTC — технология, которая позволяет делать голосовые и видеозвонки прямо из браузеров. Но мало кто знает, что эта же технология может быть использована в нативных мобильных приложениях и основанных на них SDK. В своем докладе я хочу рассказать про опыт заворачивания существующих Android и iOS SDK в React Native:
— Как поддерживать несколько разных архитектур
— Как работать с нативными виджетами, такими как «вывод видео»
— Синхронизация event loop между C-реализацией и — JavaScript движком React Native
— Планы на будущее: React Native WebRTC
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
Автоматическое тестирование и с чем его едятMarina Peregud
Agenda
Автоматизация? Какая еще автоматизация? Автоматическое тестирование ПО. Зачем вообще?
Отличие от мануального тестирования ПО, или Ручник vs человек разумный.
Имею желание, но не имею возможности, или какие знания были бы полезны в этой области.
Когда стоит внедрять автоматизацию.
ROI и другие непонятные слова на три буквы.
The document discusses Behavior Driven Development (BDD) and the Python tool Behave. BDD develops applications based on required behaviors and utilizes tests written in plain language. Behave is a Python implementation of BDD that uses the Gherkin language to write tests in plain language steps. It provides reusable step code and generates skeleton step code to document features and requirements.
The document discusses using BNP or NT-proBNP blood tests to screen for heart failure in primary care settings. It finds that NT-proBNP performed better than BNP in identifying patients with left ventricular systolic dysfunction. A cutoff of 150 pg/ml for NT-proBNP provided a high negative predictive value of 97.3%, avoiding unnecessary referrals while missing only one mild case of heart failure. The document proposes a study to evaluate implementing NT-proBNP screening in primary care practices to guide referrals for suspected heart failure.
Методы коррекции размеров полового члена после оперативного лечения олеограну...guestd58ac53
Методы коррекции размеров полового члена после оперативного лечения олеогранулёмы
Алиев Р.Т.
к.м.н., кафедра урологии и нефрологии Алтайского ГМУ
Москва -2010г.
Cucumber is a tool that allows software programmers to write automated tests for acceptance testing in a business-readable domain-specific language called Gherkin. Cucumber tests are written using a behavior-driven development (BDD) style with Given, When, Then steps. Cucumber supports testing applications developed in various programming languages and runs across different platforms and browsers.
Акторы в C++: взгляд старого практикующего актородела (St. Petersburg C++ Use...Yauheni Akhotnikau
Автор доклада более 16 лет отвечает за развитие Open-Source фреймворка SObjectizer -- одного из немногих живых, эволюционирующих, кросс-платформенных фреймворков для C++, базирующихся на Модели Акторов. При этом SObjectizer никогда не был исследовательским экспериментом и с самого начала использовался в ряде business-critical проектов.
За годы разработки и эксплуатации SObjectizer накопился некоторый практический опыт использования акторов в С++, которым докладчик поделится со слушателями. Речь пойдет о том, почему Модель Акторов выглядит привлекательной, где и когда ее выгодно использовать. Какие особенности накладывает именно С++ и разумно ли использовать Модель Акторов в C++? Почему реализации Модели Акторов для C++ настолько разные и почему SObjectizer получился именно таким?
Доклад с митапа MSK .NET Community (http://mskdotnet.org).
Поговорим о самом мощном отладчике для Windows – WinDbg. Разберем как начать использовать этот отладчик, чем он может быть полезен для .NET разработчиков. Подробней остановимся на практических моментах его применения, зачем он прикладным программистам, web-разработчикам. Посмотрим и на другие инструменты отладки, которые занимают нишу между интуитивно управляемым комбайном Visual Studio и легким, но крайне аскетичным WinDbg.
SE2016 IoT Maksym Antipov "Hardware development as a hobby and a job"Inhacking
Event: #SE2016
Stage: IoT & BigData
Data: 2 of September 2016
Speaker: Maksym Antipov
Topic: Hardware development as a hobby and a job
INHACKING site: https://inhacking.com
SE2016 site: http://se2016.inhacking.com/
Платежная система за год / Филипп Дельгядо (Информационные технологии и системы)Ontico
По мотивам одного из последних проектов буду рассказывать об особенностях разработки систем с сложной бизнес-логикой, ощутимыми требованиями к производительности и высокими требованиями к надежности.
Расскажу об особенностях платежных систем, опишу причины выбора основных архитектурных решений (Java, PostgreSQL, сервисы) и особенности процесса разработки.
Основные интересные моменты, на которых остановлюсь подробнее:
1) как решать популярные проблемы с БД и что делать, если не хватает IOPS;
2) какую надежную очередь стоит использовать;
3) какие нестандартные практики были успешными: IDE driven development, JSON вместо ORM, Functional test вместо Unit test;
4) какие решения были неправильными: PyTest, Spring Security, docker, велосипеды, разработчики, магия;
5) зачем менять методологию разработки три раза за год — и почему во многих проектах это тоже стоит делать.
Надеюсь, часть из сказанного вызовет несогласие и дискуссию.
Юлия Викторова; Александр Тарасов. DevOps без булшита.ScrumTrek
В своём докладе мы расскажем о том, что значит DevOps для нас, и как мы его готовим в большой организации со всеми её ограничениями, проблемами и челленджами как с технической, так и менеджерской точек зрения. Поделимся наработанным уникальным опытом в непростых вопросах: а зачем банку вообще нужен DevOps? как поставить более-менее правильные цели и продать это себе, своим коллегам, начальнику и бизнесу? Какие метрики нужно поставить, и попробуем разобраться есть ли в метриках счастье? Покажем, какие метрики были для нас окошком в Нарнию, и что в итоге получилось, расскажем про трансформацию людей и те инженерные практики, которые мы применяем (парная работа, тотальный кодинг, TDD, Infrastructure as a Code, API самообслуживания и т.д.), ответим на вопросы о том, что это за команда DevOps: какие грабли точно подстерегают нас, и как не наступать на них
Тесты в стиле BDD на C# (Подходы и инструменты; SpecFlow, BDDfy)
1. A U T O M A T E D -
T E S T I N G . I N F O
Тесты в стиле BDD на C#
Подходы и инструменты (SpecFlow, BDDfy)
Дмитрий Жарий,
http://zhariy.com
EPAM Systems, Май 2013
2. A U T O M A T E D -
T E S T I N G . I N F O
2
BEHAVIOR-DRIVEN DEVELOPMENT
Без лишней философии
3. 3 A U T O M A T E D -
T E S T I N G . I N F O
BDD – это обсуждение
Когда команда собирается вместе для
обсуждения конкретной (новой)
функциональности.
Участники команды приходят к
общему пониманию работы системы,
иллюстрируя эту работу примерами.
4. 4 A U T O M A T E D -
T E S T I N G . I N F O
BDD – это когда результат
обсуждения записывается
Раз мы уж мы приняли решение, так почему бы
не записать его? Или нарисовать?
Идея BDD не ограничивает нас ни в чём
5. 5 A U T O M A T E D -
T E S T I N G . I N F O
BDD – это когда мы
автоматизируем важные примеры
В момент обсуждения – мы находим
требования. Вместе создаем спецификацию.
Если мы автоматизируем проверку
требований…
Документация будет проверять систему.
Это – живая документация
6. 6 A U T O M A T E D -
T E S T I N G . I N F O
Если бы Маслоу придумал
треугольник BDD
1. Обсуждение. Общие понимание (Достаточно)
2. Запись требований (Круто)
3.
Автоматизация
(Ваще супер!)
7. A U T O M A T E D -
T E S T I N G . I N F O
7
О ЧЕМ ДОКЛАД, КЭП?
8. 8 A U T O M A T E D -
T E S T I N G . I N F O
BDD-инструмент… Так это ж топор!
• Рубить дерево
• Забивать гвозди
• Отбиваться от зомби
9. 9 A U T O M A T E D -
T E S T I N G . I N F O
В BDD есть инструменты, которые
решают определенную задачу
1. SpecFlow (Cucumber, JBehave )
Используется для создания
высокоуровневых сценариев для «бизнеса»
2. BDDfy/MSpec (Rspec, easyb…) ближе к коду,
ближе к разработчикам
3. Unit Tests (юнит тест фреймворки ) – это код.
Понятен разработчикам
10. 10 A U T O M A T E D -
T E S T I N G . I N F O
От «техники» к «бизнесу»
11. 11 A U T O M A T E D -
T E S T I N G . I N F O
12. 12 A U T O M A T E D -
T E S T I N G . I N F O
Unit Saibot
Очень гибкий, но порой,
его трудно разглядеть.
Особенно в темное время
13. 13 A U T O M A T E D -
T E S T I N G . I N F O
Unit Saibot - код
[TestMethod]
public void When_Player_X_puts_three_in_a_row_it_should_win()
{
// Arrange
var row1 = new[] { "X", "X", "O" };
var row2 = new[] { "X", "O", "O" };
var row3 = new[] { " ", " ", " " };
var game = new Game(row1, row2, row3);
// Act
game.PlayAt(2, 0);
// Assert
Assert.AreEqual("X", game.Winner);
}
14. 14 A U T O M A T E D -
T E S T I N G . I N F O
Unit Saibot отчет
15. 15 A U T O M A T E D -
T E S T I N G . I N F O
Unit Saibot – резюме
16. 16 A U T O M A T E D -
T E S T I N G . I N F O
BDDfy-tana
Находится где-то между
добром (кодом) и
требованиями…
https://github.com/TestStack/TestStack.BDDfy
17. 17 A U T O M A T E D -
T E S T I N G . I N F O
BDDfy-tana - код
[TestMethod]
public void X_Wins_situation()
{
var row1 = new[] { "X", "X", "O" };
var row2 = new[] { "X", "O", "O" };
var row3 = new[] { " ", " ", " " };
this.Given(_ => Given_the_following_board(row1, row2, row3))
.When(_ => When_X_moves_at(2, 0))
.Then(_ => Then_the_winner_should_be("X"))
.BDDfy();
}
18. 18 A U T O M A T E D -
T E S T I N G . I N F O
BDDfy-tana - отчеты
19. 19 A U T O M A T E D -
T E S T I N G . I N F O
BDDfy-tana – резюме
20. 20 A U T O M A T E D -
T E S T I N G . I N F O
Sub-SpecFlow
Ну… работа на стороне
требований… это значит
часто «морозиться»
http://www.specflow.org/specflownew/
21. 21 A U T O M A T E D -
T E S T I N G . I N F O
Sub-SpecFlow (бизнес сценарий)
Сценарий: Ничейный исход игры
Дано игровая доска в след. состоянии:
| * | C0 | C1 | C2 |
| Р0 | X | X | O |
| Р1 | O | O | X |
| Р2 | | O | X |
Когда "X"-ки делают ход Ряд="2", Строка="0"
То игра должна завершиться ничьей
Сценарий: 0-ки выигрывают
Дано игровая доска в след. состоянии:
| * | C0 | C1 | C2 |
| Р0 | X | X | O |
| Р1 | X | O | |
| Р2 | | | |
Когда “0"-ки делают ход Ряд="2", Строка="0"
Тогда победить должны “0"-ки
22. 22 A U T O M A T E D -
T E S T I N G . I N F O
Sub-SpecFlow (Keyword-driven)
Сценарий: Создание нового проекта
Дано Залогинится «admin» «admin»
И Кликнуть ссылка-текст «Проекты»
И Кликнуть ссылка-css «a[dataid=’addnew’]»
И Напечатать «Привет» в поле-css “input[id=name]”
Когда Нажать кнопка-id “btnSave”
То Подождать 2000
И Проверить заголовок содержит “Привет - Project”
Это не бизнес-сценарий. Это – КОД
23. 23 A U T O M A T E D -
T E S T I N G . I N F O
Sub-SpecFlow - отчеты
24. 24 A U T O M A T E D -
T E S T I N G . I N F O
Sub-SpecFlow – резюме
25. A U T O M A T E D -
T E S T I N G . I N F O
25
READY?
26. 26 A U T O M A T E D -
T E S T I N G . I N F O
Round 1. Fight!
Юнит тест для игрового движка
Цель игры в крестики–нолики – выстроить ряд из трех
своих фигур. Вы играете на поле 3 на 3. Первый игрок
известен как X, второй – 0. Игроки по очереди ставят
X-ки и 0-ки на игровом поле пока один не выстроит 3
фигуры в ряд или все 9 квадратов не будут заполнены.
X-ки всегда ходят первыми. В случае, если все
квадраты заполнены, и ни один игрок не выстроил ряд
из 3-х фигур – объявляется ничья.
27. 27 A U T O M A T E D -
T E S T I N G . I N F O
Round 1. Юнит-тесты. Выводы
Unit Saibot BDDfy-tana Sub SpecFlow
Читабельность* высокая высокая высокая
Усилия на
поддержку
очень низкие низкие средние
Скорость
создания
очень высокая высокая средняя
Скорость прохода очень высокая очень высокая очень высокая
* Читают тесты -- программисты
28. 28 A U T O M A T E D -
T E S T I N G . I N F O
Round 2. Fight!
Системные тесты на Selenium
(Record&Play)
29. 29 A U T O M A T E D -
T E S T I N G . I N F O
Round 2. Системные тесты
(Record&Play). Выводы
Unit Saibot BDDfy-tana Sub SpecFlow
Читабельность* низкая высокая высокая
Усилия на
поддержку**
высокие высокие высокие
Скорость
создания
низкая низкая низкая
Скорость прохода средняя средняя средняя
* Читабельность теста, не кода
** Сам подход Record&Play не позволяет достичь низких усилий на поддержку
30. 30 A U T O M A T E D -
T E S T I N G . I N F O
Round 3. Fight!
Свой Фреймворк
Лицо: BDD-фреймворк, отчеты и т.д.
Тело: Свой фреймворк, абстракции,
библиотеки методов, подходы,
лучшие практики, Page Objects,
Ноги: Юнит-тест фреймворк:
MbUnit, NUnit, MSTest
31. 31 A U T O M A T E D -
T E S T I N G . I N F O
Round 3. Системные тесты
(Framework). Выводы
Unit Saibot BDDfy-tana Sub SpecFlow
Читабельность* высокая высокая очень высокая
Усилия на
поддержку
низкие низкие средние
Скорость
создания
высокая высокая средняя
Скорость
прохода**
средняя средняя средняя
* Читабельность теста, не кода
** Системные UI тесты по своей природе не могут быть быстрыми
32. 32 A U T O M A T E D -
T E S T I N G . I N F O
Не Выводы
• Не ограничивайтесь одним подходом
• Не ограничивайтесь одним инструментом
• Не брезгуйте помощью программистов
33. 33 A U T O M A T E D -
T E S T I N G . I N F O
Выводы: инвестируйте в создание
фреймворка
34. 34 A U T O M A T E D -
T E S T I N G . I N F O
Материалы. Наглый самопиар
Презентация на ATDays 2013. “За пределами PageObject” (видео, слайды, код)
О том, как создать свой фремворк автоматизации UI тестирования с нуля
http://blog.zhariy.com/2013/02/atdays-pageobject.html
Доклад «Создание читабельных отчетов для автоматизации
тестирования на .NET/C# + Webdriver + Gallio Icarus/MbUnit + BDDfy» (видео)
Демонстрация работы Gallio Icarus и BDDfy для создания красивых отчетов после
прохода тестов
http://blog.zhariy.com/2012/12/confet-netc-webdriver-gallio.html
Слайды доклада «Запускаемая спецификация на SpecFlow
с использованием WatiN для .NET» (слайды)
Как работает Given When Then. Какие бывают сценарии
http://www.slideshare.net/dzhariy/specflow-watin-net
35. 35 A U T O M A T E D -
T E S T I N G . I N F O
Материалы
Автоматизация тестирования Web-приложений
Отличная статья, описывающая построение своего фреймворка тестирования,
использования PageObjects, SpecFlow (C#)
http://habrahabr.ru/post/178407/
Подборка лучших статей по BDD
Только самые лучшие статьи, объясняющие что такое BDD и
как применять эту методологию
http://goodrequirements.com/bdd/
Книги
http://it-ebooks.info/book/675/http://www.specificationbyexample.com/
36. 36 A U T O M A T E D -
T E S T I N G . I N F O
Инструменты (C#)
BDDfy
http://www.mehdi-khalili.com/bddify-in-action/introduction
SpecFlow
http://www.specflow.org/specflownew/
MSpec
https://github.com/machine/machine.specifications
37. 37 A U T O M A T E D -
T E S T I N G . I N F O
Дмитрий Жарий
http://zhariy.com
EPAM Systems
Специально для
посиделок AT.info