Rov qab mus rau tsev kawm ntawv: yuav ua li cas cob qhia cov neeg ntsuas phau ntawv los daws cov kev xeem automated

Plaub ntawm tsib tus neeg thov QA xav kawm yuav ua li cas ua haujlwm nrog cov kev xeem automated. Tsis yog txhua lub tuam txhab tuaj yeem ua tiav cov kev xav tau ntawm cov neeg ntsuas phau ntawv thaum lub sijhawm ua haujlwm. Wrike tuav lub tsev kawm ntawv automation rau cov neeg ua haujlwm thiab paub txog qhov kev ntshaw no rau ntau tus. Kuv tau koom nrog lub tsev kawm ntawv no raws li QA tub ntxhais kawm.

Kuv kawm yuav ua li cas ua hauj lwm nrog Selenium thiab tam sim no nws tus kheej txhawb ib tug xov tooj ntawm autotests nrog zoo tsis muaj kev pab sab nraud. Thiab, raws li cov txiaj ntsig ntawm peb qhov kev sib koom ua ke thiab kuv tus kheej cov lus xaus, kuv yuav sim muab cov qauv rau lub tsev kawm ntawv zoo tshaj plaws ntawm automation.

Wrike qhov kev paub hauv kev teeb tsa lub tsev kawm ntawv

Thaum qhov kev xav tau rau lub tsev kawm ntawv automation tau pom tseeb, nws lub koom haum poob rau Stas Davydov, tus thawj coj ntawm automation. Lwm tus neeg tab sis nws tuaj yeem piav qhia vim li cas lawv tuaj nrog txoj haujlwm no, seb lawv puas ua tiav thiab seb lawv puas khuv xim lub sijhawm? Cia peb muab nws hauv pem teb:

- Hauv xyoo 2016, peb tau sau cov qauv tshiab rau autotests thiab ua kom nws yooj yim los sau cov kev xeem: cov kauj ruam ib txwm tshwm sim, cov qauv tau nkag siab ntau dua. Peb tau los nrog lub tswv yim: peb yuav tsum koom nrog txhua tus neeg uas xav sau cov ntawv xeem tshiab, thiab kom nkag siab yooj yim, peb tsim cov lus qhuab qhia. Peb sib sau ua ke los nrog ib lub tswv yim ntawm cov ncauj lus, txhua tus kws qhia yav tom ntej tau coj ib qho thiab npaj ib daim ntawv qhia txog nws.

– Cov tub ntxhais kawm muaj teeb meem dab tsi?

- Feem ntau, ntawm chav kawm, architecture. Muaj ntau cov lus nug txog tus qauv ntawm peb qhov kev xeem. Hauv kev tawm tswv yim, ntau tau sau rau ntawm lub ncauj lus no thiab peb yuav tsum tuav cov lus qhuab qhia ntxiv los piav qhia kom ntxaws ntxiv.

- Lub tsev kawm ntawv puas tau them?

- Yog, twv yuav raug hu. Ua tsaug rau nws, ntau tus neeg tau koom nrog hauv kev xeem sau ntawv, thiab qhov nruab nrab, hauv tsev kho mob, txhua tus tau pib nkag siab zoo dua tias autotests yog dab tsi, lawv sau li cas thiab lawv pib ua li cas. Lub load ntawm automation engineers kuj tau txo qis: tam sim no peb tau txais ntau zaus tsawg thov kev pab nrog kev ntsuam xyuas, txij li cov testers thiab developers tau pib tiv nrog qhov no lawv tus kheej nyob rau hauv yuav luag txhua lub sijhawm. Zoo, muaj ntau qhov zoo hauv chav haujlwm: peb tau txais kev paub dhau los hauv kev nthuav qhia thiab kev hais lus, ua tsaug uas qee tus kws tshaj lij automation tau tswj hwm los ua kev nthuav qhia ntawm cov rooj sib tham, thiab kuj tau txais cov yeeb yaj kiab thiab kev nthuav qhia muaj zog rau cov neeg tuaj tshiab.

Ntawm kuv tus kheej, kuv yuav ntxiv hais tias kev sib txuas lus ntawm peb lub tuam tsev tau yooj yim mus rau ib qho yooj yim ridiculously theem. Piv txwv li, tam sim no kuv xyaum tsis tas yuav xav txog cov xwm txheej twg thiab qib twg ntawm atomicity kom automate. Raws li qhov tshwm sim, txhua tus neeg txaus siab tau saib xyuas tag nrho ntawm qhov kev xeem ntawv pov hwm, uas pheej loj zuj zus tuaj. Tsis muaj leej twg xav tau qhov ua tsis tau ntawm lwm tus.

Feem ntau, qhov cuam tshuam rau kev ua haujlwm ntawm pab pawg yog qhov zoo. Tej zaum cov npoj yaig nyeem tsab xov xwm no kuj xav txog ua tej yam zoo sib xws? Tom qab ntawd cov lus qhia yuav yooj yim: nws tsim nyog nws yog tias kev xeem tsis siv neeg yog qhov tseem ceeb rau koj. Tom ntej no, peb yuav tham txog cov lus nug nyuaj dua: yuav ua li cas npaj txhua qhov no kom raug raws li qhov ua tau, kom cov nqi ntawm txhua tog neeg tsawg tsawg thiab cov zis ntau tshaj plaws.

Tswv yim rau kev npaj

Lub tsev kawm ntawv muaj txiaj ntsig zoo, tab sis, raws li Stas tau lees paub, muaj qee qhov teeb meem, vim tias nws yuav tsum tau npaj cov lus qhuab qhia ntxiv. Thiab nws yog ib tug tub ntxhais kawm tsis ntev los no piv kuv tus kheej-hauv-kev tsis paub thiab kuv tus kheej-tam sim no kuv tau tsim cov kauj ruam hauv qab no los tsim, hauv kuv lub tswv yim, txoj hauv kev zoo tshaj plaws los qhia cov neeg sim kom nkag siab txog cov kev xeem automated.

Kauj ruam 0. Tsim ib phau ntawv txhais lus

Tau kawg, cov kauj ruam no yog xav tau tsis yog rau QA nkaus xwb. Txawm li cas los xij, kuv xav ua kom meej meej: automation codebase yuav tsum tau khaws cia rau hauv daim ntawv nyeem tau. Programming lus - tsis tsawg yam lus, thiab los ntawm qhov no koj tuaj yeem pib koj dhia dej.

Rov qab mus rau tsev kawm ntawv: yuav ua li cas cob qhia cov neeg ntsuas phau ntawv los daws cov kev xeem automated

Ntawm no yog ib qho screenshot ntawm lub luag haujlwm saib nrog cov npe ntawm cov khoom. Cia peb xav txog tias koj tab tom sim ua haujlwm ua lub thawv dub thiab tsis tau pom Selenium hauv koj lub neej. Txoj cai no ua dab tsi?

Rov qab mus rau tsev kawm ntawv: yuav ua li cas cob qhia cov neeg ntsuas phau ntawv los daws cov kev xeem automated

(Spoiler - txoj haujlwm raug tshem tawm ntawm so sawv cev ntawm tus thawj tswj hwm, thiab tom qab ntawd peb pom tias muaj cov ntaub ntawv ntawm qhov no hauv cov kwj deg.)

Cov kauj ruam no ib leeg coj QAA thiab QA cov lus los ze zog ua ke. Nws yooj yim dua rau cov pab pawg automation los piav qhia cov txiaj ntsig ntawm kev khiav; cov neeg ntsuas phau ntawv yuav tsum siv zog tsawg dua los tsim cov xwm txheej: lawv tuaj yeem ua kom ntxaws dua. Txawm li cas los xij, txhua leej txhua tus nkag siab ib leeg. Peb tau txais qhov kev yeej txawm tias ua ntej qhov kev cob qhia tiag tiag pib.

Kauj Ruam 1. Rov hais cov lus

Cia peb mus txuas ntxiv nrog cov lus. Thaum peb kawm hais lus li menyuam yaus, peb tsis pib los ntawm etymology thiab semantics. Peb rov hais dua "niam", "yuav khoom ua si", tab sis tsis txhob mus rau hauv Proto-Indo-European keeb kwm ntawm cov lus no. Yog li nws nyob ntawm no: tsis muaj lub ntsiab lus hauv kev dhia dej rau hauv qhov tob heev ntawm cov yam ntxwv ntawm autotests yam tsis tau sim sau qee yam uas ua haujlwm.
Nws suab me ntsis counterintuitive, tab sis nws ua haujlwm.

Hauv thawj zaj lus qhia, nws tsim nyog muab lub hauv paus ntawm kev sau autotests ncaj qha. Peb pab teeb tsa ib puag ncig kev txhim kho (hauv kuv qhov xwm txheej, Intellij IDEA), piav qhia cov cai yam lus yam tsawg kawg nkaus uas tsim nyog los sau lwm txoj hauv kev hauv chav kawm uas twb muaj lawm siv cov kauj ruam uas twb muaj lawm. Peb sau ib lossis ob qhov kev xeem nrog lawv thiab muab lawv cov ntawv ua tom tsev, uas kuv xav ua qhov zoo li no: ib ceg ceg tawm ntawm tus tswv, tab sis ob peb qhov kev xeem tau raug tshem tawm ntawm nws. Tsuas yog lawv cov lus piav qhia tseem nyob. Peb thov kom cov neeg sim rov qab kho cov kev sim no (tsis yog los ntawm kev qhia txawv, tau kawg).

Yog li ntawd, tus uas mloog thiab ua txhua yam yuav ua tau:

  1. kawm ua hauj lwm nrog kev txhim kho ib puag ncig interface: tsim cov ceg, hotkeys, commits thiab pushes;
  2. master lub hauv paus ntawm cov qauv ntawm cov lus thiab cov chav kawm: qhov twg yuav tsum tau txhaj tshuaj thiab qhov twg yuav import, yog vim li cas annotations thiaj li yuav tsum tau, thiab hom ntawm cov cim muaj nyob rau ntawd, dua li cov kauj ruam;
  3. to taub qhov txawv ntawm qhov kev txiav txim, tos thiab xyuas, qhov twg siv dab tsi;
  4. ceeb toom qhov sib txawv ntawm autotests thiab phau ntawv txheeb xyuas: hauv autotests koj tuaj yeem rub ib lossis lwm tus neeg tuav haujlwm es tsis txhob ua haujlwm los ntawm kev sib tshuam. Piv txwv li, xa cov lus ncaj qha mus rau lub backend es tsis txhob qhib qhov kev ua haujlwm, xaiv cov tswv yim, ntaus ntawv thiab nias lub pob Xa;
  5. tsim cov lus nug uas yuav teb rau cov kauj ruam tom ntej.

Qhov kawg taw tes tseem ceeb heev. Cov lus teb no tuaj yeem muab tau yooj yim ua ntej, tab sis nws yog lub hauv paus ntsiab lus qhia tseem ceeb uas cov lus teb uas tsis muaj cov lus nug tsim tsis nco qab thiab tsis siv thaum kawg xav tau.

Nws yuav yog qhov zoo tshaj yog tias lub sijhawm no tus kws ua haujlwm automation los ntawm QA pab pawg tau muab nws ua haujlwm nrog kev sau ob peb qhov kev xeem hauv kev sib ntaus sib tua thiab tso cai rau nws mus rau nws ceg.

Dab tsi los muab:

  1. kev paub ntau ntxiv txog kev ua haujlwm ntawm kev txhim kho ib puag ncig thiab cov lus programming nws tus kheej, uas tsuas yog xav tau thaum ua haujlwm nrog cov ceg ntoo ntawm nws tus kheej. Nws yuav tsis nco qab, koj yuav tsum tau piav qhia nws ob zaug lossis peb zaug, tab sis peb muaj nuj nqis rau lub sijhawm ntawm automation engineers, txoj cai? Piv txwv li: daws teeb meem, ntxiv cov ntaub ntawv rau git, tsim cov chav kawm los ntawm kos, ua hauj lwm nrog dependencies;
  2. txhua yam hais txog xpath. Tiag tiag. Koj yuav tsum tham txog nws cais, ib zaug thiab ntau concentratedly.

Kauj Ruam 2. Ua tib zoo saib cov qauv sau ntawv

Cia peb nco qab lub taskview screenshot ntawm kauj ruam #0. Peb muaj ib kauj ruam hu ua checkCommentWithTextExists. Peb cov neeg kuaj twb nkag siab tias cov kauj ruam no ua li cas thiab peb tuaj yeem saib hauv cov kauj ruam thiab decompose nws me ntsis.

Thiab hauv peb muaj cov hauv qab no:

onCommentBlock(userName).comment(expectedText).should(displayed());

Qhov twg onCommentBlock yog

onCommonStreamPanel().commentBlock(userName);

Tam sim no peb kawm hais tias tsis yog "yuav khoom ua si," tab sis "yuav khoom ua si los ntawm Detsky Mir khw, nyob rau hauv lub txee xiav ntawm lub txee thib peb ntawm sab saum toj." Nws yog ib qho tsim nyog yuav tsum tau piav qhia tias peb taw tes rau lub ntsiab lus sib txuas, los ntawm cov ntsiab lus loj (kwj -> thaiv nrog cov lus los ntawm qee tus neeg -> qhov ntawm qhov thaiv no qhov twg cov ntawv teev lus zaum).

Tsis yog, nws tseem tsis yog lub sijhawm los tham txog xpath. Tsuas yog hais luv luv tias tag nrho cov lus qhia no tau piav qhia los ntawm lawv thiab qhov qub txeeg qub teg mus dhau ntawm lawv. Tab sis peb yuav tsum tau tham txog tag nrho cov matchers thiab waiters; lawv muaj feem xyuam rau cov kauj ruam no thiab yuav tsum to taub dab tsi tshwm sim. Tab sis tsis txhob overload: koj tus menyuam kawm ntawv tuaj yeem kawm ntau qhov kev lees paub ntawm nws tus kheej tom qab. Feem ntau yuav, yuav tsum, tos kom txog thaum, tso tawm ();, muaj nyob (); , tsis yog (); yuav tsum txaus.

Kev ua homework yog qhov tseeb: ib ceg uas cov ntsiab lus ntawm ob peb kauj ruam uas tsim nyog rau qee qhov kev xeem tau raug tshem tawm. Cia cov neeg sim rov qab kho lawv thiab ua kom cov kev khiav rov qab ntsuab dua.

Tsis tas li ntawd, yog tias pab pawg kuaj tsis tau tsuas yog cov yam ntxwv tshiab hauv nws txoj haujlwm, tab sis kuj muaj qee qhov kev txhim kho kab laum, koj tuaj yeem hais kom nws sau ntawv tam sim rau cov kab no thiab tso tawm. Feem ntau, tag nrho cov ntsiab lus twb tau piav qhia lawm; tsuas yog ob peb kauj ruam yuav ploj mus. Qhov no yuav yog qhov zoo tshaj plaws workout.

Kauj Ruam 3. Kev tso dej puv nkaus

Ua kom tiav raws li qhov ua tau rau tus neeg kuaj xyuas uas yuav txuas ntxiv ua nws txoj haujlwm ncaj qha. Thaum kawg, peb yuav tsum tham txog xpath.

Ua ntej, cia peb ua kom meej tias tag nrho cov onCommentBlock thiab cov lus pom tau piav qhia los ntawm lawv.

Rov qab mus rau tsev kawm ntawv: yuav ua li cas cob qhia cov neeg ntsuas phau ntawv los daws cov kev xeem automated

Tag nrho:

"//div[contains(@class, β€˜stream-panel’)]//a[contains(@class,'author') and text()='{{ userName }}’]//div[contains(@class,'change-wrapper') and contains(.,'{{ text }}’)]"

Qhov kev txiav txim ntawm zaj dab neeg tseem ceeb heev. Ua ntej, peb nqa ib qho xpath uas twb muaj lawm thiab qhia tias cov ntsiab lus tab muaj li cas thiab tsuas yog ib lub caij. Tom ntej no, peb yuav tham txog cov qauv: thaum twg koj xav siv WebElement, thiab thaum twg koj xav tau los tsim ib daim ntawv cais rau lub caij tshiab. Qhov no yuav ua rau koj nkag siab zoo dua qub txeeg qub teg.

Nws yuav tsum tau hais meej meej tias ib lub ntsiab lus yog tag nrho cov haujlwm saib, nws muaj cov menyuam yaus - tag nrho cov kwj dej, uas muaj cov menyuam yaus - cov lus sib cais, thiab lwm yam. Cov ntsiab lus me nyuam nyob hauv niam txiv cov ntsiab lus ob qho tib si ntawm nplooj ntawv thiab hauv cov qauv ntawm autotest moj khaum.

Lub sijhawm no, cov neeg tuaj saib yuav tsum tau nkag siab meej tias lawv tau txais txiaj ntsig li cas thiab dab tsi tuaj yeem nkag tau tom qab lub ntsiab lus ntawm onCommentBlock. Hauv qhov no, peb piav qhia txhua tus neeg ua haujlwm: /, //, ., [] thiab lwm yam. Peb ntxiv kev paub txog kev siv rau hauv kev thauj khoom @class thiab lwm yam tsim nyog.

Rov qab mus rau tsev kawm ntawv: yuav ua li cas cob qhia cov neeg ntsuas phau ntawv los daws cov kev xeem automated

Cov tub ntxhais kawm yuav tsum nkag siab tias yuav txhais li cas xpath li no. Los sib sau ua ke - yog lawm, ua homework. Peb tshem tawm cov lus piav qhia ntawm cov ntsiab lus, cia lawv rov ua haujlwm ntawm cov kev xeem.

Vim li cas txoj kev tshwj xeeb no?

Peb yuav tsum tsis txhob overload ib tug neeg uas muaj kev txawj ntse, tab sis peb yuav tsum piav qhia txhua yam nyob rau hauv ib zaug, thiab qhov no yog ib tug nyuaj nyuaj. Txoj kev no yuav ua rau peb thawj zaug ua rau cov neeg mloog nug cov lus nug thiab tsis to taub ib yam dab tsi thiab teb rau lawv lub sijhawm tom ntej. Yog hais tias koj tham txog tag nrho cov architecture, ces thaum lub sij hawm lub ntsiab lus ntawm cov kauj ruam los yog xpath yog soj ntsuam, qhov tseem ceeb tshaj plaws ntawm nws twb yuav tsis nco qab lawm vim lawv incomprehensibility.

Txawm li cas los xij, qee tus ntawm koj yuav muaj peev xwm qhia koj qhov kev paub txog yuav ua li cas cov txheej txheem tuaj yeem ua kom zoo dua ntxiv. Kuv yuav zoo siab nyeem cov lus qhia zoo sib xws hauv cov lus!

Tau qhov twg los: www.hab.com

Ntxiv ib saib