Чаму вы хочаце аўтаматызаваць тэст?

Навошта вам аўтаматызаваць тэст? Якія перавагі мы атрымліваем пры аўтаматызацыі тэстаў?

Даволі часта, калі людзі ўдзельнічаюць у аўтаматызаваным тэсціраванні, іх асноўная ўвага перамяшчаецца ад распрацоўкі якасных тэстаў да таго, каб аўтаматызаваны код мог рэальна выканаць і запусціць тэст.

Падчас спрынту, калі на членаў каманды ціснуць матэрыялы ў абмежаваныя тэрміны, звычайна не хапае часу, каб праверыць усе запланаваныя сцэнарыі, не кажучы ўжо пра напісанне аўтаматызаваных тэставых сцэнарыяў для праверкі новай функцыянальнасці.


Мы можам захапіцца падрабязнасцямі працы, кадзіравання, прагляду, выканання і забыцца на асноўную прычыну чаму мы фактычна аўтаматызуем тэст!



Чаму мы аўтаматызуем тэст?

Гэта адзін з пытанняў, які я задаю, калі бяру інтэрв'ю ў кандыдатаў на ролю аўтаматызацыі выпрабаванняў, і, на маё здзіўленне, многія кандыдаты, здаецца, прапускаюць асноўную і важную прычыну аўтаматызацыі тэсту. Некаторыя адказы, якія я атрымліваю ад кандыдатаў, цалкам дакладныя, але ўсё яшчэ не той адказ, які я шукаю. Некаторыя адказы, якія я атрымліваю на вышэйзгаданае пытанне:


Павялічце тэставае пакрыццё

Гэты адказ цалкам слушны, але як мы можам вызначыць ахоп? Калі ў нас ёсць 100 тэстаў, як мы можам вымераць працэнт ахопу?



З наяўнасцю спелай практыкі аўтаматызацыі тэстаў вы маглі б правесці сотні тэстаў за адносна кароткі прамежак часу.

Дзякуючы гэтаму мы можам стварыць больш тэставых прыкладаў, больш сцэнарыяў тэсціравання і правесці тэст з большай колькасцю ўваходных дадзеных для дадзенай функцыі і, такім чынам, атрымаць большую ўпэўненасць у тым, што сістэма працуе належным чынам.

Аднак падчас тэставання і, асабліва, аўтаматызацыі тэстаў, большая колькасць тэстаў на самай справе не азначае павышэння якасці альбо большага шанцу знайсці памылкі.


У паведамленні Марціна Фаўлера, дзе ён абмяркоўвае Тэставае пакрыццё , згадвае ён

Калі вы зробіце пэўны ўзровень ахопу мэтавым, людзі паспрабуюць яго дасягнуць. Бяда ў тым, што дастатковую колькасць ахопу занадта лёгка дасягнуць пры тэставанні нізкай якасці. На самым недарэчным узроўні ў вас ёсць AssertionFreeTesting . Але нават без гэтага вы атрымліваеце мноства тэстаў, якія шукаюць рэчы, якія рэдка памыляюцца, адцягваючы вас ад тэсціравання рэчаў, якія сапраўды важныя.

Эканоміць час

Гэты адказ таксама адпавядае рэчаіснасці, бо падчас аўтаматызаванага тэставання вы можаце выдаткаваць каштоўны час на правядзенне цікавых пошукавых выпрабаванняў. Аднак для зусім новай функцыі, якая была распрацавана, напісанне аўтаматызаваных сцэнарыяў можа заняць больш часу, чым праверка функцыі ўручную ў першы момант.

Такім чынам, важна адзначыць, што для эканоміі часу ад аўтаматызаваных тэстаў патрабуецца першапачатковае ўзмацненне намаганняў пры стварэнні сцэнарыяў аўтаматызаваных тэстаў, пераканаўшыся ў іх праверцы кода і адсутнасці ікаўкі ў выкананні аўтаматызаваных тэстаў.


Знайсці больш памылак

Гэты адказ мяне часам турбуе, бо я ніколі не бачыў метрык, якія дазваляюць меркаваць, што аўтаматызацыя выявіла больш памылак, чым ручное / даследчае тэсціраванне. Аўтаматызаваныя тэсты звычайна правяраюць наяўнасць рэгрэсу ў сістэме пасля ўкаранення новага кода.

У новых магчымасцях заўсёды больш шанцаў знайсці памылкі, чым у існуючых. Акрамя таго, ёсць і іншыя прычыны чаму аўтаматызаваныя тэсты не могуць знайсці дэфекты

Заменіце ручныя тэстары

Гэта, мабыць, горшы адказ, які я чуў адносна таго, чаму мы аўтаматызуем тэст. Існуе дакладнае адрозненне паміж тым, што робіць ручной тэстар, і тым, што правярае аўтаматызаваны тэст. Аўтаматызаванае тэсціраванне - гэта не тэставанне, гэта праверка фактаў.

Для таго каб мець магчымасць аўтаматызаваць тэст, мы павінны ведаць чаканы вынік, каб мы маглі праверыць сапраўдны ці несапраўдны вынік. Гэта тое, што дае нам праўду альбо ілжыва, станоўча альбо адмоўна, праходзіць альбо не атрымліваецца.


З іншага боку, тэставанне - гэта расследаванне, пры якім мы распрацоўваем і выконваем тэсты адначасова. Многія рэчы могуць паводзіць сябе па-рознаму, калі гэта можа заўважыць толькі назіральны чалавек-выпрабавальнік.

Добрыя ручныя тэстары заўсёды спатрэбяцца з-за рознага мыслення і магчымасці паставіць пад сумнеў сістэму.



Палепшыць якасць

Хоць аўтаматызаваныя тэсты здольныя даць нам хуткую зваротную сувязь і папярэдзіць пра стан працы прыкладання, каб мы маглі вярнуць любыя змены кода, якія парушылі сістэму, аўтаматызаванае тэсціраванне самастойна не паляпшае якасць. Тое, што ў нас ёсць спелая аўтаматызацыя выпрабаванняў, не гарантуе, што ніякія памылкі не ўвойдуць у вытворчасць.

Мы можам палепшыць якасць, забяспечваючы захаванне правільных практык ад пачатку да канца цыкла распрацоўкі. Якасць - гэта не наступнае; яго трэба запякаць з самага пачатку. Недастаткова спадзявацца на аўтаматызаваныя тэсты, каб скласці ўяўленне пра якасць прадукцыі.




Такім чынам, у чым асноўная прычына аўтаматызацыі тэсту?

Кароткі адказ паўтаральнасць . Мы аўтаматызуем тэст, таму што нам трэба зноў і зноў праводзіць адны і тыя ж тэсты. Вы хацелі б аўтаматызаваць тэст, калі збіраліся запусціць яго толькі адзін раз і забыцца на яго? Канешне не! Час і намаганні, якія вы марнуеце на аўтаматызацыю тэсту, вы маглі б выканаць яго ўручную.

Цяпер, па вызначэнні, мы аўтаматызуем паўтаральныя тэсты, гэта значыць рэгрэсійныя тэсты, якія нам трэба часта выконваць.

Такім чынам, у наступны раз, калі вы хочаце аўтаматызаваць тэст, зрабіце крок назад і падумайце, як часта вы можаце выканаць гэты тэст? Ці сапраўды варта намаганняў па аўтаматызацыі тэсту?