Upimaji wa moshi na usafi huanza mara moja baada ya kutolewa kwa toleo la pili la mradi huo. Kwa vijana wengi wanaojaribu, mchakato huu unaonekana kama fujo kabisa. Je, unajitambua? Kisha makala hii ni kwa ajili yako. Sasa tutaangalia ufafanuzi wa kupima moshi na kupima usafi, na kuonyesha tofauti kati yao kwa mifano rahisi kueleweka.

Uchunguzi wa Moshi:

Upimaji wa moshi unafanywa ili kuhakikisha kwamba kujenga matokeo yanafaa kwa ajili ya kupima. Pia inaitwa uthibitishaji wa "siku-sifuri".

Aina hii ya majaribio itakuzuia kupoteza muda. Ni jambo la busara kwamba kupima programu nzima haina maana ikiwa kuna matatizo na sifa muhimu na hitilafu muhimu hazijarekebishwa.

Mtihani wa usafi:

Upimaji wa usafi unafanywa katika hatua ya kutolewa ili kuangalia utendaji wa msingi wa programu. Kawaida hawaendi zaidi. Jaribio hili wakati mwingine huitwa toleo fupi la majaribio ya rejista.
Wakati makataa ya kutolewa ni kidogo, kufanya majaribio kamili ya urejeshaji karibu haiwezekani. Katika kesi hiyo, upimaji wa usafi, ambao huangalia uendeshaji wa kazi kuu za maombi, hufanya kazi nzuri.

Mfano wa kuelewa vyema tofauti kati ya moshi na upimaji wa usafi:

Kuna mradi ambao toleo la awali limepangwa. Timu ya wasanidi hutoa muundo kwa majaribio, na timu ya majaribio inaanza kazi. Jaribio la kwanza kabisa ni upimaji wa uwezo. Unahitaji kujua ikiwa unaweza kufanya kazi na toleo hili au la. Huu ni mtihani wa moshi. Ikiwa timu itatoa idhini kwa kazi zaidi na muundo, itatumwa kwa hatua za kina za majaribio. Hebu fikiria kwamba jengo lina moduli tatu: "Ingia", "Msimamizi" na "Mfanyakazi". Timu ya wanaojaribu hukagua utendakazi wa vitendakazi vya msingi pekee vya kila sehemu, bila kuingia katika maelezo. Hii itakuwa kipimo cha usafi.

Tofauti chache zaidi kati ya moshi na upimaji wa usafi:

  • Upimaji wa moshi unafanywa na watengenezaji na wajaribu;
  • Upimaji wa usafi unafanywa tu na wapimaji.
  • Upimaji wa moshi hufunika utendakazi wote wa msingi wa programu kutoka mwanzo hadi mwisho;
  • Upimaji wa usafi wa mazingira hujaribu tu sehemu maalum ya programu.
  • Upimaji wa moshi hupita miundo yote imara na isiyo imara;
  • Toleo thabiti la jengo hilo linafanyiwa majaribio ya usafi.

Kirill Flyagin, mbuni wa mchezo, Kiongozi wa QA

Hebu tufanye mlinganisho wa majira ya joto na aina hizi za kupima. Hebu sema unataka kununua watermelon. Upimaji wa moshi ni wakati unapoiangalia kwa kuibua, angalia vipande, itapunguza, gonga, tathmini. Kuna mabwana ambao wanaweza kununua matunda ya kitamu sana kwa njia hii. Katika upimaji wa usafi, unakata piramidi juu na kuangalia rangi yake (kama moja ya vipengele), lakini hujui kabisa ikiwa watermelon nzima ni hivyo. Lakini unajiamini kabisa katika sehemu iliyokatwa.

  • Jaribio la moshi kwenye Faili ya Jargon (Kiingereza)

Wikimedia Foundation.

2010.

    Tazama "mtihani wa moshi" ni nini katika kamusi zingine: mtihani wa moshi

    Tazama "mtihani wa moshi" ni nini katika kamusi zingine:- nomino Mbinu ya kupima uvujaji wa mabomba au mabomba ya moshi kwa kuanzisha moshi mzito, mara nyingi kwa kutumia bomu la moshi Ingizo kuu: moshi … Kamusi muhimu ya kiingereza. - Jaribio limefanywa ili kubaini ukamilifu wa mwako…

    Tazama "mtihani wa moshi" ni nini katika kamusi zingine: Kamusi ya maneno ya magari

    - 1. nomino a) Jaribio la uvujaji unaohusisha kupuliza moshi kwenye bomba au bomba. b) Jaribio la awali kwenye kipande kipya cha kifaa cha elektroniki kilichojengwa, kinachojumuisha tu utumiaji wa nguvu za umeme, ili kuhakikisha kuwa hakuna waya mbaya… … Wiktionary Uchunguzi wa moshi

    - 1. nomino a) Jaribio la uvujaji unaohusisha kupuliza moshi kwenye bomba au bomba. b) Jaribio la awali kwenye kipande kipya cha kifaa cha elektroniki kilichojengwa, kinachojumuisha tu utumiaji wa nguvu za umeme, ili kuhakikisha kuwa hakuna waya mbaya… … Wiktionary- ni neno linalotumika katika kutengeneza mabomba, kutengeneza upepo wa miti, vifaa vya elektroniki, ukuzaji wa programu za kompyuta, na tasnia ya burudani. Inarejelea jaribio la kwanza lililofanywa baada ya ukarabati au kusanyiko la kwanza ili kutoa hakikisho kwamba mfumo unaofanyiwa majaribio uta... ... Wikipedia

    -bzw. Rauchtest ni Begriff aus dem Englischen, gebräuchlich im handwerklichen Bereich (z. B. in der Klempnerei, Elektronik oder beim Bau von Holzblasinstrumenten) wie auch in der Softwareentwicklung. Es bezeichnet den esten… … Deutsch Wikipedia Moshi

    - ni mkusanyo wa chembe chembe za kioevu na gesi zinazopeperuka hewani [SFPE Handbook of Fire Protection Engineering] inayotolewa wakati nyenzo inapopitia… … Wikipedia Kitengo cha majaribio

    - Katika uundaji wa programu, kundi la majaribio, ambalo halijulikani sana kama kundi la uthibitishaji , ni mkusanyiko wa kesi za majaribio ambazo zinakusudiwa kutumiwa kujaribu programu ili kuonyesha kuwa ina tabia fulani maalum. Kikundi cha majaribio mara nyingi… … Wikipedia- Bomu la moshi ni fataki iliyoundwa kutoa moshi inapowaka. Ingawa kuna vifaa vya kuzalisha moshi ambavyo hutupwa kutoka kwa ndege, neno bomu la moshi hutumika kuelezea aina tatu za vifaa:# Mpira wa moshi ni shimo, cherry… … Wikipedia

Ikiwa unataka kuunda rahisi programu ya kompyuta, ambayo ina faili moja, unahitaji tu kukusanya na kuunganisha msimbo wote ulioandika kwenye faili hii. Katika mradi wa kawaida ambao timu ya maendeleo itafanya kazi, kutakuwa na mamia, hata maelfu ya faili. Hii "inachangia" kwa ukweli kwamba mchakato wa kuunda programu inayoweza kutekelezwa inazidi kuwa ngumu na ya muda: unapaswa "kukusanya" programu kutoka kwa vipengele mbalimbali.

Mazoezi yaliyotumiwa, kwa mfano, katika Microsoft na makampuni mengine ya maendeleo ya programu ni kujenga programu kila siku, ambayo inaongezewa na kupima moshi. Kila siku, baada ya kila faili kukusanywa, kuunganishwa, na kuunganishwa katika programu inayoweza kutekelezwa, programu yenyewe inakabiliwa na seti rahisi ya vipimo, madhumuni yake ni kuona ikiwa programu inavuta sigara wakati wa utekelezaji. Vipimo hivi huitwa vipimo vya moshi (kutoka moshi wa Kiingereza - moshi). Mara nyingi, mchakato huu ni wa kiotomatiki vizuri (au unapaswa kuwa).

FAIDA. Utaratibu huu rahisi hutoa faida kadhaa muhimu.

Kupunguza hatari wakati wa kuunganishwa

Mojawapo ya hatari kubwa zaidi ambayo timu ya uendelezaji inakabiliwa nayo ni kwamba wasanidi programu wenyewe hufanya kazi kwenye msimbo tofauti, bila ya kila mmoja, na kusababisha programu ngumu kutofanya kazi inavyotarajiwa wakati msimbo wa uzalishaji unakusanywa. Kulingana na wakati ambapo kutopatana katika mradi kuligunduliwa, utatuzi wa programu unaweza kuchukua muda mrefu kuliko ujumuishaji wa hapo awali, haswa ikiwa kiolesura cha programu kimebadilika au baada ya mabadiliko makubwa kwa sehemu kuu za programu kutekelezwa.

Mkutano wa kila siku na uendeshaji wa vipimo vya moshi hufanya iwezekanavyo kupunguza hatari ya makosa ya ushirikiano, kuwajibu kwa wakati unaofaa na kuzuia mkusanyiko wao.

Kupunguza hatari ya bidhaa ya ubora wa chini ya programu

Ubora wa chini wa bidhaa moja kwa moja inategemea kushindwa na matatizo wakati wa kuunganishwa. Kuendesha vipimo vya chini zaidi vya moshi kila siku huzuia makosa na matatizo kuchukua mradi. Ikiwa umeleta mradi kwa hali thabiti mara moja, itabaki kuwa thabiti milele. Kwa njia hii hutawahi kuruhusu ubora kuharibika hadi kiwango ambacho makosa hutokea.

Msaada katika kugundua makosa

Ikiwa siku moja nzuri bidhaa haina kujenga (inakusanyika na makosa), basi kwa kujenga kila siku na kuendesha seti ya vipimo vya moshi ni rahisi zaidi kupata sababu ya tatizo. Bidhaa iliyofanya kazi jana na haifanyi kazi leo ni dokezo wazi kwamba kuna kitu kibaya kilitokea kati ya miundo miwili.

Kuboresha ari

Ikiwa bidhaa inafanya kazi na kupata sifa na kazi mpya zaidi na zaidi kila siku, ari ya watengenezaji inapaswa, kwa nadharia, kukua na sio muhimu kabisa ni nini bidhaa hii inapaswa kufanya. Daima ni jambo la kufurahisha kwa msanidi programu kutazama "mtoto wake wa akili" akifanya kazi, hata kama bidhaa inaonyesha mstatili kwenye skrini :)

Kutumia vipimo vya kila siku vya kujenga na moshi

Hapa kuna baadhi ya maelezo ya kanuni hii.

Muundo wa maombi ya kila siku

Sehemu ya msingi ya kusanyiko la kila siku ni kukusanya sehemu ambayo ilikamilishwa mara ya mwisho. Jim McCarthy, akiandika katika Dynamics of Software Development (Microsoft Press, 1995), aliita ujenzi wa kila siku wa mradi kuwa mapigo ya moyo ya mradi. Ikiwa hakuna mapigo ya moyo, hakuna mradi, imekufa. Chini ya kitamathali, Michael Cusumano na Richard W. Selby walielezea ujenzi wa kila siku kama msukumo wa kusawazisha wa mradi (Microsoft Secrets, The Free Press, 1995). Kila msanidi anaandika msimbo kwa njia yake mwenyewe, na msimbo unaweza kwenda zaidi ya mfumo unaokubaliwa kwa ujumla wa mradi - hii ni ya kawaida, lakini kwa kila mfiduo wa mapigo ya kusawazisha, msimbo unarudi kwa kiwango. Kwa kusisitiza maendeleo kwa kutumia mapigo ya ulandanishi kila mara, unazuia mradi kutoka nje ya ulandanishi kabisa.

Katika makampuni mengine, ni desturi ya kukusanyika mradi si kila siku, lakini mara moja kwa wiki. Mfumo huu sio sahihi kwa sababu... katika tukio la "kuvunjika" katika mradi wiki hii, majuma mengine kadhaa yanaweza kupita kabla ya ujenzi unaofuata wenye mafanikio. Katika kesi hiyo, kampuni inapoteza faida zote za mfumo wa mkutano wa kila siku wa mradi.

Inatafuta muundo ulioshindwa

Katika kesi ya ujenzi wa kila siku wa mradi, inachukuliwa kuwa mradi unapaswa kufanya kazi. Walakini, ikiwa mradi utageuka kuwa haufanyi kazi, basi kuurekebisha inakuwa kazi iliyopewa kipaumbele 1.

Kila mradi una kiwango chake na ishara ya kile kinachoitwa "kuvunjika wakati wa mkusanyiko." Kiwango hiki kinapaswa kuweka kiwango cha ubora ambacho kinatosha kufuatilia kasoro ndogo na si kupuuza kasoro ambazo "zinazuia" mradi.

Muundo mzuri ni ule ambao una angalau:

  • faili zote, maktaba na vipengele vingine vimeundwa kwa ufanisi;
  • viungo kwa faili zote, maktaba na vipengele vingine ni halali;
  • haina makosa yoyote ya mfumo thabiti ambayo hayajumuishi uwezekano wa operesheni sahihi ya programu;
  • Vipimo vyote vya moshi hupita.

Vipimo vya kila siku vya moshi

Vipimo vya moshi lazima vifanywe kwenye mradi mzima kuanzia mwanzo hadi mwisho. Hazihitaji kuwa kamilifu au za kina, lakini zinapaswa kujumuisha jaribio la vipengele vyote vya kimsingi. Upimaji wa moshi unapaswa kuwa wa kina cha kutosha ili, ikiwa umefanikiwa, mradi unaweza kuitwa kuwa thabiti na unaweza kuitwa ambao unaweza kuwa chini ya majaribio ya kina.

Hatua ya mkusanyiko wa kila siku inapotea bila kupima moshi. Utaratibu huu unalinda ubora wa bidhaa na hairuhusu matatizo yoyote ya kuunganisha. Bila hii, mchakato wa ujenzi wa kila siku ni kupoteza muda, madhumuni yake ni kuangalia mkusanyiko.

Upimaji wa moshi unapaswa kuendelezwa kwa kiwango sawa na mradi huo. Hapo mwanzo, majaribio ya moshi yataangalia kitu rahisi, kama vile kama mradi unaweza kutoa "Hujambo, Ulimwengu!" Mfumo unapokua, vipimo vya moshi huwa vya kina zaidi. Muda uliotumika kwenye vipimo vya kwanza vya moshi huhesabiwa kwa sekunde chache, lakini mfumo unapokua, muda unaohitajika kwa kupima moshi pia huongezeka. Mwishoni mwa mradi, upimaji wa moshi unaweza kudumu kwa saa.

Kufafanua kikundi cha kujenga

Katika miradi mingi, kuna mtu mahususi anayehusika na kukagua muundo wa kila siku wa mfumo na kufanya majaribio ya moshi. Kazi hii ni sehemu ya majukumu ya mfanyakazi huyu, lakini kwenye miradi mikubwa kunaweza kuwa na wafanyikazi zaidi na kazi kama hiyo ndio jukumu lao kuu. Kwa mfano, timu ya ujenzi wa mradi wa Windows NT 3.0 ilikuwa na watu wanne (Pascal Zachary, Showstopper!, The Free Press, 1994).

Ongeza tu marekebisho kwenye muundo ikiwa inaeleweka

Kwa kawaida, wasanidi programu binafsi huandika msimbo polepole vya kutosha ili kuruhusu mabadiliko ya maana kuongezwa kwenye mfumo kila siku. Wanapaswa kufanya kazi kwa sehemu kubwa ya msimbo na kuiunganisha kwenye mfumo kila siku chache.

Tambulisha mfumo wa adhabu kwa kushindwa kutoa muundo unaofuata (kutolewa kwa jengo lisilofanya kazi).

Miradi mingi ina mfumo wa faini kwa kushindwa kutoa muundo unaofuata. Mwanzoni mwa mradi, inafaa kuweka wazi kuwa kudumisha muundo wa kufanya kazi ndio kipaumbele cha juu. Kukosa kutoa muundo unaofuata kunaweza kuwa ubaguzi, lakini sio sheria. Kusisitiza kwamba watengenezaji waache kila kitu hadi mfumo ufanye kazi tena. Katika kesi ya kushindwa kwa ujenzi wa mara kwa mara (kutolewa kwa jengo lisilo la kufanya kazi), ni vigumu sana kurejesha mradi kwa kawaida.

Angazia faini ndogo shahada ya juu haja ya kufuatilia ubora wa mkusanyiko wa mfumo. Katika baadhi ya miradi, watengenezaji ambao kosa la mkusanyiko linashindwa hupewa lollipops kwa kutoa mkusanyiko uliovunjika. Ishara inayolingana hutegemea mlango wa ofisi ya msanidi programu hadi atakaporekebisha kusanyiko (mradi tu watengenezaji wana ofisi tofauti :)). Katika miradi mingine, watengenezaji hatia lazima wavae pembe za mbuzi bandia au wachangie kiasi fulani kwa "hazina ya maadili" (mifano iliyochukuliwa kutoka kwa historia ya kampuni halisi).

Lakini katika baadhi ya miradi adhabu kubwa zaidi huletwa. Kwa mfano, watengenezaji wa Microsoft wanaofanya kazi kwenye miradi ya kipaumbele (Windows NT, Windows 95, Excel) walivaa paja na, ikiwa ukaguzi uligunduliwa, walipaswa kuripoti kazini. Hata kama uchanganuzi au hitilafu iligunduliwa saa 3 asubuhi.

Kusanya mfumo na "kuvuta" hata chini ya shinikizo

Shinikizo la ratiba ya kutolewa kwa mradi linapoongezeka, kazi ya kuangalia muundo wa mfumo kila siku inaweza kuonekana kama kupoteza muda. Hata hivyo, hii si kweli. KATIKA hali zenye mkazo watengenezaji mara nyingi hufanya makosa. Wanahisi shinikizo la kutoa utekelezaji ambao haungekuwepo katika hali ya kawaida. Wanaangalia nambari zao na majaribio ya kitengo kwa uangalifu mdogo kuliko kawaida. Katika hali kama hizi, msimbo huelekea katika hali ya entropy haraka sana kuliko katika hali zenye mkazo kidogo.

Nani anafaidika na mchakato huu? Watengenezaji wengine hupinga ujenzi wa kila siku, wakihalalisha maandamano yao kwa kutowezekana kwa shughuli hii na uwekezaji wake mkubwa wa wakati. Lakini mifumo yote ngumu ya marehemu imekuwa chini ya mkusanyiko wa kila siku na upimaji wa moshi. Kufikia wakati wa kutolewa kwake, Microsoft Windows NT 3.0 ilikuwa na laini milioni 5.6 katika faili 40,000. Ujenzi kamili ulichukua masaa 19 na ulifanyika kwenye kompyuta nyingi. Licha ya hili, watengenezaji waliweza kukusanya mfumo kila siku. Kama timu ya kitaaluma, timu ya maendeleo ya NT inadaiwa mengi ya mafanikio yake kwa ujenzi wake wa kila siku. Wale watengenezaji wanaofanya kazi kwenye miradi isiyo ngumu na kwa hivyo hawachukui fursa ya mchakato wa kila siku wa ujenzi wanapaswa kuzingatia kuja na maelezo kadhaa yanayofaa.

Habari, Habr! Mara moja kwenye semina yetu ya ndani, msimamizi wangu, mkuu wa idara ya upimaji, alianza hotuba yake kwa maneno "kupima hakuhitajiki." Kila mtu ndani ya ukumbi alinyamaza, wengine walijaribu kuanguka kutoka kwenye viti vyao. Aliendelea na mawazo yake: bila kupima, inawezekana kabisa kuunda mradi mgumu na wa gharama kubwa. Na uwezekano mkubwa itafanya kazi. Lakini fikiria ni kiasi gani utajiamini zaidi ukijua kuwa bidhaa inafanya kazi inavyopaswa.

Huko Badoo, matoleo hutokea mara kwa mara. Kwa mfano, sehemu ya seva, pamoja na wavuti ya desktop, inatolewa mara mbili kwa siku. Kwa hivyo tunajua moja kwa moja kuwa majaribio changamano na ya polepole ni kikwazo cha maendeleo. Mtihani wa haraka ni baraka. Kwa hiyo, leo nitazungumzia jinsi upimaji wa moshi unavyopangwa katika Badoo.

Mtihani wa moshi ni nini

Neno hili lilitumiwa kwanza na watunga jiko, ambao, baada ya kukusanya jiko, walifunga plugs zote, wakaifurika na kuhakikisha kuwa moshi ulikuja tu kutoka kwa maeneo yaliyopangwa. Wikipedia

Katika utumizi wake wa asili, upimaji wa moshi unakusudiwa kujaribu kesi rahisi na dhahiri zaidi, bila ambayo aina nyingine yoyote ya majaribio itakuwa ya ziada bila sababu.

Hebu tuangalie mfano rahisi. Toleo la awali la utayarishaji wa programu yetu liko kwenye bryak.com (ufanano wowote na tovuti halisi ni wa kubahatisha). Tumetayarisha na kupakia toleo jipya huko kwa ajili ya majaribio. Unapaswa kuangalia nini kwanza? Ningeanza kwa kuangalia kuwa programu bado inafunguliwa. Ikiwa seva ya wavuti inatujibu "200", basi kila kitu ni sawa na tunaweza kuanza kuangalia utendaji.

Jinsi ya kufanya ukaguzi kama huo otomatiki? Kimsingi, unaweza kuandika jaribio la kufanya kazi ambalo litainua kivinjari, fungua ukurasa unaotaka na uhakikishe kuwa unaonyeshwa kama inavyotarajiwa. Walakini, suluhisho hili lina shida kadhaa. Kwanza, ni ndefu: mchakato wa kuzindua kivinjari utachukua muda mrefu kuliko uthibitishaji yenyewe. Pili, hii inahitaji kudumisha miundombinu ya ziada: kwa ajili ya hili mtihani rahisi tutahitaji kuweka seva na vivinjari mahali fulani. Hitimisho: tunahitaji kutatua tatizo tofauti.

Mtihani wetu wa kwanza wa moshi

Katika Badoo, upande wa seva umeandikwa zaidi katika PHP. Kwa sababu za wazi, vipimo vya kitengo vimeandikwa ndani yake. Kwa hivyo tayari tunayo PHPUnit. Ili sio kuzidisha teknolojia bila lazima, tuliamua kuandika vipimo vya moshi pia katika PHP. Mbali na PHPUnit, tutahitaji maktaba ya mteja kwa kufanya kazi na URLs (libcurl) na kiendelezi cha PHP kwa kufanya kazi nayo - cURL.

Kimsingi, majaribio hufanya tu maombi tunayohitaji kwa seva na kuangalia majibu. Kila kitu kimefungwa kwa njia ya getCurlResponse() na aina kadhaa za madai.

Mbinu yenyewe inaonekana kama hii:

Kitendaji cha umma getCurlResponse($url, array $params = [ 'cookies' => , 'post_data' => , 'headers' => , 'user_agent' => , 'proxy' => , ], $follow_location = true, $ expect_response = '200 OK') ( $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); ikiwa (isset( $params['cookies']) && $params['cookies']) ( $cookie_line = $this->prepareCookiesDataByArray($params['cookies']); curl_setopt($ch, CURLOPT_COOKIE, $cookie_line); ) ikiwa ( isset($params['headers']) && $params['headers']) ( curl_setopt($ch, CURLOPT_HTTPHEADER, $params['headers']); ) ikiwa (isset($params['post_data']) && $params['post_data']) ( $post_line = $this->preparePostDataByArray($params['post_data']); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $post_line); ) ikiwa ($follow_location) ( curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); ) ikiwa (isset($params['proxy']) && $params['proxy']) ( curl_setopt($ch, CURLOPT_PROXY, $params['proksi) ']);
) ikiwa (isset($params['user_agent']) && $params['user_agent']) ( $user_agent = $params['user_agent']; ) vinginevyo ( $user_agent = USER_AGENT_DEFAULT; ) curl_setop($ch, CURLOPT_USERAGENT, $ wakala_wa_mtumiaji);

curl_setopt($ch, CURLOPT_AUTOREFERER, 1);

$response = curl_exec($ch);

Jaribio la utendakazi wa ummaStartPage() ( $url = ‘bryak.com’; $response = $this->getCurlResponse($url); $this->assertHTMLPresent("
Jaribio hili huchukua chini ya sekunde. Wakati huu, tulithibitisha kuwa ukurasa wa mwanzo unajibu "200" na una kipengele cha mwili. Kwa mafanikio sawa, tunaweza kupima idadi yoyote ya vipengele kwenye ukurasa, muda wa mtihani hautabadilika sana.

Faida za majaribio kama haya:

  • kasi - mtihani unaweza kuendeshwa mara nyingi inapohitajika. Kwa mfano, kwa kila mabadiliko ya kanuni;
  • hauhitaji programu maalum au vifaa kufanya kazi;
  • wao ni rahisi kuandika na kudumisha;
  • wako imara.
Kuhusu hatua ya mwisho. Namaanisha sio imara kuliko mradi wenyewe.

Uidhinishaji

Hebu fikiria kwamba siku tatu zimepita tangu tulipoandika mtihani wetu wa kwanza wa moshi. Bila shaka, wakati huu tulifunika kurasa zote zisizoidhinishwa tulizopata na vipimo. Tulikaa kwa muda, tukafurahi, lakini tukagundua kuwa vitu vyote muhimu zaidi katika mradi wetu viko nyuma ya idhini. Ninawezaje kupata fursa ya kujaribu hii pia?

Chaguo rahisi ni kidakuzi cha idhini. Ikiwa tutaiongeza kwa ombi, seva "itatutambua". Kidakuzi kama hicho kinaweza kuwekwa msimbo ngumu katika jaribio ikiwa muda wake wa kuishi ni mrefu sana, au kinaweza kupatikana kiotomatiki kwa kutuma maombi kwa ukurasa wa uidhinishaji. Hebu tuangalie kwa karibu chaguo la pili.

Tunavutiwa na fomu ambayo tunahitaji kuingiza kuingia kwa mtumiaji na nenosiri.

Fungua ukurasa huu kwenye kivinjari chochote na ufungue mkaguzi. Ingiza data ya mtumiaji na uwasilishe fomu.

Ombi limeonekana katika mkaguzi, ambalo tunahitaji kuiga katika mtihani. Unaweza kuona ni data gani, pamoja na dhahiri (kuingia na nenosiri), inatumwa kwa seva. Ni tofauti kwa kila mradi: inaweza kuwa ishara ya mbali, data kutoka kwa vidakuzi vyovyote vilivyopokelewa mapema, wakala wa mtumiaji, na kadhalika. Kila moja ya vigezo hivi italazimika kupatikana kwanza kwenye jaribio kabla ya kutoa ombi la uidhinishaji.

Katika zana za msanidi wa kivinjari chochote, unaweza kunakili ombi kwa kuchagua nakala kama cURL. Katika fomu hii, amri inaweza kuingizwa kwenye console na kutazamwa huko. Huko unaweza kuijaribu kwa kubadilisha au kuongeza vigezo.

Kwa kujibu ombi kama hilo, seva itaturudishia vidakuzi, ambavyo tutaongeza kwa maombi zaidi ili kujaribu kurasa zilizoidhinishwa.

Kwa kuwa idhini ni mchakato mrefu, ninapendekeza kupata kidakuzi cha idhini mara moja tu kwa kila mtumiaji na kuihifadhi mahali pengine. Kwa mfano, tunahifadhi vidakuzi vile katika safu. Ufunguo ni kuingia kwa mtumiaji, na thamani ni habari kuwahusu. Ikiwa bado hakuna ufunguo wa mtumiaji anayefuata, ingia. Ikiwa kuna, tunatoa ombi ambalo linatuvutia mara moja.

Jaribio la utendakazi wa ummaAuthPage() ( $url = ‘bryak.com’; $cookies = $this->getAuthCookies(‘ [barua pepe imelindwa]', '12345'); $response = $this->getCurlResponse($url, [‘cookies’ => $cookies]);
$this->assertHTMLPresent("

", $response, "Hitilafu: jaribio haliwezi kupata kipengele cha mwili kwenye ukurasa.");)
Kama tunavyoona, njia imeongezwa ambayo hupokea kidakuzi cha uidhinishaji na kuiongeza kwa ombi zaidi. Njia yenyewe inatekelezwa kwa urahisi kabisa:

Utendakazi wa umma getAuthCookies($email, $password) ( // angalia ikiwa kidakuzi tayari kimepata Ikiwa (array_key_exist($email, self::$known_cookies)) ( return self::$known_cookies[$email]; ) $url = binafsi::DOMAIN_STAGING '/auth_page_adds' $post_data = ['email' => $email, 'password' => $response = $this->getCurlResponse($url, ['post_data' => $ post_data]); $cookies = $this->parseCookiesFromResponse($response) kwa matumizi zaidi binafsi::$known_cookies[$email] = $cookies;
Mbinu hukagua kwanza ikiwa barua pepe uliyopewa (kwa upande wako inaweza kuwa kuingia au kitu kingine) ina kidakuzi cha uidhinishaji kilichopokelewa hapo awali. Ikiwa iko, anairudisha. Ikiwa sivyo, hufanya ombi kwa ukurasa wa idhini (kwa mfano, bryak.com/auth_page_adds) na vigezo muhimu: barua pepe ya mtumiaji na nenosiri. Kwa kujibu ombi hili, seva hutuma vichwa, kati ya ambavyo ni vidakuzi ambavyo tunavutiwa navyo. Inaonekana kitu kama hiki:

HTTP/1.1 200 Sawa Seva: nginx Aina ya Maudhui: maandishi/html; charset=utf-8 Uhamishaji-Usimbaji: umekatwa Muunganisho: weka-hai Set-Cookie: jina=thamani; expires=Wed, 30-Nov-2016 10:06:24 GMT; Umri wa Juu=-86400; njia=/; domain=bryak.com
Kutoka kwa vichwa hivi, kwa kutumia usemi rahisi wa kawaida, tunahitaji kupata jina la kuki na thamani yake (kwa mfano wetu ni jina = thamani). Njia yetu inayochanganua majibu inaonekana kama hii:

Uchambuzi wa majaribio yaliyofeli

Kutoka hapo juu inafuata kwamba mtihani huo ni seti ya maombi kwa seva. Tunafanya ombi, kuendesha jibu, kufanya ombi linalofuata, na kadhalika. Wazo linaingia kichwani mwangu: ikiwa jaribio kama hilo litashindwa kwa ombi la kumi, inaweza kuwa sio rahisi kujua sababu ya kutofaulu kwake. Jinsi ya kurahisisha maisha yako?

Kwanza kabisa, ningependa kushauri vipimo vya atomizing iwezekanavyo. Haupaswi kupima kesi 50 tofauti katika jaribio moja. Mtihani rahisi zaidi, itakuwa rahisi zaidi katika siku zijazo.

Pia ni muhimu kukusanya mabaki. Jaribio letu likishindwa, huhifadhi jibu la hivi punde la seva kwa faili ya HTML na kuitupa kwenye hifadhi ya vizalia vya programu, ambapo faili hii inaweza kufunguliwa kutoka kwa kivinjari kwa kubainisha jina la jaribio.

Kwa mfano, jaribio letu halikufaulu kwa sababu halikuweza kupata kipande cha HTML kwenye ukurasa:

Kiungo
Tunaenda kwa mtoza wetu na kufungua ukurasa unaolingana:

Unaweza kufanya kazi na ukurasa huu kama ukurasa mwingine wowote wa HTML kwenye kivinjari chako. Unaweza kutumia kitambulisho cha CSS ili kujaribu kutafuta kipengele kinachokosekana na, ikiwa hakipo, amua kwamba kimebadilika au kimepotea. Huenda tumepata mdudu! Ikiwa kipengele kiko mahali, labda tulifanya makosa mahali fulani kwenye mtihani - tunahitaji kuangalia kwa makini katika mwelekeo huo.

Kuweka kumbukumbu pia husaidia kurahisisha maisha. Tunajaribu kuweka maombi yote yaliyotolewa na jaribio lisilofaulu ili ziweze kurudiwa kwa urahisi. Kwanza, hii inakuwezesha kufanya haraka seti ya vitendo sawa na mikono yako ili kuzalisha kosa, na pili, inakuwezesha kutambua vipimo vya kushindwa mara kwa mara, ikiwa tunayo.

Mbali na kutusaidia kutatua hitilafu, kumbukumbu zilizoelezwa hapo juu hutusaidia kuunda orodha ya kurasa zilizoidhinishwa na zisizoidhinishwa ambazo tumejaribu. Kwa kuiangalia, ni rahisi kupata na kuondoa mapungufu.

Jambo la mwisho lakini sio dogo ninaloweza kushauri ni kwamba vipimo vinapaswa kuwa rahisi iwezekanavyo. Kadiri zinavyokuwa rahisi kuzindua, ndivyo zitatumika mara nyingi zaidi. Ripoti ya wazi na ya ufupi zaidi ya kuanguka, itasomwa kwa uangalifu zaidi. Urahisi wa usanifu, vipimo zaidi vitaandikwa na muda mdogo itachukua kuandika mpya.

Ikiwa unafikiri kuwa kutumia vipimo ni vigumu, uwezekano mkubwa huna. Hili linahitaji kushughulikiwa haraka iwezekanavyo. Vinginevyo, una hatari wakati fulani kuanza kulipa kipaumbele kidogo kwa majaribio haya, na hii inaweza kusababisha kosa kukosekana katika uzalishaji.

Kwa maneno wazo linaonekana wazi, nakubali. Lakini kwa kweli, sote tuna nafasi ya kuboresha. Kwa hivyo rahisisha na uboresha ubunifu wako na uishi bila hitilafu. :)

Matokeo

Washa kwa sasa Tunayo *TimCity* iliyofunguliwa* wow, tayari majaribio 605. Vipimo vyote, ikiwa havifanyiki sambamba, hupita kwa chini ya dakika nne.

Katika kipindi hiki tunahakikisha kwamba:

  • mradi wetu unafungua kwa lugha zote (ambazo tuna zaidi ya 40 katika uzalishaji);
  • kwa nchi kuu, njia sahihi za malipo zinaonyeshwa na seti inayolingana ya njia za malipo;
  • maombi ya msingi ya API hufanya kazi kwa usahihi;
  • ukurasa wa kutua kwa uelekezaji upya hufanya kazi kwa usahihi (pamoja na tovuti ya rununu iliyo na wakala anayefaa wa mtumiaji);
  • miradi yote ya ndani inaonyeshwa kwa usahihi.
Majaribio kwenye Selenium WebDriver kwa haya yote yangehitaji muda na rasilimali mara nyingi zaidi.

Ongeza vitambulisho Baada ya kufanya mabadiliko yanayohitajika, kama vile kurekebisha hitilafu/kasoro, programu lazima ijaribiwe tena ili kuthibitisha kwamba tatizo limetatuliwa. Zifuatazo ni aina za upimaji ambazo lazima zifanyike baada ya ufungaji: programu

- , ili kuthibitisha utendakazi wa programu au usahihi wa marekebisho ya kasoro: Uchunguzi wa moshi

- (Upimaji wa Moshi) Mtihani wa kurudi nyuma

- (Jaribio la kurudi nyuma) Kujaribu muundo

- (Jenga Jaribio la Uthibitishaji) Upimaji wa usafi au ukaguzi wa uthabiti/utendaji

(Mtihani wa Usafi) Dhana kupima moshi ilitoka kwa mazingira ya uhandisi. Wakati wa kuagiza vifaa vipya ("vifaa"), ilionekana kuwa upimaji ulifanikiwa ikiwa hakuna moshi uliotoka kwenye ufungaji. Katika uwanja wa upimaji wa programu, inalenga ukaguzi wa juu juu wa moduli zote za utendakazi na uwepo wa kasoro muhimu na za kuzuia zilizopatikana haraka. Kulingana na matokeo ya mtihani wa moshi, hitimisho hufanywa ikiwa bidhaa inakubaliwa au la. toleo lililowekwa

(Upimaji wa Moshi) programu ya majaribio, uendeshaji au utoaji kwa mteja. Ili kurahisisha kazi, kuokoa muda na wafanyakazi, inashauriwa kutekeleza uwekaji hati otomatiki wa majaribio kwa ajili ya kupima moshi. ni aina ya majaribio yenye lengo la kuthibitisha mabadiliko yaliyofanywa kwa programu au mazingira (kurekebisha kasoro, kuunganisha msimbo, kuhamia nyingine, hifadhidata, seva ya wavuti au seva ya programu) ili kuthibitisha kwamba utendakazi uliokuwepo hufanya kazi kama hapo awali (tazama pia Jaribio la Usafi au ukaguzi wa uthabiti). Marekebisho yanaweza kuwa kama kazi, hivyo na yasiyo ya kazi vipimo.

Kama sheria, kesi za majaribio zilizoandikwa katika hatua za mwanzo za ukuzaji na upimaji hutumiwa kwa upimaji wa rejista. Hii inahakikisha kuwa mabadiliko ya toleo jipya maombi hayakuharibu utendakazi uliopo. Inashauriwa kufanya vipimo vya urejeshaji kiotomatiki ili kuharakisha mchakato wa upimaji unaofuata na kugundua kasoro katika hatua za mwanzo za ukuzaji wa programu.

Neno "majaribio ya kurudi nyuma" yenyewe, kulingana na muktadha wa matumizi, inaweza kuwa na maana tofauti. Sam Kaner, kwa mfano, alielezea 3 aina kuu mtihani wa kurudi nyuma:

- Urejeshaji wa mdudu- jaribio la kudhibitisha kuwa kosa lililosahihishwa halijasahihishwa.

- Urejeshaji wa mende wa zamani- jaribio la kuthibitisha kwamba mabadiliko ya hivi karibuni katika kanuni au data yalivunja marekebisho ya makosa ya zamani, i.e. mende wa zamani walianza kuonekana tena.


- Urejeshaji wa athari- jaribio la kuthibitisha kuwa mabadiliko ya hivi majuzi katika msimbo au data yalivunja sehemu nyingine za programu inayotengenezwa.

Uchunguzi wa Usafi - Hili ni jaribio lenye umakini mkubwa ambalo linatosha kuthibitisha kuwa kipengele fulani hufanya kazi kama ilivyobainishwa katika vipimo. Ni sehemu ndogo ya majaribio ya urekebishaji. Inatumika kuamua utendakazi wa sehemu fulani ya programu baada ya mabadiliko kufanywa kwayo au mazingira. Kawaida hufanywa kwa mikono.

Tofauti kati ya upimaji wa usafi na upimaji wa moshi. Vyanzo vingine vinaamini kimakosa kwamba upimaji wa usafi na moshi ni kitu kimoja. Tunaamini kwamba aina hizi za majaribio zina "vekta za harakati", maelekezo katika mwelekeo tofauti. Tofauti na upimaji wa moshi, upimaji wa Usafi huelekezwa kwa kina kwa kazi inayojaribiwa, huku upimaji wa moshi ukielekezwa kwa upana, ili kufidia utendakazi mwingi iwezekanavyo na majaribio katika muda mfupi iwezekanavyo.

(Jaribio la kurudi nyuma) Jaribio la Uthibitishaji wa Muundo ni jaribio linalolenga kubainisha utiifu wa toleo lililotolewa lenye vigezo vya ubora ili kuanza kufanya majaribio. Kwa mujibu wa malengo yake, ni sawa na Upimaji wa Moshi, unaolenga kukubali toleo jipya kwa ajili ya majaribio zaidi au uendeshaji. Inaweza kupenya zaidi, kulingana na mahitaji ya ubora wa toleo iliyotolewa.

Jaribio la Ufungaji - inayolenga kuthibitisha usakinishaji na usanidi uliofaulu, pamoja na kusasisha au kusanidua programu. KATIKA wakati uliopo Ufungaji wa programu ya kawaida ni kutumia wasakinishaji (programu maalum, ambayo wenyewe pia yanahitaji kupima sahihi). Katika hali halisi, kunaweza kuwa hakuna wasakinishaji. Katika kesi hii, utakuwa na kufunga programu mwenyewe, kwa kutumia nyaraka kwa namna ya maelekezo au faili za kusoma ambazo zinaelezea hatua kwa hatua vitendo vyote muhimu na hundi. Katika mifumo iliyosambazwa, ambapo programu inatumiwa kwenye mazingira tayari ya uendeshaji, seti rahisi ya maagizo inaweza kuwa haitoshi. Ili kufanya hivyo, mpango wa usakinishaji mara nyingi huandikwa (Mpango wa Upelekaji), ambao haujumuishi tu hatua za kusanikisha programu, lakini pia hatua za kurudi nyuma. toleo la awali, katika kesi ya kushindwa. Mpango wa ufungaji yenyewe lazima pia ufanyike utaratibu wa kupima ili kuepuka matatizo wakati unapowekwa katika uendeshaji halisi. Hii ni kweli hasa ikiwa ufungaji unafanywa kwenye mifumo ambapo kila dakika ya kupungua ni kupoteza sifa na kiasi kikubwa fedha, kwa mfano: benki, makampuni ya fedha au hata mitandao ya mabango. Kwa hiyo, upimaji wa ufungaji unaweza kuitwa moja ya kazi muhimu zaidi juu ya uhakikisho wa ubora wa programu.

Ni mbinu hii ya kina yenye mipango ya kuandika, majaribio ya hatua kwa hatua ya usakinishaji na urejeshaji wa usakinishaji ambayo inaweza kuitwa kwa usahihi majaribio ya usakinishaji au Majaribio ya Usakinishaji.