Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Тестирование как параразработка
Search
HappyDev'13
December 07, 2013
Programming
0
160
Тестирование как параразработка
Алексей Родионов
HappyDev'13
December 07, 2013
Tweet
Share
More Decks by HappyDev'13
See All by HappyDev'13
Вводный доклад о процессах и ролях, требованиях и визуализации
happydev
0
210
Особенности разработки финансовых проектов
happydev
0
170
Domain Driven Design. Модель вместо требований
happydev
0
420
К черту менеджерские карго культы! Дайте нормальное ТЗ
happydev
0
210
Эволюция больших проектов. Опыт API Яндекс.Карт
happydev
1
440
Мастер класс «Управленческие поединки»
happydev
0
190
Лучшая client-side архитектура
happydev
1
280
Выбор NoSQL базы данных для вашего проекта: "Не в свои сани не садись"
happydev
0
570
Вводный доклад про SQL, NoSQL и других
happydev
0
280
Other Decks in Programming
See All in Programming
iOSアプリ開発で 関数型プログラミングを実現する The Composable Architectureの紹介
yimajo
2
200
iOSアプリ開発もLLMで自動運転する
hiragram
6
2.3k
コードに語らせよう――自己ドキュメント化が内包する楽しさについて / Let the Code Speak
nrslib
6
1.4k
型安全RESTで爆速プロトタイピング – Hono RPC実践
tacke_jp
0
110
CSC307 Lecture 17
javiergs
PRO
0
110
型付きアクターモデルがもたらす分散シミュレーションの未来
piyo7
0
740
赤裸々に公開。 TSKaigiのオフシーズン
takezoux2
0
110
FormFlow - Build Stunning Multistep Forms
yceruto
1
150
漸進。
ssssota
0
1.8k
List Unfolding - 'unfold' as the Computational Dual of 'fold', and how 'unfold' relates to 'iterate'"
philipschwarz
PRO
0
180
TypeScript LSP の今までとこれから
quramy
1
490
RubyKaigiで得られる10の価値 〜Ruby話を聞くことだけが RubyKaigiじゃない〜
tomohiko9090
0
140
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Build The Right Thing And Hit Your Dates
maggiecrowley
36
2.7k
BBQ
matthewcrist
89
9.7k
How to Ace a Technical Interview
jacobian
276
23k
Statistics for Hackers
jakevdp
799
220k
Done Done
chrislema
184
16k
A Modern Web Designer's Workflow
chriscoyier
693
190k
We Have a Design System, Now What?
morganepeng
52
7.6k
A better future with KSS
kneath
239
17k
Transcript
ТЕСТИРОВАНИЕ КАК ПАРАРАЗРАБОТКА @p0deje
[email protected]
• 7+ лет в тестировании • Head QA @ Toptal
• Code monkey @ Watir • (ex) Контрибутор @ Mozilla АЛЕКСЕЙ РОДИОНОВ
КАЧЕСТВО
КАЧЕСТВО соответствие реализации заданным характеристикам
КАЧЕСТВО соответствие реализации заданным характеристикам (функциональная спека, дизайн, юзабилити, etc.)
ТЕСТИРОВАНИЕ получение информации о качестве
ЗАЧЕМ?
ЗАЧЕМ? изменение текущих процессов разработки
ЗАЧЕМ? более лучшее качество
ЗАЧЕМ? выше конкурентоспособность
ЗАЧЕМ? увеличение прибыли
PROFIT!
N.B. Иллюстрация принципа “why stack” компании ThoughtWorks
КАК? Верификация и Валидация
ВЕРИФИКАЦИЯ мы сделали то, что требовалось
ВАЛИДАЦИЯ то, что мы сделали, соответствует ожиданиям (клиента, пользователей)
КАК?
КАК? Требования, планы, кейсы, трэкер и т.д.
КАК? Требования, планы, кейсы, трэкер и т.д. Требования, планы, кейсы,
трэкер и т.д.
КАК? Требования, планы, кейсы, трэкер и т.д. Требования, планы, кейсы,
трэкер и т.д. Требования, планы, кейсы, трэкер и т.д.
КАК? Требования, планы, трэкер и т.д. Требования, планы, трэкер и
т.д. Требования, планы, трэкер и т.д.
КАК? Требования, трэкер и т.д. Требования, трэкер и т.д. Требования,
трэкер и т.д.
КАК? Требования и т.д. Требования и т.д. Требования и т.д.
КАК? Как-то так
“РЕГРЕССИОННАЯ СПИРАЛЬ СМЕРТИ”
РУЧНОЕ ТЕСТИРОВАНИЕ НЕ МАСШТАБИРУЕТСЯ
КОЛИЧЕСТВО ➜ КАЧЕСТВО
АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ
УРОВНИ Юнит тесты Интеграционные тесты Системные тесты
ЮНИТ ТЕСТЫ • Методы и классы • В 90% случаев
разработчики
ИНТЕГРАЦИОННЫЕ ТЕСТЫ • Взаимодействие отдельных компонентов • Big bang, bottom-up,
top-down
СИСТЕМНЫЕ ТЕСТЫ • Полностью собранная система • GUI, Exploratory, Ad
hoc, Security, Usability, etc.
Входные данные Тестируемая система Оракул ТЕСТ
ВХОДНЫЕ ДАННЫЕ daysInMonthToString(days)
ВХОДНЫЕ ДАННЫЕ daysInMonthToString(days) daysInMonthToString(10) #=> “10 days”
ВХОДНЫЕ ДАННЫЕ daysInMonthToString(days) daysInMonthToString(10) #=> “10 days” daysInMonthToString(50) #=> Error:
“No more than 31 days”
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ … -1 0 31 32 …
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ … -1 0 31 32 … Неверно
Неверно Верно
АНАЛИЗ ПОГРАНИЧНЫХ ЗНАЧЕНИЙ daysInMonthToString(-1) daysInMonthToString(0) daysInMonthToString(31) daysInMonthToString(32)
КЛАССЫ ЭКВИВАЛЕНТНОСТИ Единственное число - day Множественное число - days
КЛАССЫ ЭКВИВАЛЕНТНОСТИ daysInMonthToString(-1) daysInMonthToString(0) daysInMonthToString(31) daysInMonthToString(32) daysInMonthToString(1)
Входные данные Тестируемая система Оракул ТЕСТ
ОРАКУЛ • Предсказывает поведение системы • Определяет результат теста (pass/fail)
• Джеймс Бах / Майкл Болтон: “FEW HICCUPPS” • Дуг Хоффман: “Таксономия оракулов”
ЧТО ДАЛЬШЕ?
ЧТО ДАЛЬШЕ? Непрерывная интеграция, деплоймент, ATDD, etc.
ЧТО ДАЛЬШЕ? Непрерывная интеграция, деплоймент, ATDD, etc. Оптимизация тестов, инфраструктура,
etc.
ТЕСТИРОВАНИЕ?
ТЕСТИРОВАНИЕ? ПАРАРАЗРАБОТКА!
ПАРАДЕВ Человек в команде разработки, который не является разработчиком
ПАРАДЕВ Человек со множеством скиллов и неограниченный формальными рамками
ПАРАДЕВ Цель тестирования - перестать тестировать
ПАРАДЕВ “Test is dead” - Alberto Savoia
@p0deje
[email protected]
СПАСИБО!