Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Testing
Code

Programming sa Pamamagitan ng Yii2: Ang Awtomatikong Pagsusuri Gamit ang Codeception

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called How to Program With Yii2.
Programming With Yii2: Security
How to Program With Yii2: ActiveRecord

Tagalog (Wikang Tagalog) translation by Anna Nelson (you can also view the original English article)

Final product image
What You'll Be Creating

Kung nagtatanong ka kung ano ba ang Yii, tignan mo ang naunang tutoryal ko na pinamagatang Introduction to the Yii Framework. Tinalakay ng naunang tutoryal ang mga benepisyo ng Yii at ang pangkalahatang-ideya tungkol sa Yii 2.0 na inilabas noong Oktubre 2014.

Sa serye ito na Programming sa Pamamagitan ng Yii2, ginagabayan ko ang mga nagbabasa gamit ang Yii2 Framework para sa PHP. Sa tutoryal na ito, sisiyasatin ko ang awtomatikong pagsusuri gamit ang Codeception na kasama sa pagbubuo ng balangkas ng Yii2.

Inaamin ko na may kakulangan ang karanasan ko sa paggawa ng mga pagsusulit gamit ang kowd ko. Naging parte ako ng mga maliliit na proyekto na may limitadong pinagkukunan. Noong panahong nasa Microsoft pa ako, mayroon kaming partikular na team sa pagsusuri na ginawa ito. Ngunit sa totoo lang, ito ay maaaring katulad mo land din ito, ‘di ba? Gusto ng mga programmer na mag—kowd pero ayaw nilang gumawa ng pagsusuri.

Ang Codeception ay isang makabagong librerya na naglalayong gawing madali at masaya ang paggawa ng mga pagsusuri. At sa palagay ko ay nagtumpay naman sila sa makatwirang lebel. Sa pagsisimula ko sa paggamit ng Codeception, madali at masaya ito sa halos kabuuan ng proseso. Ngunit nang lumaon, nakatagpo ako ng mga isyu ng konpigurasyon sa Yii at sa mga partikular na module sa seryeng ito. Sa pangkalahatan, ako ay namangha dito. Nakita ko din ang benepisyo kung mas pag-aaralan pa ito.

Sa madaling salita, sa unang pagkakataon, ginanahan akong bumuo ng marami pang pagsusuri dahil sa Codeception at ang pagkasama nito sa Yii. Sa tingin ko ay ganito rin ang mararanasan mo.

Paalala bago tayo magsimula, sumasali talaga ako sa mga diskusyon ng mga komento sa ibaba. Mas lalo akong interesado kung ninanais mong magbigay ng karagdagang ideya o magmungkahi ng mga paksa para sa mga susunod na tutoryal. Mag-post ka lamang sa ibaba kung may gusto kang itanong o imungkahing paksa. Maaari mo din akong makausap nang direkta sa Twitter @reifman.

Pagsisimula

Pag-install ng Codeception

Para gabayan ako, ginamit ko ang dokumentasyon ng Yii’s Testing Environment Setup. Nagsimula ako sa global na pag-install ng Codeception para magamit ko ito sa anumang proyekto.

Kinakailangan mo ding humingi ng codeception/specify:

At codeception/verify:

Kasunod nito, ang paggamit mo ng iyong global na sangguniang kompositor ay makatutulong sa pag-set-up ng alyas para sa codecept.

Itinatakda nito ang alyas:

Inoobliga ka din ng Yii na mag-install ng Faker na gumagawa ng mga pekeng datos na sinusuri para sa iyong aplikasyon.

Pag-set-up ng Codeception Kasama ng Iyong Aplikasyon

Sinisimulan ng Codecept bootstrap ang codeception para sa iyong aplikasyon na Yii sa pamamagitan ng paggawa ng iba’t ibang file ng konpigurasyon para sa pagbubuo at pagsasagawa ng pagsusuri sa iyong aplikasyon. Sa tutoryal na ito, ginagamit natin ang aplikasyon na Hello na mula sa seryeng ito. Hanapin ang GitHub link sa pahinang ito para makuha ang kowd.

Sa di malamang dahilan, napunta din ako sa mga nadobleng direktorua ng pagsusuri sa hello/tests. Naging malinaw sa akin ang mga bagay-bagay nang alisin ko ang hello/tests/functional, hello/tests/acceptance, at hello/tests/unit. Ang lahat ng mga pagsusuri ay nasa hello/test/codeception* mismo.

Ang Iba’t Ibang Uri ng Pagsusuri

Ang Codeception ay nakapokus sa tatlong uri ng mga pagsusuri:

  1. Ang unit testing ay sinisiguradong gumagana ang mga partikular na units. Isang halimbawa nito ay ang malawakang pagsusuri sa lahat ng mga sistema ng iyong modelo.
  2. Ang functional testing ay ang nagbeberipika sa mga karaniwang sitwasyon ng aplikasyon na parang nararanasan ng user pero sa pamamagitan ng paggamit ng module na kagaya lang ng web browser.
  3. Ang acceptance testing ay katulad lang ng functional testing pero ito ay gumagamit talaga ng web browser sa pagsasagawa ng pagsusuri.

At sinusuportahan nito ang tatlong iba’t ibang klase ng ayos ng pagsusuri para sa iyong kowd sa pagsusuri.

  1. Cept: Ito ay ang pinakasimpleng iisang senaryo na test file
  2. Cest: obdyek na ibinagay ang format para sa pagpapatakbo ng maramihang pagsusuri sa loob ng iisang file
  3. Test: mga pagsusuring binuo sa PHPUnit na isang balangkas ng pagsusuring PHP

Magsimula tayo sa halimbawa ng acceptance tests gamit ang cept format:

Acceptance Testing 

Gagamitin muna natin ang halimbawa ng Paunang pagsusuri ng Codeception.

Magbibigay ito ng tests/acceptance/WelcomeCept.php na siyang aayusin natin sa ibaba.

Dahil nangangailangan ng browser ang mga acceptance test, kailangan nating i-edit sa ating proyekto ang /tests/acceptance.suite.yml para maibigay ang ating development URL, http://localhost:8888/hello:

Ngayon tayo ay handa na na baguhin ang naunang pagsusuri sa to tests/acceptance/WelcomeCept.php. Gumagawa ako ng pagsusuri na nai-lo-load ang pambungad na pahina para siguraduhing gagana ito sa paraang inaasahan.

Ang mga pagsusuring Codeception ay may konsepto ng aktor, sa kasong ito $I = new AcceptanceTester().

Ganito kung paano nito inilalarawan ang mga aktor sa dokumentasyon ng Codeception.

Mayroon tayong UnitTester na tumutupad sa mga tungkulin at nagsusuri sa kowd. Mayroon din tayong kwalipikadong tester na FuntionalTester na nagsusuri ng kabuuan ng aplikasyon at may kaalaman sa panloob na sistema nito. At ang AcceptanceTester ay ang user na gumagana kasama ng ating aplikasyon sa pamamagitan ng ibibigay naming interface.

Pwede mong ipakita ang iyong mga pagsusuri gamit ang kowd gaya ng $I->wantTo('perform a certain test') o ‘siguraduhing gumagana ang frontpage’ sa mga komento.

Sa aking pagsusuri, gusto kong makita ang $1 -> tignan ang text para sa ‘Congratulations’ at ‘Yii-powered’:

Ito ang kasalukuyang home page ng Hello:

Programming with Yii - The Hello Home Page

Kasunod nito, isagawa na natin ang pagsusuri, codecept run:

Gaya ng iyong nakikita, pasado ang ating pagsusuri at ang kowd para patunayan ang punksyonalidad ay lubos na nababasa at simple.

Mga Paalala sa mga Default na Pagsusuri ng Yii

Para lumalim pa ang diskusyon, sinimulan kong gamitin ang mga default na pagsusuri ng Yii. Sa puntong ito, nakatagpo ako ng ilang isyu ng konpigurasyon na halos lahat ay epekto ng paggamit ko ng nababagong yii2-user module sa seryeng ito. Ang iba naman ay dahil sa mga maliliit na bug ng Yii na mabilis namang nasosolusyonan ng mga debeloper ng Yii matapos iulat ito sa kanila. Sa ibang pagkakataon, ang mga isyu ay naisaayos lamang nang nailabas ang yii2-basic tree.

At dahil in-update ko ang yii2-basic tree para sa seryeng ito, kinailangan kong baguhin nang kaunti ang mga default na pagsusuri.

Ito ang halimbawa ng output para sa pagpapatakbo ng default na acceptance tests nang ginawa ko ang ilang pagsasa-ayos:

Functional Testing 

Para mapagawa ko ang functional tests, kinakailangan kong isagawa ang isang halimbawa ng built-in server ng Yii. Hindi ko pa ito alam hanggang nang banggitin ito ng Alex Markov ng Yii noong kami ay nagpalitan ng GitHub exchange.

Binago ko nang kaunti ang functional tests sa /tests/codeception/functional na kadalasan ay para hanapin ang mga in-update ko na espesipikong lupon ng mga salita gaya ng “Invalid login or password” (“Maling login o password”) kapalit ng default ng Yii. Ito ang itsura ng LoginCept.php:

Ang kowd ay may access sa modelo ng LoginForm. Sinusuri din nito ang iba’t ibang pamamaraan nito gamit ang Yii serve.

Ito ang /test/codeception_pages/LoginPage.php na pasusuring kowd na kaaya-aya (kinailangan kong ayusin ito para sa mga ginawa nating pagbabago sa seryeng ito):

Makikita mo na nai-kowd natin ang aktor sa fillFields. I-click ang mga buton para sa ating mga na-iupdate na form field.

Habang isinasaayos ang aking pagsasama ng Codeception sa Yii, nalaman ko na nakatutulong sa pagsasagawa ng pagsusuri kung gagawin itong masalita.

Ito ay ang masalitang output mula sa Login functional tests. Sa MacOS Terminal, ang PASADO at BAGSAK ay naka-kowd sa kulay na pula o rosas at binaliktad para agad makita.

Sa pangkalahatan, may ilang bagay na dapat matutunan muna bago makapagsimula sa paggamit ng Codeception at maayos na mai-kowd ang iyong mga pagsusuri. Pero ang mga resulta ay kahanga-hanga at nakatutulong.

Unit Testing 

Sa madaling salita, ang mga pagsusuri ng unit ay ang pagsusuring pangprograma ng ating imprastraktura at mga modelo. Ang gusto natin ay makabuo tayo ng mga pagsusuri para sa bawat pamamaraan at baryasyon ng paggamit ng mga modelo natin.

Sa kasamaang palad, hindi ko napagana ang mga pagsusuri ng unit sa loob ng ating sistema. Maaaring dahil ito sa mga maliliit na bug ng Yii na hindi pa nailabas o sa mga isyu ng konpigurasyon sa pagitan ng Codeception at yii2-user na pinagsama natin sa Paano Mag-program Gamit ang Yii 2: Pagsasama ng Pagrerehistro ng User.

Babanggitin ko ulit ang pagsusuri ng unit sa ating serye na Startup na gumagamit ng built-inYii Advance.

Tignan natin ang dalawang halimbawa galing sa Yii2-app-basic tree.

Pagsusuri ng mga Email ng Contact Form

Ang hello/tests/codeception/unit/models/ContactFormTest.php ay sinusuri ang pagpapadala ng email sa pamamagitan ng paggamit ng programa ng mga modelo:

Hindi ko nakayang ipasa nang matagumpay ang pagsusuring ito dahil sa maliit na bug ng Yii na hindi pa na-update (o siguro hindi ko pa nahahanap ang na-update na kowd). Ang paraan ng paglalabas ko sa Yii codebase ay ang paglalagay ng mga selyo ng petsa sa mga ipapadalang email habang ang kowd sa itaas ay sa pamamagitan ng paghahanap ng permanenteng filename. Kaya parati itong nabigo. Kahit na ganoon, kapaki-pakinabang pa din naman na makita kung paano magagamit ng pagsusuri ng programa ang modelo sa paglikha ng file. Pagkatapos, hanapin ang file na iyon at i-tsek ang mga nilalaman nito para mapatunayang gumagana ang kowd.

Testing Login

Tignan natin ang hello/tests/codeception/unit/models/LoginFormTest.php. Inuulit ko, ang paggamit ko ng yii2-user ay ang naging dahilan para maging sobrang hirap bumuo sa oras ng pagsulat sa tutoryal na ito. Gayunpaman, pwede nating tignan ang konseptwal na aspeto sa pagsusuri ng unit sa mga tungkulin ng modelo ng user. 

Ito ang testLoginCorrect() na nagkukumpirma kung matagumpay na nakapag-log in gamit ang tamang password. 

Gumagamit ito ng modelo ng LoginForm para maglog-in ang user sa programa. Pagkataposm titignan sa programa kung ang kasalukuyang user ng Yii ay hindi na panauhin lamang.

Ano ang susunod?

Umaasa ako na nagustuhan niyo ang pag-aaral sa pagsasama ng Codeception sa Yii kahit na may mga ilang hadlang akong nakaharap. Ang default na pag-install sa yii2-basic ngayon ay dapat mas maayos nang gumagana.

Kung nais mo pang magbasa tungkol sa pagdedesisyon kung kalian at ano ang susuriin at bakit, nirerekomenda ko ang pagbabasa ng Pangkalahatang-ideya ng Pagsusuri sa Yii. Siguradong mayroon pang mas maraming matutunan tungkol sa Codeception at sa pagbuo ng mas kumpletong mga pagsusuri. 

Hintayin ang mga susunod na tutoryal sa aming serye na Pag-program Gamit ang Yii2 sa pagpapatuloy naming pagsasaliksik sa iba pang aspeto ng balangkas. Kung gusto mong malaman kung kalian lalabas ang susunod na tutoryal sa Yii2, sundan mo ako @reifman sa Twitter o tignan ang aking instructor page.

Baka nais mo ding tignan ang aming serye na Pabubuo ng Iyong Startup Gamit ang PHP na gumagamit ng advance template ng Tii habang gumagawa kami ng aplikasyon na praktikal na magagamit. Sa katunayan, maaari mong subukan ngayon ang startup na aplikasyon na Meeting Planner

Related Links

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.