Jaribio la ujumuishaji kwa kutumia mradi halisi kama mfano. Mtihani wa ujumuishaji

Jisajili
Jiunge na jumuiya ya "koon.ru"!
Kuwasiliana na:

Mtihani wa ufundishaji

Mtihani wa ufundishaji hufafanuliwa kama mfumo wa majukumu ya yaliyomo fulani, ya kuongezeka kwa ugumu, ya fomu maalum, ambayo inaruhusu mtu kupima kwa ubora na kwa ufanisi kiwango na kutathmini muundo wa utayari wa wanafunzi. Katika mtihani wa ufundishaji, kazi hupangwa kwa utaratibu wa ugumu unaoongezeka - kutoka rahisi hadi ngumu zaidi.

Mtihani wa kujumuisha

Mtihani wa kujumuisha unaweza kuitwa mtihani unaojumuisha mfumo wa kazi unaokidhi mahitaji ya yaliyomo muunganisho, fomu ya mtihani, na kuongezeka kwa ugumu wa kazi zinazolenga utambuzi wa mwisho wa utayari wa mhitimu wa taasisi ya elimu.

Utambuzi unafanywa kwa kuwasilisha kazi kama hizo, majibu sahihi ambayo yanahitaji maarifa yaliyojumuishwa (ya jumla, yanayohusiana wazi) katika uwanja wa taaluma mbili au zaidi za kitaaluma. Uundaji wa vipimo hivyo hutolewa tu kwa wale walimu ambao wana ujuzi wa idadi ya taaluma za kitaaluma na kuelewa jukumu muhimu miunganisho ya taaluma mbalimbali katika kujifunza, wana uwezo wa kuunda kazi, majibu sahihi ambayo yanahitaji wanafunzi kuwa na ujuzi wa taaluma mbalimbali na uwezo wa kutumia ujuzi huo. Upimaji wa kuunganisha unatanguliwa na shirika la mafunzo ya ushirikiano. Kwa bahati mbaya, aina ya sasa ya somo la darasa la kufanya madarasa, pamoja na mgawanyiko mkubwa wa taaluma za kitaaluma, pamoja na mila ya kufundisha taaluma za mtu binafsi (badala ya kozi za jumla), kwa muda mrefu itazuia utekelezaji wa mbinu shirikishi katika michakato. maandalizi ya kujifunza na ufuatiliaji.

Faida ya majaribio shirikishi juu ya yale tofauti-tofauti iko katika maudhui ya habari zaidi ya kila kazi na katika idadi ndogo ya kazi zenyewe.

Mbinu ya kuunda vipimo vya ujumuishaji ni sawa na mbinu ya kuunda vipimo vya jadi, isipokuwa kazi ya kuamua yaliyomo kwenye kazi. Ili kuchagua maudhui ya vipimo vya kuunganisha, matumizi ya mbinu za wataalam ni lazima.

Mtihani wa Adaptive

Jaribio la kubadilika hufanya kazi kama mkaguzi mzuri. Kwanza, "anauliza" swali la ugumu wa wastani, na jibu linalotokana ni tathmini mara moja. Ikiwa jibu ni sahihi, basi tathmini ya uwezo wa mtumaji mtihani huongezeka. Katika kesi hii, swali ngumu zaidi linaulizwa. Mwanafunzi akijibu swali kwa mafanikio, linalofuata linachaguliwa kuwa gumu zaidi; ikiwa halijafaulu, linalofuata linachaguliwa kuwa rahisi zaidi.

Faida kuu ya mtihani wa kurekebisha juu ya jadi ni ufanisi. Jaribio wasilianifu linaweza kubainisha kiwango cha maarifa cha mjaribu kwa maswali machache (wakati mwingine urefu wa jaribio hupunguzwa hadi 60%).

Katika jaribio la kubadilika, kwa wastani, una muda mwingi wa kufikiria kuhusu kila swali kuliko katika jaribio la kawaida. Kwa mfano, badala ya kuchukua dakika 2 kwa kila swali, mtumaji mtihani anaweza kuwa na dakika 3 au 4 (kulingana na maswali mangapi anayohitaji kujibu).

Kuegemea kwa matokeo ya jaribio la kubadilika sanjari na kuegemea kwa majaribio ya urefu usiobadilika. Aina zote mbili za majaribio kwa usawa hutathmini kiwango cha maarifa.

Hata hivyo, inaaminika sana kwamba mtihani wa kukabiliana ni tathmini sahihi zaidi ya ujuzi. Hii si kweli.

Jumla ya maombi. Lakini kati ya hatua hizi mbili za kupima, wengine hutokea. Mimi, kama wengine wengi, huita ujumuishaji wa majaribio kama haya.

Maneno machache kuhusu istilahi

Baada ya kuongea mengi na wapenda maendeleo wanaoendeshwa na majaribio, nilifikia hitimisho kwamba wana ufafanuzi tofauti wa neno "majaribio ya ujumuishaji." Kwa maoni yao, jaribio la ujumuishaji hujaribu nambari ya "nje", ambayo ni, ile inayoingiliana na "ulimwengu wa nje", ulimwengu wa programu.

Kwa hivyo ikiwa nambari zao zinatumia Ajax au LocalStorage au IndexedDB na kwa hivyo haziwezi kujaribiwa na majaribio ya kitengo, wao hufunika utendakazi huo kwenye kiolesura na kudhihaki kiolesura hicho cha majaribio ya kitengo, na kupima utekelezaji halisi wa kiolesura huitwa "jaribio la ujumuishaji" " Kwa mtazamo huu, "jaribio la kujumuisha" hujaribu tu msimbo unaoingiliana na "ulimwengu halisi" nje ya vitengo hivyo vinavyofanya kazi bila kuzingatia ulimwengu halisi.

Mimi, kama wengine wengi, huwa natumia neno "majaribio ya ujumuishaji" kurejelea majaribio ambayo hujaribu ujumuishaji wa vitengo viwili au zaidi (moduli, madarasa, n.k.). Haijalishi ikiwa unajificha ulimwengu halisi kupitia miingiliano iliyofungwa.

Sheria yangu ya kidole juu ya kutumia utekelezaji halisi Ajax na shughuli zingine za I/O (pembejeo/pato) katika majaribio ya ujumuishaji ni hii: ikiwa unaweza kuifanya na majaribio bado yanaendesha haraka na usifanye kwa kushangaza, basi jaribu I/O. Ikiwa operesheni ya I/O ni ngumu, polepole, au ya kushangaza tu, basi tumia vitu vya mzaha katika majaribio yako ya ujumuishaji.

Katika kikokotoo chetu, kwa bahati nzuri, I/O pekee halisi ni DOM. Hakuna simu za Ajax au sababu zingine za kuandika kejeli.

DOM bandia

Swali linatokea: ni muhimu kuandika DOM bandia katika vipimo vya ushirikiano? Tutumie sheria yangu. Kutumia DOM halisi kutafanya vipimo kuwa polepole? Kwa bahati mbaya, jibu ni ndiyo: kutumia DOM halisi ina maana ya kutumia kivinjari halisi, ambayo inafanya vipimo polepole na haitabiriki.

Je, tunatenganisha nambari nyingi za kuthibitisha kutoka kwa DOM au kujaribu kila kitu pamoja katika majaribio ya E2E? Chaguzi zote mbili sio bora. Kwa bahati nzuri, kuna suluhisho la tatu: jsdom. Kifurushi hiki kizuri na cha kushangaza hufanya kile unachotarajia kutoka kwake - kinatumia DOM katika NodeJS.

Inafanya kazi, ni haraka, inaendesha kwenye Node. Ikiwa unatumia zana hii, unaweza kuacha kutibu DOM kama "I/O". Na hii ni muhimu sana, kwa sababu kutenganisha DOM kutoka kwa msimbo wa mbele ni vigumu, ikiwa haiwezekani. (Kwa mfano, sijui jinsi ya kufanya hivyo.) Ninakisia kwamba jsdom iliandikwa mahsusi kwa ajili ya kuendesha majaribio ya frontend chini ya Node.

Hebu tuone jinsi inavyofanya kazi. Kama kawaida, kuna nambari ya uanzishaji na kuna nambari ya jaribio, lakini wakati huu tutaanza na nambari ya jaribio. Lakini kabla ya hapo, kurudi nyuma.

Rudi nyuma

Sehemu hii ni sehemu pekee ya mfululizo ambayo inazingatia mfumo maalum. Na mfumo niliochagua ni React. Si kwa sababu ni mfumo bora. Ninaamini kabisa kuwa hakuna kitu kama hicho. Sidhani hata kuna mifumo bora ya kesi maalum za utumiaji. Kitu pekee ninachoamini ni kwamba watu wanapaswa kutumia mazingira ambayo wanafanya kazi vizuri zaidi.

Na mfumo ambao nina raha kufanya kazi nao ni React, kwa hivyo nambari ifuatayo imeandikwa ndani yake. Lakini kama tutakavyoona, majaribio ya ujumuishaji wa mbele kwa kutumia jsdom inapaswa kufanya kazi katika mifumo yote ya kisasa.

Wacha turudi kutumia jsdom.

Kutumia jsdom

const React = hitaji("react") const e = React.createElement const ReactDom = hitaji("react-dom") const CalculatorApp = hitaji("../../lib/calculator-app") ... eleza( "sehemu ya programu ya kikokotoo", kitendakazi () ( ... it("inapaswa kufanya kazi", chaguo la kukokotoa () ( ReactDom.render(e(CalculatorApp), document.getElementById("container")) const displayElement = document.querySelector(" .onyesha") tarajia(displayElement.textContent).sawa("0")

Ya kuvutia ni mstari wa 10 hadi 14. Kwenye mstari wa 10 tunatoa kipengele cha CalculatorApp, ambacho (ikiwa umekuwa ukifuata msimbo kwenye hazina) pia hutoa Onyesho na vipengee vya Keypad.

Kisha tunaangalia kuwa katika mstari wa 12 na 14 kipengele kwenye DOM kinaonyesha thamani ya awali ya 0 kwenye onyesho la kikokotoo.

Na nambari hii, ambayo inaendesha chini ya Node, hutumia document ! Tofauti ya kimataifa ya hati ni tofauti ya kivinjari, lakini iko hapa katika NodeJS. Ili kufanya mistari hii ifanye kazi, idadi kubwa sana ya nambari inahitajika. Kiasi hiki kikubwa cha msimbo ambacho hukaa katika jsdom kimsingi ni utekelezaji kamili wa kila kitu kwenye kivinjari, ukiondoa uwasilishaji wenyewe!

Mstari wa 10, ambao huita ReactDom kutoa kijenzi, pia hutumia hati (na dirisha), kwa kuwa ReactDom huzitumia mara kwa mara katika msimbo wake.

Kwa hivyo ni nani anayeunda anuwai hizi za ulimwengu? Jaribio - wacha tuangalie nambari:

Kabla(kazi () ( global.document = jsdom(`

`) global.window = document.defaultView )) baada ya(kazi () (futa global.window delete global.document ))

Kwenye mstari wa 3 tunaunda hati rahisi ambayo ina div tu.

Kwenye mstari wa 4 tunaunda dirisha la kimataifa kwa kitu. React inahitaji hii.

Kitendaji cha kusafisha kitaondoa vigeu hivi vya kimataifa na hazitachukua kumbukumbu.

Kwa kweli, hati na vigezo vya dirisha haipaswi kuwa vya kimataifa. Vinginevyo, hatutaweza kufanya majaribio sambamba na majaribio mengine ya ujumuishaji, kwa sababu yote yatafuta vigezo vya kimataifa.

Kwa bahati mbaya, lazima ziwe za kimataifa - React na ReactDom zinahitaji hati na dirisha kuwa hivyo, kwani huwezi kuzipitisha.

Ushughulikiaji wa Tukio

Vipi kuhusu mtihani uliobaki? Hebu tuangalie:

ReactDom.render(e(CalculatorApp), document.getElementById("chombo") const displayElement = document.querySelector(".display") expect(displayElement.textContent).to.equal("0") const digit4Element = hati. querySelector(".digit-4") const digit2Element = document.querySelector(".digit-2") const operatorMultiply = document.querySelector(".operator-multiply") const operatorEquals = document.querySelector(".operator-equals" ) digit4Element.click() digit2Element.click() operatorMultiply.click() digit2Element.click() operatorEquals.click() expect(displayElement.textContent).sawa("84")

Jaribio lililosalia linajaribu hali ambapo mtumiaji anabofya "42 * 2 =" na anapaswa kupata "84".

Na anafanya hivyo kwa njia nzuri- hupata vipengele kwa kutumia kazi maarufu ya querySelector na kisha hutumia kubofya ili kubofya. Unaweza kuunda tukio na kulianzisha mwenyewe kwa kutumia kitu kama:

Var ev = Tukio jipya("keyup", ...); document.dispatchEvent(ev);

Lakini njia ya kubofya iliyojengwa inafanya kazi, kwa hiyo tunaitumia.

Rahisi sana!

Mwenye akili atagundua kuwa jaribio hili hukagua kitu sawa na mtihani wa E2E. Hii ni kweli, lakini kumbuka kuwa jaribio hili ni la haraka mara 10 na asili yake ni sawa. Ni rahisi zaidi kuandika na rahisi zaidi kusoma.

Kwa nini, ikiwa vipimo ni sawa, tunahitaji mtihani wa ujumuishaji? Naam, kwa sababu tu ni mradi wa elimu, si ile halisi. Vipengele viwili vinaunda programu nzima, kwa hivyo ujumuishaji na majaribio ya E2E hufanya vivyo hivyo. Lakini katika programu halisi, jaribio la E2E lina mamia ya moduli, wakati majaribio ya ujumuishaji yanajumuisha chache, labda moduli 10. Kwa hiyo katika maombi halisi kutakuwa na vipimo 10 vya E2E, lakini mamia ya vipimo vya ushirikiano.

Ufafanuzi: Muhadhara ni wa pili kati ya tatu unaoshughulikia viwango vya mchakato wa uthibitishaji. Mada ya somo hili ni mchakato wa upimaji wa ujumuishaji, kazi na malengo yake. Vipengele vya shirika vya upimaji wa ujumuishaji huzingatiwa - uainishaji wa kimuundo na wa muda wa mbinu za upimaji wa ujumuishaji, upangaji wa upimaji wa ujumuishaji. Kusudi la hotuba hii: kutoa wazo la mchakato wa upimaji wa ujumuishaji, vifaa vyake vya kiufundi na shirika

20.1. Malengo na malengo ya upimaji wa ujumuishaji

Matokeo ya majaribio na uthibitishaji wa moduli za kibinafsi zinazounda mfumo wa programu inapaswa kuwa hitimisho kwamba moduli hizi zinalingana ndani na zinatii mahitaji. Walakini, moduli za kibinafsi mara chache hufanya kazi peke yao, kwa hivyo kazi inayofuata baada ya kujaribu moduli za mtu binafsi ni kujaribu mwingiliano sahihi wa moduli kadhaa zilizojumuishwa kuwa moja. Aina hii ya majaribio inaitwa ushirikiano. Kusudi lake ni kuhakikisha kuwa vipengele vya mfumo vinafanya kazi kwa usahihi.

Mtihani wa ujumuishaji pia inaitwa upimaji wa usanifu wa mfumo. Kwa upande mmoja, jina hili ni kutokana na ukweli kwamba vipimo vya ushirikiano vinajumuisha hundi ya wote aina zinazowezekana mwingiliano kati ya moduli za programu na vipengele ambavyo vinafafanuliwa katika usanifu wa mfumo - hivyo huangalia vipimo vya ujumuishaji ukamilifu mwingiliano katika utekelezaji wa mfumo unaojaribiwa. Kwa upande mwingine, matokeo ya vipimo vya ushirikiano ni mojawapo ya vyanzo vikuu vya habari kwa ajili ya mchakato wa kuboresha na kufafanua usanifu wa mfumo, intermodule na interfaces intercomponent. Hiyo ni, kutoka kwa mtazamo huu, vipimo vya ujumuishaji huangalia usahihi mwingiliano wa vipengele vya mfumo.

Mfano wa kuangalia usahihi wa mwingiliano unaweza kuwa moduli mbili, moja ambayo hujilimbikiza ujumbe wa itifaki kuhusu faili zilizopokelewa, na ya pili inaonyesha itifaki hii kwenye skrini. Mahitaji ya utendaji ya mfumo yanasema kwamba ujumbe unapaswa kuonyeshwa kinyume mpangilio wa mpangilio. Hata hivyo, moduli ya hifadhi huhifadhi ujumbe kwa mpangilio wa mbele, na moduli ya pato hutumia mrundikano ili kuzitoa kwa mpangilio wa kinyume. Vipimo vya vipimo vinavyogusa kila moduli kibinafsi havitakuwa na athari hapa - hali tofauti inawezekana kabisa, ambayo ujumbe huhifadhiwa kwa mpangilio wa nyuma na matokeo kwa kutumia foleni. Tatizo linalowezekana linaweza tu kutambuliwa kwa kuangalia mwingiliano wa moduli kwa kutumia majaribio ya ujumuishaji. Jambo kuu hapa ni kwamba mfumo kwa ujumla hutoa ujumbe kwa mpangilio wa nyuma wa mpangilio, yaani, kwa kuangalia moduli ya towe na kugundua kuwa inatoa ujumbe kwa mpangilio wa mbele, hatuwezi kuthibitisha kwamba tumegundua kasoro.

Kama matokeo ya kufanya majaribio ya ujumuishaji na kuondoa kasoro zote zilizotambuliwa, usanifu thabiti na kamili hupatikana. mfumo wa programu, i.e. tunaweza kudhani kwamba upimaji wa ujumuishaji inajaribu usanifu na mahitaji ya utendaji wa kiwango cha chini.

Mtihani wa ujumuishaji, kama sheria, ni mchakato wa kurudia ambapo utendakazi wa seti inayoongezeka ya moduli hujaribiwa.

20.2. Shirika la upimaji wa ujumuishaji

20.2.1. Uainishaji wa kimuundo wa mbinu za upimaji wa ujumuishaji

Kama sheria, upimaji wa ujumuishaji unafanywa baada ya kukamilika kwa upimaji wa kitengo kwa moduli zote zilizojumuishwa. Hata hivyo, hii sio wakati wote. Kuna njia kadhaa za kufanya majaribio ya ujumuishaji:

  • upimaji wa chini juu;
  • mtihani wa monolithic;
  • mtihani wa juu-chini.

Mbinu hizi zote zinategemea ujuzi wa usanifu wa mfumo, ambao mara nyingi huonyeshwa kama michoro ya muundo au michoro za simu za kazi. Kila nodi kwenye mchoro kama huo inawakilisha moduli ya programu, na mishale kati yao inawakilisha utegemezi wa simu kati ya moduli. Tofauti kuu kati ya mbinu za upimaji wa ujumuishaji ni mwelekeo wa harakati kando ya michoro hizi na upana wa chanjo kwa kila marudio.

Mtihani wa chini-juu. Unapotumia njia hii, inadokezwa kuwa moduli zote za programu zilizojumuishwa kwenye mfumo zinajaribiwa kwanza na kisha tu zinaunganishwa kwa majaribio ya ujumuishaji. Kwa mbinu hii, ujanibishaji wa makosa hurahisishwa sana: ikiwa moduli zinajaribiwa kando, basi kosa wakati wao. kufanya kazi pamoja kuna tatizo na kiolesura chao. Kwa njia hii, eneo la utafutaji la mjaribu kwa matatizo ni nyembamba kabisa, na kwa hiyo uwezekano wa kutambua kwa usahihi kasoro ni kubwa zaidi.


Mchele. 20.1.

Hata hivyo, njia ya chini-juu upimaji una shida kubwa - hitaji la kukuza kiendeshi na vijiti vya upimaji wa kitengo kabla ya kufanya jaribio la ujumuishaji na hitaji la kukuza kiendeshi na vijiti wakati wa majaribio ya ujumuishaji wa sehemu ya moduli za mfumo (Mchoro 20.1)

Kwa upande mmoja, madereva na stubs ni chombo chenye nguvu cha kupima, kwa upande mwingine, maendeleo yao yanahitaji rasilimali muhimu, hasa wakati muundo wa moduli jumuishi hubadilika, kwa maneno mengine, seti moja ya madereva inaweza kuhitajika kwa ajili ya kupima kitengo cha kila mmoja. moduli, dereva tofauti na stubs kwa ajili ya kupima ushirikiano wa modules mbili kutoka kwa kuweka, moja tofauti - kwa kupima ushirikiano wa modules tatu, nk. Hii ni kwa sababu ya ukweli kwamba ujumuishaji wa moduli huondoa hitaji la vijiti kadhaa, na pia inahitaji mabadiliko ya kiendeshi ambayo inasaidia majaribio mapya yanayoathiri moduli nyingi.

Mtihani wa monolithic inapendekeza kuwa vipengele vya mtu binafsi vya mfumo havijafanyiwa majaribio makubwa. Faida kuu ya njia hii ni kutokuwepo kwa haja ya kuendeleza mazingira ya mtihani, madereva na stubs. Baada ya moduli zote kutengenezwa, ushirikiano wao unafanywa, basi mfumo kwa ujumla unajaribiwa. Njia hii haipaswi kuchanganyikiwa na upimaji wa mfumo, ambayo ni somo la hotuba inayofuata. Licha ya ukweli kwamba upimaji wa monolithic utaangalia uendeshaji wa mfumo mzima kwa ujumla, kazi kuu ya upimaji huu ni kutambua matatizo na mwingiliano wa modules za mfumo wa mtu binafsi. Kazi ya kupima mfumo ni kutathmini sifa za ubora na kiasi cha mfumo kutoka kwa mtazamo wa kukubalika kwao kwa mtumiaji wa mwisho.

Mtihani wa monolithic ina idadi ya hasara kubwa.

  • Ni vigumu sana kutambua chanzo cha kosa (tambua kipande cha msimbo potofu). Moduli nyingi zinapaswa kudhani kuwa kuna hitilafu. Shida inakuja kuamua ni makosa gani katika moduli zote zinazohusika yalisababisha matokeo. Hii inaweza kuanzisha athari za makosa. Kwa kuongeza, hitilafu katika moduli moja inaweza kuzuia majaribio ya nyingine.
  • Ni vigumu kupanga marekebisho ya hitilafu. Kama matokeo ya majaribio, anayejaribu hurekodi shida iliyopatikana. Hitilafu katika mfumo uliosababisha tatizo hili itarekebishwa na msanidi programu. Kwa kuwa, kama sheria, moduli zilizo chini ya mtihani zimeandikwa watu tofauti, tatizo linatokea - ni nani kati yao anayehusika na kutafuta na kuondoa kasoro hiyo? Kwa "kutowajibika kwa pamoja," kasi ya kuondoa kasoro inaweza kushuka kwa kasi.
  • Mchakato wa majaribio umejiendesha vibaya. Faida (hakuna programu ya ziada inayoambatana na mchakato wa kupima) inageuka kuwa hasara. Kila mabadiliko yanayofanywa yanahitaji kurudia majaribio yote.

Mtihani wa juu-chini inadhani kuwa mchakato wa majaribio ya ujumuishaji unafuata maendeleo. Kwanza, kiwango cha juu tu cha udhibiti wa mfumo kinajaribiwa, bila moduli zaidi kiwango cha chini. Kisha, hatua kwa hatua, zile za chini zimeunganishwa na moduli za kiwango cha juu. Kutokana na kutumia njia hii, hakuna haja ya madereva (jukumu la dereva linafanywa na moduli ya mfumo wa juu), lakini haja ya stubs inabakia (Mchoro 20.2).

Wataalamu tofauti wa kupima wana maoni tofauti kuhusu njia ambayo ni rahisi zaidi kwa majaribio halisi ya mifumo ya programu. Jordan anabisha kwamba mtihani wa juu-chini sahihi zaidi katika hali halisi ya maisha, na Myers anaamini kwamba kila mbinu ina faida na hasara zake, lakini kwa ujumla njia ya chini-juu ni bora zaidi.

Fasihi mara nyingi hutaja mbinu ya majaribio ya ujumuishaji ya mifumo ya programu inayolenga kitu, ambayo inategemea kutambua makundi ya madarasa ambayo kwa pamoja yana utendaji fulani funge na kamili. Kwa msingi wake, mbinu hii sio aina mpya ya upimaji wa ujumuishaji, inabadilika tu kipengele cha chini kutokana na kuunganishwa. Wakati wa kuunganisha moduli katika lugha za programu za utaratibu, unaweza kuunganisha idadi yoyote ya moduli, mradi tu stubs zinatengenezwa. Wakati wa kuunganisha madarasa katika makundi, kuna kizuizi kilicholegea kwa ukamilifu wa utendakazi wa nguzo. Walakini, hata katika kesi ya mifumo inayoelekezwa na kitu, inawezekana kuunganisha idadi yoyote ya madarasa kwa kutumia madarasa ya stub.

Bila kujali mbinu ya kupima ujumuishaji inayotumiwa, ni muhimu kuzingatia kiwango cha utendakazi wa mfumo kwa majaribio ya ujumuishaji. Kazi ilipendekeza mbinu ya kutathmini kiwango cha chanjo kulingana na simu za udhibiti kati ya utendaji kazi na mtiririko wa data. Kwa tathmini hii, msimbo wa moduli zote kwenye mchoro wa muundo wa mfumo lazima utekelezwe (nodi zote lazima zifunikwa), simu zote lazima zitekelezwe angalau mara moja (miunganisho yote kati ya nodi kwenye mchoro wa muundo lazima ifunikwa), mlolongo wote wa simu. lazima itekelezwe angalau mara moja (njia zote kwenye mchoro wa muundo lazima zifunikwa).

Ufafanuzi: Muhadhara ni wa pili kati ya tatu unaoshughulikia viwango vya mchakato wa uthibitishaji. Mada ya somo hili ni mchakato wa upimaji wa ujumuishaji, kazi na malengo yake. Vipengele vya shirika vya upimaji wa ujumuishaji huzingatiwa - uainishaji wa kimuundo na wa muda wa mbinu za upimaji wa ujumuishaji, upangaji wa upimaji wa ujumuishaji. Kusudi la hotuba hii: kutoa wazo la mchakato wa upimaji wa ujumuishaji, vifaa vyake vya kiufundi na shirika

20.1. Malengo na malengo ya upimaji wa ujumuishaji

Matokeo ya majaribio na uthibitishaji wa moduli za kibinafsi zinazounda mfumo wa programu inapaswa kuwa hitimisho kwamba moduli hizi zinalingana ndani na zinatii mahitaji. Walakini, moduli za kibinafsi mara chache hufanya kazi peke yao, kwa hivyo kazi inayofuata baada ya kujaribu moduli za mtu binafsi ni kujaribu mwingiliano sahihi wa moduli kadhaa zilizojumuishwa kuwa moja. Aina hii ya majaribio inaitwa ushirikiano. Kusudi lake ni kuhakikisha kuwa vipengele vya mfumo vinafanya kazi kwa usahihi.

Mtihani wa ujumuishaji pia inaitwa upimaji wa usanifu wa mfumo. Kwa upande mmoja, jina hili linatokana na ukweli kwamba majaribio ya ujumuishaji yanajumuisha ukaguzi wa aina zote zinazowezekana za mwingiliano kati ya moduli za programu na vitu ambavyo vimefafanuliwa katika usanifu wa mfumo - kwa hivyo, ukaguzi wa majaribio ya ujumuishaji. ukamilifu mwingiliano katika utekelezaji wa mfumo unaojaribiwa. Kwa upande mwingine, matokeo ya vipimo vya ushirikiano ni mojawapo ya vyanzo vikuu vya habari kwa ajili ya mchakato wa kuboresha na kufafanua usanifu wa mfumo, intermodule na interfaces intercomponent. Hiyo ni, kutoka kwa mtazamo huu, vipimo vya ujumuishaji huangalia usahihi mwingiliano wa vipengele vya mfumo.

Mfano wa kuangalia usahihi wa mwingiliano unaweza kuwa moduli mbili, moja ambayo hujilimbikiza ujumbe wa itifaki kuhusu faili zilizopokelewa, na ya pili inaonyesha itifaki hii kwenye skrini. Masharti ya utendaji ya mfumo yanaeleza kwamba ni lazima ujumbe waonyeshwe kwa mpangilio wa kinyume. Hata hivyo, moduli ya hifadhi huhifadhi ujumbe kwa mpangilio wa mbele, na moduli ya pato hutumia mrundikano ili kuzitoa kwa mpangilio wa kinyume. Vipimo vya vipimo vinavyogusa kila moduli kibinafsi havitakuwa na athari hapa - hali tofauti inawezekana kabisa, ambayo ujumbe huhifadhiwa kwa mpangilio wa nyuma na matokeo kwa kutumia foleni. Tatizo linalowezekana linaweza tu kutambuliwa kwa kuangalia mwingiliano wa moduli kwa kutumia majaribio ya ujumuishaji. Jambo kuu hapa ni kwamba mfumo kwa ujumla hutoa ujumbe kwa mpangilio wa nyuma wa mpangilio, yaani, ikiwa tutaangalia moduli ya towe na kugundua kwamba inatoa ujumbe kwa mpangilio wa mbele, hatuwezi kuthibitisha kwamba tumepata kasoro.

Kutokana na kufanya upimaji wa ushirikiano na kuondoa kasoro zote zilizotambuliwa, usanifu thabiti na wa jumla wa mfumo wa programu hupatikana, i.e. tunaweza kudhani kwamba upimaji wa ujumuishaji inajaribu usanifu na mahitaji ya utendaji wa kiwango cha chini.

Mtihani wa ujumuishaji, kama sheria, ni mchakato wa kurudia ambapo utendakazi wa seti inayoongezeka ya moduli hujaribiwa.

20.2. Shirika la upimaji wa ujumuishaji

20.2.1. Uainishaji wa kimuundo wa mbinu za upimaji wa ujumuishaji

Kama sheria, upimaji wa ujumuishaji unafanywa baada ya kukamilika kwa upimaji wa kitengo kwa moduli zote zilizojumuishwa. Hata hivyo, hii sio wakati wote. Kuna njia kadhaa za kufanya majaribio ya ujumuishaji:

  • upimaji wa chini juu;
  • mtihani wa monolithic;
  • mtihani wa juu-chini.

Mbinu hizi zote zinategemea ujuzi wa usanifu wa mfumo, ambao mara nyingi huonyeshwa kama michoro ya muundo au michoro za simu za kazi. Kila nodi kwenye mchoro kama huo inawakilisha moduli ya programu, na mishale kati yao inawakilisha utegemezi wa simu kati ya moduli. Tofauti kuu kati ya mbinu za upimaji wa ujumuishaji ni mwelekeo wa harakati kando ya michoro hizi na upana wa chanjo kwa kila marudio.

Mtihani wa chini-juu. Unapotumia njia hii, inadokezwa kuwa moduli zote za programu zilizojumuishwa kwenye mfumo zinajaribiwa kwanza na kisha tu zinaunganishwa kwa majaribio ya ujumuishaji. Kwa mbinu hii, ujanibishaji wa makosa hurahisishwa sana: ikiwa moduli zinajaribiwa kando, basi hitilafu zinapofanya kazi pamoja ni tatizo na kiolesura chao. Kwa njia hii, eneo la utafutaji la mjaribu kwa matatizo ni nyembamba kabisa, na kwa hiyo uwezekano wa kutambua kwa usahihi kasoro ni kubwa zaidi.


Mchele. 20.1.

Hata hivyo, njia ya chini-juu upimaji una shida kubwa - hitaji la kukuza kiendeshi na vijiti vya upimaji wa kitengo kabla ya kufanya jaribio la ujumuishaji na hitaji la kukuza kiendeshi na vijiti wakati wa majaribio ya ujumuishaji wa sehemu ya moduli za mfumo (Mchoro 20.1)

Kwa upande mmoja, madereva na stubs ni chombo chenye nguvu cha kupima, kwa upande mwingine, maendeleo yao yanahitaji rasilimali muhimu, hasa wakati muundo wa moduli jumuishi hubadilika, kwa maneno mengine, seti moja ya madereva inaweza kuhitajika kwa ajili ya kupima kitengo cha kila mmoja. moduli, dereva tofauti na stubs kwa ajili ya kupima ushirikiano wa modules mbili kutoka kwa kuweka, moja tofauti - kwa kupima ushirikiano wa modules tatu, nk. Hii ni kwa sababu ya ukweli kwamba ujumuishaji wa moduli huondoa hitaji la vijiti kadhaa, na pia inahitaji mabadiliko ya kiendeshi ambayo inasaidia majaribio mapya yanayoathiri moduli nyingi.

Mtihani wa monolithic inapendekeza kuwa vipengele vya mtu binafsi vya mfumo havijafanyiwa majaribio makubwa. Faida kuu ya njia hii ni kutokuwepo kwa haja ya kuendeleza mazingira ya mtihani, madereva na stubs. Baada ya moduli zote kutengenezwa, ushirikiano wao unafanywa, basi mfumo kwa ujumla unajaribiwa. Njia hii haipaswi kuchanganyikiwa na upimaji wa mfumo, ambayo ni somo la hotuba inayofuata. Licha ya ukweli kwamba upimaji wa monolithic utaangalia uendeshaji wa mfumo mzima kwa ujumla, kazi kuu ya upimaji huu ni kutambua matatizo na mwingiliano wa modules za mfumo wa mtu binafsi. Kazi ya kupima mfumo ni kutathmini sifa za ubora na kiasi cha mfumo kutoka kwa mtazamo wa kukubalika kwao kwa mtumiaji wa mwisho.

Mtihani wa monolithic ina idadi ya hasara kubwa.

  • Ni vigumu sana kutambua chanzo cha kosa (tambua kipande cha msimbo potofu). Moduli nyingi zinapaswa kudhani kuwa kuna hitilafu. Shida inakuja kuamua ni makosa gani katika moduli zote zinazohusika yalisababisha matokeo. Hii inaweza kuanzisha athari za makosa. Kwa kuongeza, hitilafu katika moduli moja inaweza kuzuia majaribio ya nyingine.
  • Ni vigumu kupanga marekebisho ya hitilafu. Kama matokeo ya majaribio, anayejaribu hurekodi shida iliyopatikana. Hitilafu katika mfumo uliosababisha tatizo hili itarekebishwa na msanidi programu. Kwa kuwa, kama sheria, moduli zilizo chini ya jaribio zimeandikwa na watu tofauti, shida inatokea - ni yupi kati yao anayewajibika kutafuta suluhisho la kasoro? Kwa "kutowajibika kwa pamoja," kasi ya kuondoa kasoro inaweza kushuka kwa kasi.
  • Mchakato wa majaribio umejiendesha vibaya. Faida (hakuna programu ya ziada inayoambatana na mchakato wa kupima) inageuka kuwa hasara. Kila mabadiliko yanayofanywa yanahitaji kurudia majaribio yote.

Mtihani wa juu-chini inadhani kuwa mchakato wa majaribio ya ujumuishaji unafuata maendeleo. Kwanza, kiwango cha juu tu cha udhibiti wa mfumo kinajaribiwa, bila moduli za kiwango cha chini. Kisha, hatua kwa hatua, zile za chini zimeunganishwa na moduli za kiwango cha juu. Kutokana na kutumia njia hii, hakuna haja ya madereva (jukumu la dereva linafanywa na moduli ya mfumo wa juu), lakini haja ya stubs inabakia (]. Katika msingi wake, mbinu hii sio mpya. aina ya majaribio ya ujumuishaji; kipengele cha chini kinachopatikana kama matokeo ya ujumuishaji hubadilika tu. Wakati ujumuishaji wa moduli katika lugha za programu za kiutaratibu, unaweza kuunganisha idadi yoyote ya moduli, kulingana na ukuzaji wa vijiti. Wakati wa kuunganisha madarasa katika vikundi, kuna badala ya kizuizi huru juu ya ukamilifu wa utendakazi wa nguzo.Hata hivyo, hata katika kesi ya mifumo inayolenga kitu, inawezekana kuunganisha idadi yoyote ya madarasa kwa kutumia madarasa ya mbegu.

Bila kujali mbinu ya kupima ujumuishaji inayotumiwa, ni muhimu kuzingatia kiwango cha utendakazi wa mfumo kwa majaribio ya ujumuishaji. Kazi ilipendekeza mbinu ya kutathmini kiwango cha chanjo kulingana na simu za udhibiti kati ya utendaji kazi na mtiririko wa data. Kwa tathmini hii, msimbo wa moduli zote kwenye mchoro wa muundo wa mfumo lazima utekelezwe (nodi zote lazima zifunikwa), simu zote lazima zitekelezwe angalau mara moja (miunganisho yote kati ya nodi kwenye mchoro wa muundo lazima ifunikwa), mlolongo wote wa simu. lazima itekelezwe angalau mara moja (njia zote kwenye mchoro wa muundo lazima zifunikwa).

12 majibu

Jaribio la ujumuishaji ni wakati unapojaribu vipengele vingi na jinsi vinavyofanya kazi pamoja. Kwa mfano, jinsi mfumo mwingine unavyoingiliana na mfumo wako au hifadhidata inavyoingiliana na safu ya uondoaji wa data. Hii kawaida inahitaji kamili mfumo uliowekwa, ingawa katika fomu zake safi haifanyi kazi.

Majaribio ya kiutendaji ni wakati unapojaribu mfumo dhidi ya mahitaji ya utendaji wa bidhaa. Usimamizi wa bidhaa/mradi kwa kawaida hurekodi data hii, na QA hurasimisha mchakato wa kile ambacho mtumiaji anapaswa kuona na uzoefu, na matokeo ya mwisho ya michakato hii ni nini. Kulingana na bidhaa, hii inaweza au isiwe ya kiotomatiki.

Jaribio la Kiutendaji: Ndiyo, tunajaribu bidhaa au programu kwa ujumla kwa utendaji kama inafanya kazi au la (vitufe vya majaribio, viungo, n.k.)

Kwa mfano: Ukurasa wa kuingia

unatoa jina la mtumiaji na nenosiri, unaangalia ikiwa inakupeleka kwenye ukurasa wa nyumbani au la.

Jaribio la Ujumuishaji: Ndio, unajaribu programu iliyojumuishwa pekee, lakini unakagua mahali mtiririko wa data unafanyika na ikiwa mabadiliko yoyote yanatokea kwenye hifadhidata.

Kwa mfano: Kutuma barua pepe

Unatuma ujumbe mmoja kwa mtu, kuna mtiririko wa data, na pia mabadiliko katika hifadhidata (meza iliyotumwa huongeza thamani na 1)

Natumai hii ilikusaidia.

Hii ni tofauti muhimu, lakini kwa bahati mbaya huwezi kupata makubaliano. Shida ni kwamba watengenezaji wengi hufafanua kutoka kwa maoni yao wenyewe. Hii ni sawa na mjadala wa Pluto. (Kama ingekuwa karibu na Jua, ingekuwa sayari?)

Upimaji wa kitengo ni rahisi kufafanua. Inajaribu CUT ( Kanuni Chini ya Jaribio) na hakuna kingine. (Vema, kidogo iwezekanavyo.) Hii ina maana ni dhihaka, mikwaruzo, na marekebisho.

Kwa upande mwingine wa wigo ndio watu wengi huita upimaji wa ujumuishaji wa mfumo. Hili ni jaribio kadiri inavyowezekana, lakini bado unatafuta hitilafu kwenye CUT yako mwenyewe.

Lakini vipi kuhusu nafasi kubwa iliyo katikati?

  • Kwa mfano, vipi ukiangalia zaidi ya CUT? Je, ikiwa utawasha kipengele cha utendakazi cha Fibonacci badala ya kutumia muundo ulioweka? Ningeiita majaribio ya kufanya kazi, lakini ulimwengu haukubaliani nami.
  • Je, ikiwa utajumuisha time() au rand() ? Au vipi ukiita http://google.com ? Ningeita majaribio ya mfumo huu, lakini tena, niko peke yangu.

Kwa nini jambo hili? Kwa sababu vipimo vya mfumo si vya kutegemewa. Ni muhimu, lakini wakati mwingine wanaweza kushindwa kwa sababu zilizo nje ya uwezo wako. Kwa upande mwingine, vipimo vya kazi vinapaswa kupita kila wakati na sio nasibu; zikitokea kuwa za haraka, zinaweza pia kutumika tangu mwanzo kabisa kutumia Test-Driven Development bila kuandika sana kiasi kikubwa majaribio ya utekelezaji wako wa ndani. Kwa maneno mengine, nadhani majaribio ya kitengo yanaweza kuwa magumu zaidi kuliko yanavyostahili, na niko katika kampuni nzuri.

Niliweka vipimo kwenye shoka 3, zote zikiwa na sufuri wakati wa majaribio ya kitengo:

  • Jaribio la kiutendaji: Kwa kutumia msimbo halisi kwa kina zaidi na zaidi katika safu yako ya simu.
  • Jaribio la ujumuishaji: juu na juu safu yako ya simu; kwa maneno mengine, kujaribu CUT yako kwa kuendesha nambari ambayo itaitumia.
  • Upimaji wa mfumo: shughuli zaidi na za kipekee zaidi (kipanga ratiba cha O/S, saa, mtandao, n.k.).

Jaribio linaweza kuwa 3 kwa viwango tofauti kwa urahisi.

Jaribio la Kiutendaji: Huu ni mchakato wa majaribio ambapo kila sehemu ya moduli inajaribiwa. Kwa mfano: Ikiwa ukurasa wa wavuti una uga wa maandishi, unahitaji kuangalia visanduku vya kuteua vya radiobot, vifungo na menyu kunjuzi, nk.

Jaribio la ujumuishaji: Mchakato ambao mtiririko wa data kati ya moduli mbili unajaribiwa.

Mtihani wa ujumuishaji. Jaribio la ujumuishaji sio chochote ila kujaribu moduli anuwai. Unapaswa kuangalia uhusiano kati ya moduli. Kwa mfano unafungua facebook kisha unaona login page baada ya kuingia login id na password unaweza kuona facebook home page hivyo login page ni moduli moja na home page ni moduli nyingine. unapaswa kuangalia tu muunganisho kati yao wakati umeingia, basi ukurasa wa nyumbani pekee unapaswa kufunguliwa na sio kisanduku cha ujumbe au kitu kingine chochote. Kuna aina mbili kuu za majaribio ya ujumuishaji: mbinu ya JUU- CHINI na mbinu ya CHINI JUU.

Mtihani wa kiutendaji. Katika upimaji wa kazi, unapaswa kufikiria tu juu ya pembejeo na pato. Katika kesi hii, lazima ufikirie kama mtumiaji halisi. Kujaribu kile ulichotoa na matokeo uliyopata ni majaribio ya kiutendaji. unahitaji tu kutazama kutoka. Kwa upimaji unaofanya kazi, hauitaji kujaribu usimbaji wa programu au programu.

Jaribio la utendakazi huangazia utendakazi na utendakazi unaosaidia wa programu. Utendaji wa programu lazima ufanye kazi kwa usahihi au la.

Katika jaribio la ujumuishaji wa majaribio, unahitaji kuangalia utegemezi kati ya moduli au moduli ndogo. Mfano wa maingizo ya moduli lazima itolewe kwa usahihi na kuonyeshwa kwenye moduli nyingine.

Jaribio la Kuunganisha: - Wakati upimaji wa kitengo unafanywa na matatizo na vipengele vinavyohusiana yametatuliwa, basi vipengele vyote vinavyohitajika lazima viunganishwe kwenye mfumo mmoja ili uweze kufanya operesheni. Baada ya kuchanganya vipengele vya mfumo Kuangalia ikiwa mfumo unafanya kazi kwa usahihi au la, aina hii ya kupima inaitwa upimaji wa ujumuishaji.

Jaribio la Kiutendaji: - Jaribio limegawanywa katika kategoria mbili: 1.Jaribio la Kitendaji 2. Jaribio Lisilofanya Kazi **Jaribio la Kitendaji: - Kuangalia kama programu inafanya kazi kulingana na mahitaji ya mtumiaji au la. ** Jaribio lisilofanya kazi: - Kuangalia ikiwa programu inakidhi vigezo vya ubora kama vile mtihani wa mfadhaiko, jaribio la usalama, n.k.

Kawaida Mteja hutoa mahitaji tu kwa mtihani wa kazi na kwa mtihani usio na kazi, mahitaji haipaswi kutajwa, lakini maombi yanahitajika kufanya shughuli hizi.

Naweza kusema kwamba wote wawili wana uhusiano wa karibu na ni vigumu sana kuwatofautisha. Kwa maoni yangu, upimaji wa ujumuishaji ni sehemu ndogo ya upimaji wa kazi.

Ukaguzi wa utendakazi unatokana na mahitaji ya awali unayopokea. Utajaribu tabia ya programu kama inavyotarajiwa dhidi ya mahitaji.

Linapokuja suala la majaribio ya ujumuishaji, ni mwingiliano kati ya moduli. Ikiwa moduli itatuma ingizo, moduli B inaweza kuichakata au la.

Mtihani wa ujumuishaji

Unaweza kuona jinsi moduli tofauti za mfumo zinavyofanya kazi pamoja. Tunarejelea hasa utendakazi jumuishi wa moduli mbalimbali badala ya vipengele tofauti vya mfumo. Kwa kazi yenye ufanisi Katika mfumo wowote au bidhaa ya programu, kila kipengele lazima kisawazishwe na kila kimoja. Katika hali nyingi, zana tuliyotumia kwa majaribio ya ujumuishaji itakuwa ile tuliyotumia kwa majaribio ya kitengo. Inatumika katika hali ngumu wakati upimaji wa kitengo hautoshi kupima mfumo.

Mtihani wa kiutendaji

Inaweza kufafanuliwa kama mtu binafsi anayejaribu utendakazi moduli. Inarejelea kujaribu bidhaa ya programu katika kiwango cha mtu binafsi ili kuangalia utendakazi wake. Kesi za majaribio zimeundwa ili kujaribu programu kwa matokeo yanayotarajiwa na yasiyotarajiwa. Aina hii ya majaribio hufanywa zaidi kutoka kwa mtazamo wa mtumiaji. Hiyo ni, inazingatia matarajio ya mtumiaji kwa uingizaji wa aina. Pia huitwa majaribio ya kisanduku cheusi na pia huitwa majaribio ya kisanduku funge

Rudi

×
Jiunge na jumuiya ya "koon.ru"!
Kuwasiliana na:
Tayari nimejiandikisha kwa jamii "koon.ru"