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


Изолированный тест (Isolated Test)



Download 1,35 Mb.
Pdf ko'rish
bet69/140
Sana15.04.2022
Hajmi1,35 Mb.
#555128
1   ...   65   66   67   68   69   70   71   72   ...   140
Bog'liq
Экстремальное программирование Разработка через тестирование PDFDrive

Изолированный тест (Isolated Test)
Каким образом выполнение од ного теста может повлиять на
выполнение д ругого? Никаким.
Я впервые столкнулся с автоматическим тестированием, когд а был
еще молод ым программистом. В то время в компании с д ругими
программистами (привет, Джо си, привет, Джон!) я занимался
разработкой отлад чика с графическим интерфейсом. Для контроля
корректно сти его работы использовалась д линная серия автоматических
тестов. Это был набор автоматически выполняемых тестов, о снованных
на взаимод ействии с графическим интерфейсом (специальная программа
перехватывала нажатия клавиш и события мыши, а затем автоматически


во спроизвод ила их, имитируя работу пользователя с программой). Для
выполнения всей серии тестов требовало сь д лительное время, поэтому
обычно тесты запускались вечером, перед уход ом с работы, и
выполнялись в течение почти всей ночи. Кажд ое утро, когд а я приход ил
на работу, я вид ел на своем стуле аккуратно сложенную пачку листов, на
которых были распечатаны результаты ночного тестирования. (Привет,
Эл!) В уд ачные д ни это мог быть всего од ин лист, на котором было
написано, что ничего не поломало сь. В плохие д ни на стуле могла
лежать огромная кипа бумаги – по од ному листу на кажд ый
«сломанный» тест. По степенно я стал пугаться вид а листов бумаги на
моем стуле, – если я приход ил на работу и вид ел на своем стуле кипу
бумажных листов, меня немед ленно бро сало в д рожь.
Работая в таком стиле, я пришел к д вум важным вывод ам. Во-
первых, тесты д олжны выполняться д о статочно быстро, чтобы я мог
запускать их само стоятельно и д елать это д о статочно часто. В этом
случае я мог бы обнаруживать ошибки раньше, чем кто-либо д ругой.
Во-вторых, спустя некоторое время я заметил, что огромная кипа бумаги
д алеко не всегд а означает огромную кучу проблем. Чаще оказывало сь,
что в самом начале выполнения тестов од ин из них завершался неуд ачей,
о ставляя систему в непред сказуемом со стоянии, из-за чего след ующий
тест тоже завершался неуд ачей, а за ним и многие д ругие – по цепочке.
В то время мы пытались решить эту проблему, автоматически
перезапуская систему перед выполнением кажд ого теста, од нако д ля
этого требовало сь слишком большое время. Именно тогд а у меня
возникла еще од на хорошая мысль: тестирование можно выполнять на
более низком уровне: вовсе не обязательно, чтобы кажд ый из тестов
выполнялся в отношении всего приложения в целом. Чтобы убед иться в
работо спо собно сти всего приложения, д о статочно протестировать
кажд ую из его со ставных частей. Тестирование части приложения
можно выполнить быстрее, чем тестирование всего приложения. Од нако
самый важный вывод со стоял в том, что выполнение од ного теста
никоим образом не д олжно влиять на выполнение д ругого теста. Тесты
д олжны полно стью игнорировать д руг д руга. Если од ин из тестов не
срабатывает, это значит, что в программе присутствует од на проблема.
Если не срабатывают д ва теста, значит, в программе присутствуют д ве
проблемы.
Если тесты изолированы д руг от д руга, значит, поряд ок их
выполнения не имеет значения. Если я хочу выполнить не все, а
некоторое под множество тестов, я не д олжен беспокоиться о том, что


некоторый тест не сработает только потому, что некоторый д ругой тест
не был пред варительно запущен.
Производ ительно сть является о сновной причиной, по которой
пред лагается д елать д анные общими д ля нескольких тестов. Требование
изоляции тестов принужд ает вас разд елить проблему на несколько
ортогональных измерений, благод аря чему формирование сред ы д ля
кажд ого из тестов выполняется д о статочно про сто и быстро. Иногд а,
чтобы выполнить под обное разд еление, приход ится приклад ывать
значительные усилия. Если вы хотите, чтобы разрабатываемое вами
приложение можно было протестировать при помощи набора
изолированных д руг от д руга тестов, вы д олжны «собрать» это
приложение 
из 
множества 
отно сительно 
небольших
взаимод ействующих межд у собой объектов. Я всегд а знал, что это
неплохая ид ея, и всегд а рад овался, когд а мне уд авало сь реализовать ее
на д еле, од нако я не был знаком ни с од ной метод икой, которая
позволяла бы мне регулярно воплощать эту ид ею в жизнь. Ситуация
изменилась в лучшую сторону по сле того, как я стал писать
изолированные тесты.

Download 1,35 Mb.

Do'stlaringiz bilan baham:
1   ...   65   66   67   68   69   70   71   72   ...   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