5. In the late 1990’s several methodologies began to get increasing public attention.
Each had a different combination of old ideas, new ideas, and transmuted old
ideas. But they all emphasized close collaboration between the programmer team
and business experts; face-to-face communication (as more efficient than written
documentation); frequent delivery of new deployable business value; tight, self-
organizing teams; and ways to craft the code and the team such that the
inevitable requirements churn was not a crisis.
6. http://agilemanifesto.org/
Agile-манифест разработки программного
обеспечения
Мы постоянно открываем для себя более совершенные методы разработки программного
обеспечения, занимаясь разработкой непосредственно и помогая в этом другим. Благодаря
проделанной работе мы смогли осознать, что:
Люди и взаимодействиеважнее процессов и инструментов
Работающий продукт важнее исчерпывающей документации
Сотрудничество с заказчиком важнее согласования условий контракта
Готовность к изменениям важнее следования первоначальному плану
То есть, не отрицая важности того, что справа,
мы всё-таки больше ценим то, что слева.
7. Наивысшим приоритетом для нас является удовлетворение потребностей
заказчика, благодаря регулярной и ранней поставке ценного программного
обеспечения.
Изменение требований приветствуется, даже на поздних стадиях разработки.
Agile-процессы позволяют использовать изменения для обеспечения заказчику
конкурентного преимущества.
Работающий продукт следует выпускать как можно чаще, с периодичностью
от пары недель до пары месяцев.
На протяжении всего проекта разработчики и представители бизнеса должны
ежедневно работать вместе.
Над проектом должны работать мотивированные профессионалы. Чтобы
работа была сделана, создайте условия, обеспечьте поддержку и полностью
доверьтесь им.
Непосредственное общение является наиболее практичным и эффективным
способом обмена информацией как с самой командой, так и внутри команды.
Работающий продукт — основной показатель прогресса.
Инвесторы, разработчики и пользователи должны иметь возможность
поддерживать постоянный ритм бесконечно. Agile помогает наладить такой
устойчивый процесс разработки.
Постоянное внимание к техническому совершенству и качеству
проектирования повышает гибкость проекта.
Простота — искусство минимизации лишней работы — крайне необходима.
Самые лучшие требования, архитектурные и технические решения рождаются
у самоорганизующихся команд.
Команда должна систематически анализировать возможные способы
улучшения эффективности и соответственно корректировать
стиль своей работы.
Agile Alliance,
http://www.agilealliance.org/
8. 3 слова для каждого принципа
Картинка
На все – 10 минут
9. - Scrum
- Kanban/Lean
- Xtreme Programming
- Crystal
- DSDM (Dymanic System
Development Met.)
- Feature Driven Development
10. 1962, Toyota
“Кан” - видимый, визуальный, и “бан” - карточка
или доска.
1. Визуализируйте производство (visualize
workflow)
— Разделите работу на задачи, каждую задачу
напишите на карточке и поместите на стену или
доску.
— Используйте названные столбцы, чтобы
показать положение задачи в производстве.
2. Ограничивайте WIP (work in progress или работу,
выполняемую одновременно) на каждом этапе
производства. (limit work-in-progress)
3. Измеряйте время цикла (среднее время на
выполнение одной задачи) и оптимизируйте
постоянно процесс, чтобы уменьшить это время.
(monitor, adapt, improve)
Tools:
Trello
Jira Agile
Kanbanflow
Kanbanize
Visual Wip
11. Набор принципов, на которых строится
процесс разработки, позволяющий в
жёстко фиксированные и небольшие по
времени итерации, называемые
спринтами, предоставлять конечному
пользователю работающее ПО с новыми
возможностями
• Возможности ПО к реализации в
очередном спринте определяются в
начале спринта на этапе
планирования и не могут изменяться
на всём его протяжении.
• строго фиксированная небольшая
длительность спринта придаёт
процессу разработки предсказуемость
и гибкость.
13. Водопад – когда нужна
формализация, четкий набор задач,
«можно» менять время и цену
Agile – нет четкого набора задач,
постоянные изменения, но
выпускаем всегда в одно и тоже
время, одной и той же командой
15. Product Owner:
Представляет интересы конечных пользователей и
других заинтересованных в продукте сторон (может
быть не один человек)
Несет ответственность за значимость продукта для
пользователей
Собирает все требования в бэклог и расставляет
приоритеты
Поддерживает бэклог продукта
Участвует в демо и «подтверждает» готовность историй
Scrum Master:
Выделенный человек, ответственный за следвоании
командой процессу
Поддерживает бэклог итерации
Не менеджер, но организует все митинги, назначает
задачи
Отвечает за то, чтобы команде ничего не мешало
доставить работающий продукт продакшен качества в
срок
16. Группа мотивированных людей, которые работают друг с
другом для достижения общей цели (создания продукта), могут
участвовать в дискуссиях, должны быть готовы к изменениям
Могут брать задачи самостоятельно, им не нужен менеджер,
который назначит работу. Высокая степень ответственности за
свой выбор и результат
Управляем своими задачами как единая группа (назначить,
оценить, переоценить, переделать, доставить,..)
Команде нужен «тренер», но не нужен человек для контроля
(They still require mentoring and coaching, but they don't
require "command and control.«)
Вся команда понимает требования, никто не боится задавать
вопросы чтобы развеять сомнения
Команда постоянно развивается, улучшать свои навыки,
пробудет новые технологии, идеи, улучшения
Competency. Collaboration. Motivation. Trust and Respect.
Continuity. Do Agile Right: team structure
18. Синие и красные бумажечки. Синие – должны,
красные – часто бывает
3 столбика: Product Owner, Scrum Master, Team
Раскладываем карточки за 10 минут
19. Под «сделано» каждый может подразумевать что-то
свое. И под «хорошо сделано», тоже
Нужны критерии, что продукт «готов»
1. Договор между заказчиком и командой
2. Чеклист нужных активностей
3. Могут быть на требование (есть критерии, есть
приоритет,..), задачу (код ревью, автотесты, ручные
тесты, все тесты прошли,..), итерацию (есть нужные
документы, все задачи прошли все стадии,
регрессионные тесты прошли,..)
4. Должен разрабатываться ВСЕЙ командой
http://vimeo.com/21529305
21. - Story Card
- Acceptance
Criteria
- Communications!
Do Agile Right: Specifications
23. INVEST theory:
Independent – Don’t mix user stories together, each
should be independent in and of itself.
Negotiable – User stories, up until they are part of an
iteration, can always be changed and rewritten.
Valuable – A user story must deliver value to the end
user
Estimable – User stories may have to be prioritized.
Small – Keep them short, user stories are not novels.
Testable – Make sure the user story actually offers
something you can analyze or test.
24. MoSCoW:
Must have
Should have
Could have
Would like
Developers will initially try to deliver all the M, S and C requirements but
the S and C requirements will be the first to go if the delivery timescale
looks threatened.
26. 15 минут
- Что делал вчера,
- Что собираюсь делать сегодня
- Есть ли вопросы?
15 минут
- Что делал вчера,
- Что собираюсь делать сегодня
- Есть ли вопросы?
30. Показываем заинтересованным лицам что сделали за
итерацию
Обычно сценарии берем из приемочных критериев
Тыкаем «вживую»
Отвечаем на вопросы
Цель: показать, что сделали и узнать,
то ли вообще сделали?
31. - Нужна для того, чтобы улучшать процесс, инструменты, результаты по ходу разработки
33. За качество отвечает ВСЯ команда (вместе планируем,
вместе проводим ретро, вместе демонстрируем
заказчикам, вместе огребаем проблем)
Стараемся не находить ошибки, а предвосхищать их
появление (больше к девелоперам, но мы можем быть
рядом с ними в эти моменты: во время код ревью,
планирования)
Тестируем документацию и мокапы/прототипы!
Требования все время меняются, частые доставки ( на
кейсы обычно времени нет)
Приоритезируем еще лучше, чем в других процессах)
Больше исследований! Exploratory, Ad-hoc, Session
based
37. прежде чем писать - подумайте для кого пишем
Неофициальный: чеклист, майн-карта, записи на вики :)
стандартные разделы:
- Что тестируем? Описание системы, оборудования,..
- Какую часть тестируем? Scope тестируемых функций
- Что не тестируем
- Как тестируем? Стратегия, типы тестов, техники, уровни
- Кто тестирует? роли, команды, конкретные имена :)
- Когда тестируем? Расписание / estimation
- На чем тестируем? Описание тестового стенда, необходимых систем (нужны ли внешние
системы?), железо, инструменты (багткерер, хранение кейсов,..)
- Критерии конца: метрики (открытые/закрытые баги, покрытие кода, etc), время, etc.
- Риски
- Где искать другие документы "ленивый" тест план
38. Набор идей для тестирования
http://jira.jtalks.org/secure/StructureBoard.jspa?s=134
48. Бизнес район – места, где делаются дела
Исторический район – старые районы, достались нам от прошлый хозяев (legacy
code)
Туристический район – места, где бывают новые пользователи и не бывают
горожане
Федекс тур – тестируем, фокусируясь на тестовых данных
65. HAR (HTTP Archive)– стандарт для трейса http запросов. Цель – запись запросов
в браузере.
Как записать (Chrome):
- F12
- Rec, выполняем нужные действия
- Stop
- Right-click на запросах -> save as HAR
СпецификацияТестирование с HAR
Конвертация в jmx
66. плагин к firefox, chrome
http://chrispederick.com/work/web-developer/
Примеры:
Forms->Меняем Get на Post
Forms-> Convert Select elements to text input
Miscellaneous->Display hidden elements
Tools->Validators
16.3.15
67. Прокси
перехватываем, редактируем, посылаем запросы
эмулируем плохую сеть, ошибки в ответах,..
отправляем запросы одновременно Shift+R
аналог для браузера: tamper data
качаем тут http://www.telerik.com/download/fiddler
16.3.15
74. Scenario: When a user adds a product to the shopping cart, the product
should be included in the user's shopping cart.
Given a user
Given a shopping cart
Given a product
When the user adds the product to the shopping cart
Then the product must be included in the list of the shoppingcart's
entries
public class AddProductToShoppingCart extends JUnitStory {
private User user;
private ShoppingCart shoppingCart;
private Product product;
@Given("a user")
public void aUser() {
user = new User();
}
@Given("a shopping cart")
public void aShoppingCart() {
shoppingCart = new ShoppingCart();
}
@Given("a product")
public void aProduct() {
product = new Product();
product.setName("Coffee");
}
@When("the user adds the product to the shopping cart")
public void userAddsProductToShoppingCart() {
shoppingCart.add(user, product);
}
@Then("the product must be included in the list of the shoppingcart's entries")
public void productMustBeListed() {
List<Product> entries = shoppingCart.getProductsByUser(user);
Assert.assertTrue(entries.contains(product));
}
}
Evolution of Automation Test Engineer
JBehave
76. Why
- Increase online conversions by 15% in the next
quarter
- Attract 20% more customers in the next financial
year
Who
- Students with a tablet device or smart phone in
the classroom
- Corporate employees with access to the secure
drive
How
- Get faster access to accurate information
- Have access to a wider network of colleagues to
collaborate with
What
- Online purchasing
- Registration form