Every programmer has to face legacy code day after day. It might be ugly, it might look scary, it can make a grown man cry. Some will throw it away and try rewriting everything from scratch. Most of them will fail.
Refactoring legacy code is a much better idea. It is not so scary when you take it in very small bites, introduce small changes, add unit tests. When code is refactored and unit tests are added, changes to functinality can be introduced.
We will take an open source C# project and will refactor it showing step-by-step examples of the techniques. This session is full of tips and tricks you can start applying immediately. Although the code is in C#, the same principles can be applied in any language.
TDD подход к разработке зарекомендовал себя как очень надежный и быстрый способ реализовать задачи бизнеса с помощью программного кода. Но большая часть примеров на тренингах и в интернете показывает как применять TDD в очень простых ситуациях для кода вида вход/выход или с использованием заглушек для простых зависимостей. А как насчет остальных областей разработки приложения как интеграция с БД? Возможно ли применить TDD к ним? Что даст в этом случае TDD разработчику? Я попробую в своем докладе ответить на эти вопросы и покажу на практических примерах как может быть полезен подход TDD для кода интеграции с БД, как он уменьшает риски и открывает двери для техник рефакторинга БД. В качестве бонуса будут затронуты некоторые NoSQL решения, что должно сделать тему еще популярнее!
P.S. Все примеры будут демонстрироваться на Java.
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
Дорогие начинающие коллеги-тестировщики! Уважаемые коллеги со „средним“ стажем! В данном докладе я постараюсь поменять ваше традиционно неполное, и местами неверное представление о том, зачем и для чего мы занимаемся тестированием, и может быть даже достучаться до сердец некоторых сеньоров нашего ремесла.
Курсы, ISTQB, Википедия, скороспелые статьи на коммерческих и бесплатных сайтах, и знаменитые „исторические причины“ - внесли неоценимый вклад в дело хаоса понятий и поверхностности „лучших практик“ в области тестирования.
В докладе я донесу свой взгляд на современное тестирование, который поддерживают некоторые из очень ведущих специалистов. Понимание целей поможет вам стать лучшими тестировщикам и не только. Давайте сдвигать парадигму вместе уже сегодня! Так победим.
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
В своем докладе я расскажу, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование. Также расскажу с какими проблемами столкнулись, и как мы их устраняли. И да, каких результатов смогли добиться уже через полгода. А самое интересное, покажу как мы смогли добиться того, чтоб у нас pull request долетал до боя за 3 часа со всеми этапами тестирования.
Доклад будет содержать большое количество лайфхаков и обзоров инструментария, который мы использовали.
TDD подход к разработке зарекомендовал себя как очень надежный и быстрый способ реализовать задачи бизнеса с помощью программного кода. Но большая часть примеров на тренингах и в интернете показывает как применять TDD в очень простых ситуациях для кода вида вход/выход или с использованием заглушек для простых зависимостей. А как насчет остальных областей разработки приложения как интеграция с БД? Возможно ли применить TDD к ним? Что даст в этом случае TDD разработчику? Я попробую в своем докладе ответить на эти вопросы и покажу на практических примерах как может быть полезен подход TDD для кода интеграции с БД, как он уменьшает риски и открывает двери для техник рефакторинга БД. В качестве бонуса будут затронуты некоторые NoSQL решения, что должно сделать тему еще популярнее!
P.S. Все примеры будут демонстрироваться на Java.
Задорная презентация, посвещенная введению в разработку через тестирование. В частности, рассмотрены такие методологии как TDD (Test-Driven Development) и BDD (Behavior-Driven Devopment), их несомненные достоинства и недостатки, а также практическое применение.
Презентация подготовлена по материалам прошедшей 10.10.2013 конференции "Developers Software Conference 2013" в Витебске, организатором которой выступила компания "EPAM Systems".
QA Fest 2016. Алексей Виноградов. Цель тестирования. А на самом деле?QAFest
Дорогие начинающие коллеги-тестировщики! Уважаемые коллеги со „средним“ стажем! В данном докладе я постараюсь поменять ваше традиционно неполное, и местами неверное представление о том, зачем и для чего мы занимаемся тестированием, и может быть даже достучаться до сердец некоторых сеньоров нашего ремесла.
Курсы, ISTQB, Википедия, скороспелые статьи на коммерческих и бесплатных сайтах, и знаменитые „исторические причины“ - внесли неоценимый вклад в дело хаоса понятий и поверхностности „лучших практик“ в области тестирования.
В докладе я донесу свой взгляд на современное тестирование, который поддерживают некоторые из очень ведущих специалистов. Понимание целей поможет вам стать лучшими тестировщикам и не только. Давайте сдвигать парадигму вместе уже сегодня! Так победим.
QA Fes 2016. Анастасия Асеева. Роль тестирования в DevopsQAFest
В своем докладе я расскажу, как мы внедряли devops в банке, а конкретнее какую роль в этом процессе сыграло тестирование. Также расскажу с какими проблемами столкнулись, и как мы их устраняли. И да, каких результатов смогли добиться уже через полгода. А самое интересное, покажу как мы смогли добиться того, чтоб у нас pull request долетал до боя за 3 часа со всеми этапами тестирования.
Доклад будет содержать большое количество лайфхаков и обзоров инструментария, который мы использовали.
Presentation from 11th SQADays conference in Kiev (April 2012) and Selenium Camp 2013 (February 2013) about how to measure what functional tests are really testing from requirements, code and UI perspective.
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQAFest
В своём докладе я расскажу вам о том, кто такие тест-аналитики, тест-дизайнеры и должны ли их роль выполнять обычные тестировщики. Также сделаю обзор основных и проверенных методик тест-дизайна. Расскажу про их плюсы и минусы.
Будем учиться тестировать не 12 часов, а головой!
QA Fes 2016. Василий Сливка. 10 лучших практик для тестирования мобильных при...QAFest
Доклад для ленивых тестировщиков, которые не хотят набивать свои шишки, а научится на чужом опыте:
- полезные инструменты и решения для тестирования;
- работа с сетью, внутренними и внешними сервисами;
- процессы и культура тестирования в отделе разработки
- silver bullet в конце доклада
В этом докладе вы услышите историю о том, как можно построить процесс автоматизированного тестирования и непрерывной интеграции за короткий период времени. Мы поговорим о точках роста, развития и внедрения автоматизированного тестирования на уже существующем проекте. Вы узнаете, что с чего начинать автоматизированное тестирование и как выбрать "работающую" стратегию. После доклада вы захотите избавиться или значительно сократить ручное тестирование и ручной труд у себя на проекте. Вы откроете для себя целую систему, элементы который можно будет внедрять у себя, и которые будут работать.
Доклад будет интересен всем тестировщикам, разработчикам и менеджерам проектов.
Great functional testing with WebDriver and ThucydidesMikalai Alimenkou
Presentation from online conference ConfeT&QA (October 2012) and Selenium Camp 2013 (February 2013) about techniques and approaches to create great functional automated tests.
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...COMAQA.BY
Автоматизация тестирования визуальных регрессий, как особый вид тестирования, может поставить в тупик даже опытных специалистов своей отрасли. Тем более, если речь идёт об адаптивном дизайне.
Задача тестирования адаптивной верстки не является простой, хотя бы по той причине, что требует большого времени на проверку отображения визуального контента и покрытие всей требуемой матрицы платформ, браузеров и разрешений экрана.
Тем не менее существуют способы эффективного использования таких инструментов как Galen Framework и Applitools Eyes и интеграции их в уже существующую среду тестирования.
На наглядном примере сайта, имеющего адаптивный дизайн, я расскажу о том, как можно с лёгкостью применять вышеуказанные инструменты с целью избежать как можно больше разнообразных регрессионных визуальных ошибок.
Также будут подробно рассмотрены варианты построения архитектуры тестов и организации работы с дизайном приложения в целом.
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQAFest
Тестирование мобильных приложений существенно отличается от тестирования веб и десктопных приложений. Что вам нужно знать для того, чтоб качественно протестировать мобильное приложение?
Доклад о том как лучше всего подбирать мобильный тест-набор, и о том, что необходимо проверить в первую очередь на различных этапах жизненного цикла программного обеспечения. Кроме того, чеклисты и инструменты, которые помогут экономить время.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
Presentation from 11th SQADays conference in Kiev (April 2012) and Selenium Camp 2013 (February 2013) about how to measure what functional tests are really testing from requirements, code and UI perspective.
QA Fest 2016. Андрей Мясников. Тест-дизайн для чайниковQAFest
В своём докладе я расскажу вам о том, кто такие тест-аналитики, тест-дизайнеры и должны ли их роль выполнять обычные тестировщики. Также сделаю обзор основных и проверенных методик тест-дизайна. Расскажу про их плюсы и минусы.
Будем учиться тестировать не 12 часов, а головой!
QA Fes 2016. Василий Сливка. 10 лучших практик для тестирования мобильных при...QAFest
Доклад для ленивых тестировщиков, которые не хотят набивать свои шишки, а научится на чужом опыте:
- полезные инструменты и решения для тестирования;
- работа с сетью, внутренними и внешними сервисами;
- процессы и культура тестирования в отделе разработки
- silver bullet в конце доклада
В этом докладе вы услышите историю о том, как можно построить процесс автоматизированного тестирования и непрерывной интеграции за короткий период времени. Мы поговорим о точках роста, развития и внедрения автоматизированного тестирования на уже существующем проекте. Вы узнаете, что с чего начинать автоматизированное тестирование и как выбрать "работающую" стратегию. После доклада вы захотите избавиться или значительно сократить ручное тестирование и ручной труд у себя на проекте. Вы откроете для себя целую систему, элементы который можно будет внедрять у себя, и которые будут работать.
Доклад будет интересен всем тестировщикам, разработчикам и менеджерам проектов.
Great functional testing with WebDriver and ThucydidesMikalai Alimenkou
Presentation from online conference ConfeT&QA (October 2012) and Selenium Camp 2013 (February 2013) about techniques and approaches to create great functional automated tests.
Автоматизация визуального тестирования адаптивного дизайна на примере Galen F...COMAQA.BY
Автоматизация тестирования визуальных регрессий, как особый вид тестирования, может поставить в тупик даже опытных специалистов своей отрасли. Тем более, если речь идёт об адаптивном дизайне.
Задача тестирования адаптивной верстки не является простой, хотя бы по той причине, что требует большого времени на проверку отображения визуального контента и покрытие всей требуемой матрицы платформ, браузеров и разрешений экрана.
Тем не менее существуют способы эффективного использования таких инструментов как Galen Framework и Applitools Eyes и интеграции их в уже существующую среду тестирования.
На наглядном примере сайта, имеющего адаптивный дизайн, я расскажу о том, как можно с лёгкостью применять вышеуказанные инструменты с целью избежать как можно больше разнообразных регрессионных визуальных ошибок.
Также будут подробно рассмотрены варианты построения архитектуры тестов и организации работы с дизайном приложения в целом.
QA Fest 2016. Денис Яременко. Как облегчить процесс мобильного тестированияQAFest
Тестирование мобильных приложений существенно отличается от тестирования веб и десктопных приложений. Что вам нужно знать для того, чтоб качественно протестировать мобильное приложение?
Доклад о том как лучше всего подбирать мобильный тест-набор, и о том, что необходимо проверить в первую очередь на различных этапах жизненного цикла программного обеспечения. Кроме того, чеклисты и инструменты, которые помогут экономить время.
Виталий Шибаев - Креативный менеджмент глазами разработчика: как выжить в agi...HappyDev
Матерый enterprise проект с "зоопарком" из разнообразных технологий. Часто меняющаяся команда и требовательный заказчик. Менеджер, активно пытающийся вытянуть проект... Все составляющие для сюжета, достойного Титаника.
Было перепробовано множество практик для улучшения процесса разработки, и больше всего это влияло на нас, разработчиков. В одночасье рушились привычные устои, а новые, не успев прижиться, менялись снова. Разве возможна нормальная работа в такой нервной обстановке?
Автор критически оценит парное программирование, тестирование, code review и прочие практики из мира улучшения разработки, а также расшарит набитые шишки и обнаруженные грабли.
Видео: http://www.youtube.com/watch?v=vz0U3jQpHSM
Это обзор опыта применения лучших практик разработки программного обеспечения на разных проектах от госзаказов до видеоконференций в командах от 5 до 50 человек. В докладе будут описаны не только практики, но и то, как они применяются на реальных проектах и какие выгоды они действительно приносят.
Vladimir Obrizan "Ecosystem for reliable Python programming"Fwdays
With the increasing complexity of applications, the likelihood of software errors increases significantly. There are about ten tools in the Python programming ecosystem that can significantly reduce the risk of errors: unittest, pytest, unittest.mock, Freeze Gun, Webtest, Factory Boy, tox, retrying, Cosmic Ray, BitBucket Pipelines.
In the talk we will discuss the advantages and disadvantages of these technologies, as well as recommendations on what stage of development to apply.
Презентация делалась для JuJa конференции - Java конференции для (пре) Juniors: https://juja.com.ua/materials/jujacon-2017/
В ней
- описываются основные темы-вопросы, которые часто спрашивают на собеседовании на позицию Junior Java Developer;
- советы, что спросить собеседующего;
- как себя позиционировать, как относиться к собеседованию, как не бояться и как понять, что вам "туда".
Джоэл Спольски много лет назад придумал тест на качество и адекватность IT-компании, но ценности он не теряет и по сей день.
Сентябрь 2014, TechTalks NSU, Новосибирск
2. О докладчике
Когда-то был приличным
инженером, но 10 лет назад
связался с дотнетчиками,
выучил C#, занялся ООП,
скатился к TDD и
модульному тестированию.
Характер скверный.
Женат
2010 - Lohika
2012 - Microsoft
2013 - Unity Technologies
6. Что такое legacy code?
1. Это код без тестов
2. Код без спецификации
3. Код написанный очень давно и
неизвестно кем.
4. …
MakeFlagWavingBastardWaveHisFlagWhichIsTheProbablyTheLas
tThingHeWillEverDo()
Найдено в Carmageddon 1 debugging symbols dumped
9. Как появляется legacy code?
• Гонка за фичами (нужно больше золота)
• Меняющиеся требования.
• Костыли и хаки.
• Ротация разработчиков.
• Отсутствие мыслей о завтрашнем дне (
сопровождении кода )
16. С чего начать ?
• Определить что именно нужно менять
• Определить какие тесты нужны
• Запустить и проверить
• Написать тесты
• Внести изменения
17. С чего начать ?
• Определить что именно нужно менять
– Старый код бывает очень сложно понять
– Изменения могут быть сильно
распределены по коду
• Определить какие тесты нужны
• Запустить и проверить
• Написать тесты
• Внести изменения
18.
19. С чего начать ?
• Определить что именно нужно менять
• Определить какие тесты нужны
– Мы хотим убедиться, что код работает так же,
как работал до вмешательства.
– Есть ли механизм для мониторинга
результатов.
– Мы не боимся долгих и сложных тестов на
этом этапе!
• Запустить и проверить
• Написать тесты
• Внести изменения
20. Approval Tests
1. Сериализуем результат в текст
2. Сравниваем с эталоном
http://approvaltests.sourceforge.net
21. С чего начать ?
• Определить что именно нужно менять
• Определить какие тесты нужны
• Запустить и проверить
– Можем ли мы создать класс/вызвать метод
в тесте?
– Можем ли мы получить результат
вычислений?
• Написать тесты
• Внести изменения
22. Seams
• Швы – места, позволяющие менять
поведение программы не меняя код в
этом самом месте.
• Швы бывают объектные и линковочные
23. Sensing and Separation
• Sensing – мы меняем код для того,
чтобы получить доступ к результатам
вычислений.
• Separation – мы меняем код для того,
чтобы получить создать класс или
вызвать метод внутри теста.
24. Separation
В данном случае мы будем бороться за право создать экземпляр.
Самый простой рефакторинг – это добавить конструктор по умолчанию.
39. С чего начать ?
• Определить что именно нужно менять
• Определить какие тесты нужны
• Запустить и проверить
• Написать тесты
– Эти тесты больше похожи на приемочные тесты.
– Они могут быть медленными, могут обращаться к
внешним сервисам и базам данных
– Главная цель этих тестов определить работает ли
старый код так же, как работал до вмешательства.
• Внести изменения
40. С чего начать ?
• Определить что именно нужно менять
• Определить какие тесты нужны
• Запустить и проверить
• Написать тесты
• Внести изменения и выполнить
настоящий рефакторинг
– Когда код покрыт тестами он уже
формально не является легаси кодом.
– Его можно рефакторить и править.
Самое простое решение – сохранить результаты работы определенных сценариев в текст и сохранить эталон. Approval Tests позволяют пользоваться стандартными Diff утилитами для поиска различий.
Попытка создать класс в тесте может закончиться полным провалом