Экстремальное программирование. Разработка через тестирование


Начальный тест (Starter Test)



Download 1,35 Mb.
Pdf ko'rish
bet76/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   72   73   74   75   76   77   78   79   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Начальный тест (Starter Test)
С какого теста след ует начать разработку? Начните с тестирования
варианта операции, который не под разумевает выполнения каких-либо
о смысленных д ействий, то есть ничего не д елает.
Приступая к реализации операции, вы прежд е всего д олжны
ответить на вопро с: «Гд е она д олжна располагаться?» Пока вы не
ответите на этот вопро с, вы не буд ете знать, какой код необход имо
написать, чтобы протестировать эту операцию. Как уже неод нократно
рекоменд овало сь, не след ует решать несколько проблем од новременно.
Значит, вы д олжны выбрать такой тест, который позволит вам искать
ответ только на од ин этот вопро с и на время забыть обо всех о стальных
вопро сах.
Если вы с самого начала приступите к реализации реалистичного


теста, 
вам 
прид ется 
искать 
ответы 
на 
несколько 
вопро сов
од новременно:
• Гд е д олжна располагаться операция?
• Какие вход ные д анные считать корректными?
• Каким д олжен быть корректный результат выполнения операции
при использовании выбранных вход ных д анных?
Если вы начнете с реалистичного теста, вы слишком д олгое время
буд ете вынужд ены д ействовать без обратной связи. Красный – зеленый –
рефакторинг, красный – зеленый – рефакторинг. На выполнение этого
цикла д олжно уход ить всего несколько минут.
Но как сократить время цикла? Для этого вы можете
во спользоваться тривиальными вход ными и выход ными д анными. Вот
про стой пример: если функция д олжна склад ывать многозначные
вещественные числа с точно стью д о тысячного знака по сле запятой,
вовсе не обязательно начинать ее реализацию с теста, проверяющего
результат сложения таких огромных чисел. Вполне можно начать с
тривиального теста 3 + 4 = 7. Вот еще од ин пример. В группе
электронных 
ново стей, 
по священной 
экстремальному
программированию, од ин из участников поинтересовался, как написать
программу минимизации количества полигонов (многоугольников),
со ставляющих некоторую поверхно сть. На вход под ается набор
полигонов, комбинация которых пред ставляет собой некоторый
трехмерный объект. На выход е д олжна получиться комбинация
полигонов, которая описывает точно такой же объект (поверхно сть), но
включает в себя минимальное возможное количество полигонов. «Как я
могу разработать под обную программу, если д ля того, чтобы заставить
тест сработать, я д олжен быть как минимум д октором наук?»
Используя шаблон «Начальный тест» (Starter Test), мы получаем
ответ:
• Вывод д олжен быть точно таким же, как ввод . Некоторые
комбинации полигонов изначально являются минимальными.
• Ввод д олжен быть как можно меньшего размера. Например,
ед инственный полигон или д аже пустой список полигонов.
Мой начальный тест выгляд ел след ующим образом:
Reducer r = new Reducer(new Polygon());
assertEquals(0, reducer.result(). npoints);
Отлично! Первый тест заработал. Теперь можно перейти к


о стальным тестам в списке…
К начальному тесту след ует применить рассмотренное ранее
правило «Тест од ного шага» (One Step Test): самый первый тест д олжен
научить вас чему-то новому, кроме того, вы д олжны облад ать
возможно стью д о статочно быстро заставить его работать. Если вы
реализуете под обный код уже не в первый раз, вы можете выбрать
начальный тест д ля од ной или д аже д вух операций. Вы д олжны быть
уверены, что сможете быстро заставить тест работать. Если вы
приступаете к реализации чего-либо д о статочно сложного и д елаете это
впервые, начните с самого про стого теста, который вы только можете
пред ставить.
Я часто замечаю, что мой начальный тест работает на д о статочно
высоком уровне и скорее напоминает тест всего приложения. Например,
про стой сетевой сервер. Самый первый тест выгляд ит след ующим
образом:
StartServer
Socket= new Socket
Message = "hello"
Socket.write(message)
AssertEquals(message, socket.read)
Остальные 
тесты 
пишутся 
только 
на 
стороне 
сервера:
«Пред положим, что мы получаем строки напод обие этой…»

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   72   73   74   75   76   77   78   79   ...   140




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish