how automate repetitive qa tasks using excel macros
Овај детаљни водич о КА-овом макро начину размишљања објашњава како аутоматизовати понављајуће задатке КА помоћу Екцел макронаредби са примерима и сликама екрана Екцел листова:
Потреба за аутоматизацијом у данашњем свету један је од основних и растућих захтева. Данас сви траже нешто што му олакшава посао или гњаважу укључену у рутински посао.
У данашње време нико не жели да посети мобилну продавницу, стане у редове да би напунио свој телефон, погодно је не физички посетити било где, већ напунити телефон на мрежи у делићу секунде.
Почевши од плаћања рачуна за комуналне услуге путем мрежног банкарства, резервације и праћења вашег кабине на мрежи, куповине ствари на мрежи на различитим веб локацијама е-трговине до употребе различитих аутоматизованих уређаја попут машина за прање веша, микроталасних пећница, гејзира и паметних телефона који се непрестано развијају, итд. жудња за паметним и аутоматизованим производима у облику услуга или направа.
У овом чланку нећемо расправљати о употреби било ког алата за аутоматизацију или било чега у вези са вештачком интелигенцијом или машинским учењем, али фокус ће бити на пукој употреби Екцела за аутоматизацију свакодневних рутинских задатака КА.
Шта ћете научити:
КА'с Мацро Миндсет
Ручни тестери обично размишљају о томе да ја као ручни тестер немам никакве везе ни са једним техничким или другим речима, „кодирање знања није моја шоља чаја“. Ово је вероватно погрешно размишљање које би могло зауставити наш раст као инжењера.
Ручно осигурање квалитета има много дневних задатака који се могу понављати након истог тока посла. КА може врло добро идентификовати такве задатке и аутоматизовати их користећи Екцел макрое и / или формуле.
Ово може помоћи на два начина:
- Смањује време утрошено на ручне напоре.
- Такође, инспирише КА за учење и прилагођавање логичком размишљању и вештинама на техничком плану.
Ствари се могу аутоматизовати за све фазе тестирања наведене у наставку:
- Планирање и процена теста.
- Дизајн теста или припрема тест случаја.
- Ажурирање статуса извршења теста.
- Извештај о испитивању и креирање показатеља.
Брзо подешавање контекста
# 1) Екцел сачуван са. Додатак клскм је Екцел са омогућеном макронаредбом.
#два) Да бисте омогућили макро у програму Екцел, изаберите Датотека -> Опције -> Центар за поверење -> Поставке центра за поверење -> Поставке макронаредби -> Изаберите радио дугме „Омогући све макронаредбе“ и означите поље за потврду „Поуздајте приступ објектном моделу пројекта ВБА“. Кликните ОК.
# 3) Изаберите мени Поглед -> Макронаредбе -> Снимање макронаредби -> Обавите неку активност и Зауставите макронаредбе . Можете уредити макронаредбу и прегледати ВБА код забележен у ВБА едитор прозор. Слично томе, своје кодове можете експлицитно додати да бисте креирали макро.
# 4) Погледаћемо одређене примере таквих понављајућих задатака који би могли бити добри кандидати за аутоматизацију путем Екцел макронаредби / формула.
Пример употребе # 1
На крају сваке функционалне фазе треба идентификовати неке случајеве испитивања за регресију из функционалног пакета. Ово је поступак који треба пратити у сваком спринту или итерацији.
Решење
Да би се смањио напор око идентификовања и ручног креирања пакета регресије, може се применити доњи иновативни поступак.
- Могли бисте да направите лист са функцијским тест случајевима са додатним ступцем за означавање тест случајева / сценарија као Да / Не за регресију.
- Затим створите макро за исти, такав да се приликом покретања макронаредбе сви тест случајеви / сценарији са регресијом означени као „Да“ копирају на други лист.
- Дакле, ово ће избећи додатну вежбу проласка кроз све функционалне тест случајеве на крају спринта, а затим улагања додатних напора у извлачење сваког тест случаја у регресијски пакет.
Демо
- Први лист „ФунцтионалТестСценариос“ садржи све функционалне сценарије теста / тест случајеве.
- Постоји додатна колона „Укључити у пакет за регресију?“ додато на крају колона за тестирање да би се означило „Да“ или „Не“ идентификовањем да ли сваки од тест сценарија мора бити укључен у регресиони пакет.
- Постоји други лист креиран као ‘РегрессионСуите’ и ово ће аутоматски дохватити све сценарије регресионог теста кроз макро.
- ЦТРЛ + СХИФТ + С је постављен као пречица за извршавање макроа.
ФунцтионалТестСценариос
РегрессионСуите
ВБА (макро) код
Sub RegressionSuite() ' Keyboard Shortcut: Ctrl+Shift+S Sheets('FunctionalTestScenarios').Activate Rows('1:1').Select Selection.AutoFilter Sheet1.Range('$A:$D').AutoFilter Field:=4, Criteria1:='Yes' Lastrow=Sheets('FunctionalTestScenarios') .Cells(Sheets('FunctionalTestScenarios').Rows.Count, 'A').End(xlUp).Row Range('A2:C2' & Lastrow).Select Selection.Copy Sheets('RegressionSuite').Select Range('A2').Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _:=False, Transpose:=False End Sub
Објашњење кода
- Табеле („ФунцтионалТестСценариос“). Активирати: Када је у Екцелу више листова, методом Активирај активира се први лист и стога је фокус изричито постављен на први лист.
- Редови („1: 1“). Изаберите: Ова изјава бира први ред за све колоне првог листа.
- Селецтион.АутоФилтер: Ова изјава примењује филтер на изабрани први ред.
- Лист1.Ранге („$ А $ 1: $ Д $ 38 ″). Поље аутоматског филтрирања: = 4, Критеријуми1: =“ Да ”: Ова изјава примењује аутоматски филтер на колону број 4, тј. „Укључити у пакет за регресију?“ и филтрира записе за вредност „Да“.
- Ластров = листови („ФунцтионалТестСценариос'). Ћелије (листови („ФунцтионалТестСценариос'). Редови. Број, „А“). Крај (клУп). Ред: Ова изјава добија последњи број редова првог листа.
- Опсег („А2: Ц2“ и Ластров). Изаберите: Ова изјава бира све редове и колоне првог листа са Укључи у пакет за регресију? = Да.
- Селецтион.Цопи: Ова изјава копира све изабране записе.
- Табеле („РегрессионСуите“). Изаберите: Ова изјава отвара 2ндлист.
- Опсег („А2“). Изаберите: Ова изјава бира ћелију А2 од 2ндлист.
- Селецтион.ПастеСпециал Пасте: = клПастеВалуес, Оператион: = клНоне, СкипБланкс _: = Фалсе, Транспосе: = Фалсе: Ова изјава копира изворну вредност ћелије на одредишни лист. Одредишни опсег ћелија садржи само израчунате вредности помоћу формула. Алтернативно, Пасте: = клВалуес се такође може користити. Ниједна празнина се не прескаче. Изворне ћелије се не транспонују и не врше се математичке операције.
Пример употребе # 2
Постоје тренуци када треба да направите тест случајеве за рецимо 100 држава или 1000 ентитета (попут 1000 образаца осигурања). Пробни кораци за ову огромну листу држава или ентитета могу бити исти и понављати се.
Упркос томе, припрема тестног случаја могла би бити једна од активности које одузимају највише времена, јер је постојање документа о тестном случају веома важно да се од клијента откупе потребне процене и да КА тим тестира сваки од тест случајева унутар тачно процењени рокови.
Решење
У таквим случајевима, дуготрајни напори на припремама за тест могу се свести на делић секунди помоћу макронаредбе.
- Можете да направите лист у коме само дајете улаз као тестни пример и јединствену листу ентитета.
- Направите макро који када се изврши додаје понављане редове корака за тестирање за сваки од ових ентитета и документ тест случаја је готов за неколико секунди, а да не мора да потроши значајну количину ручних напора потребних за припрему тест случајева.
Демо
- Први лист „ГетТестцасесАСАП“ једини је овде макро-лист који је у почетку празан.
- Још један лист „Узорак улазних података“ не игра никакву улогу у макронаредби. Садржи само узорке улазних података у демо сврхе.
- Копирајте и налепите податке из узорка улазних података у распону од А2 до Б12 на први лист.
- Можете копирати и налепити улазне податке у формату - Колона А = ……. и колона Б =.
- Када су улазни подаци спремни, притисните ЦТРЛ + СХИФТ + Т као пречице за извршавање макроа.
- Кораци теста се аутоматски додају за све ИД-ове тест примера и документ о тест случају се припрема за само неколико секунди.
ГетТестцасесАСАП
Узорак улазних података
Улазни подаци се лепе у први лист.
Слика током извршавања макроа притиском на ЦТРЛ + СХИФТ + Т.
ВБА (макро) код
Sub GetTestcasesQuick() ' GetTestcasesQuick Macro ' Keyboard Shortcut: Ctrl+Shift+T Sheets('GetTestcasesASAP').Activate lastrow =Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row Dim AddRows As Integer AddRows = 5 Dim i As Integer i = lastrow Do While i <> 1 Rows(i & ':' & i + AddRows).Insert i = i - 1 Loop ScreenUpdating = True lastrow = Sheets('GetTestcasesASAP').Cells(Sheets('GetTestcasesASAP').Rows.Count, 'A').End(xlUp).Row i = 2 While i <= lastrow + 6 Sheets('GetTestcasesASAP').Cells(i, 3) = 'Validate rates-factor combinations' Sheets('GetTestcasesASAP').Cells(i + 1, 3) = 'Batch job schedules and runs. ' Sheets('GetTestcasesASAP').Cells(i + 2, 3) = 'Commissioning calculations settlements' Sheets('GetTestcasesASAP').Cells(i + 3, 3) = 'Quick and detailed quote' Sheets('GetTestcasesASAP').Cells(i + 4, 3) = 'Benefit illustration ' Sheets('GetTestcasesASAP').Cells(i + 5, 3) = 'Benefit summary validation' i = i + 7 Wend End Sub
Објашњење кода
(а) Табеле („ГетТестцасесАСАП“). Активирајте: Ова изјава активира први лист.
примери тест примера у софтверском тестирању
(б) ластров = листови („ГетТестцасесАСАП“). Ћелије (листови („ГетТестцасесАСАП“). редови.број, „А“). крај (клУп). ред: Ова изјава добија последњи број редова. Овај пут ће добити укупан број бројева редова за почетне ИД-ове тест случајева који су управо додати као део улазних података пре извршавања макронаредбе.
(ц) Затамни АддРовс као целобројне: Ова изјава декларише променљиву АддРовс као целобројни тип података.
(д) АддРовс = 5: Ова изјава иницијализује АддРовс са 5. Варијабла се користи за уметање неколико редова након сваког ид тест случаја, тако да се кораци статичког тестирања могу додати за сваки тест случај.
(е) Дим и Ас Интегер: Ова изјава декларише променљиву и као цео број.
(ф) и = ластров : Ова наредба променљивом и додељује почетни број последњих редова.
(г) Урадите док и 1 : Ово чини вхиле петља убацује 6 празних редова након сваког ид тест случаја. Понављање започиње од последњег ид тест случаја који напредује до првог ид тест случаја.
Редови (и & “:” & и + АддРовс) .Уметни
и = и - 1
Лооп
(х) Ажурирање екрана = Тачно : Ова изјава чини свако ажурирање екрана видљивим. Отуда, перформансе макроа могу бити незнатно споре. Да бисте оптимизовали перформансе макроа, такође можете да подесите СцреенУпдатинг = Нетачно .
Постављање СцреенУпдатинг на Фалсе побољшава перформансе макронаредбе и убрзава његово извршавање, међутим, нећете моћи да видите испрекидане промене које се дешавају током извршавања макроа. Уместо тога, промене ће се приказати тек када се изврши извршавање макронаредбе.
(и) ластров = листови („ГетТестцасесАСАП“). Ћелије (листови („ГетТестцасесАСАП“). редови.број, „А“). крај (клУп). ред : Ова изјава поново израчунава последњи број редова након додавања нових 6 редова за сваки тест пример.
(ј) и = 2
(к) Док сам и<= lastrow + 6
Табеле („ГетТестцасесАСАП“). Ћелије (и, 3) = „Провери комбинације стопе и фактора“
Табеле („ГетТестцасесАСАП“). Ћелије (и + 1, 3) = „Групни распореди послова и покретања. „
Табеле („ГетТестцасесАСАП“). Ћелије (и + 2, 3) = „Обрачун обрачуна пуштања у рад“
Табеле („ГетТестцасесАСАП“). Ћелије (и + 3, 3) = „Брза и детаљна понуда“
Табеле („ГетТестцасесАСАП“). Ћелије (и + 4, 3) = „Илустрација погодности“
Табеле („ГетТестцасесАСАП“). Ћелије (и + 5, 3) = „Валидација резимеа погодности“
и = и + 7
Применити
Овај исечак вхиле петље додаје 6 корака корака статичког тестирања за сваки тестцасе постављањем ових редова накнадно након сваког ид тестцасеа.
Статички тест кораци додани за сваки тест случај су следећи:
- Корак 1: Потврдите комбинације стопе и фактора.
- Корак 2: Групни распореди послова и трчања.
- Корак 3: Обрачуни пуштања у рад поравнања.
- Корак 4: Брз и детаљан цитат.
- Корак 5: Бенефит Иллустратион.
- Корак 6: Резиме валидације погодности.
Поред тога, он такође помера следећи тест случаја Ид у низу на 6 + 2, тј. 8тхред.
На пример: Ако је ТЦ1 у првом реду, кораци се додају из другог у седми ред и ТЦ2 се гура у осми ред. Сличан начин прати се и за остатак ИД-а тест примера.
Пример употребе # 3
Постоје случајеви када клијент обезбеди огромну датотеку података негде близу 1000 записа или више, а писање тест случајева за ове огромне записе и мапирање свих података у сваки тест корак је досадан посао. Макро може смањити дане напора на неколико минута и тако уштедети време за припрему тест случаја.
Решење
Датотека података коју пружа клијент може се копирати на лист са омогућеним макронаредбама. Приликом извршавања макронаредбе, тест случајеви се аутоматски креирају у другом листу аутоматским пресликавањем тест података у сваки тест корак за сваки тест случај.
Демо
- Први лист 'Улазни документ' а други лист ‘РеадиТестЦасес’ су главни доприносиоци у макронаредби.
- Други лист „Сампле -ИнпутФиле“ не игра никакву улогу у макроу. Садржи само узорак датотеке улазних података у демо сврхе.
- Једном када подаци из „Сампле-ИнпутФиле“ или датотека података коју пружа клијент се копира у први лист, тј. „ИнпутФиле“,
- Извршите макро и тест случајеви се аутоматски креирају за сваки тест случај где су ИД налога постављени као ИД случаја теста ( Белешка: Не заборавите да јединствени идентификатор поставите као прву колону у ИнпутФиле).
- До сада нисмо поставили пречицу за покретање макронаредба, већ је морамо покренути кроз опцију покретања на Поглед -> Макрои -> Изаберите Макро -> Уреди -> ВБА прозор.
- Макро код се динамички бави додавањем корака теста. На крају проверава да ли је било која вредност поља празна, ако је одговор да, брише корак тестирања за исти корак који не би био потребан за празно поље. На пример, ако погледате улазну датотеку испод, 2ндзапис нема вредност за Датум испоруке, а трећи ред нема вредност за Регион. Стога, након извршавања макроа, тест случајеви који се аутоматски креирају неће имати кораке тестирања који одговарају овим празним вредностима.
Сампле- ИнпутФиле
ИнпутФиле: Након извођења података за копирање лепљења из узорка ИнпутФиле у ИнпутФиле
Белешка:
- Не налепите заглавље колоне са листа „Сампле-ИнпутФиле“.
- Жута означена поља су празна, стога кораци испитивања који одговарају овим празним вредностима не би требало да се креирају путем макронаредбе.
Слика листа РеадиТестцасес након покретања макронаредби.
ВБА (макро) код
Sub Macro1() ScreenUpdating = False '-------- Assign the first column value of Inputfile sheet to first column of ReadyTestCases sheet' This is the TC Id -- ThisWorkbook.Sheets('InputFile').Activate nrow = ThisWorkbook.Sheets('InputFile').Cells(Rows.Count, 1).End(xlUp).Row ncol = ThisWorkbook.Sheets('InputFile').Cells(1, Columns.Count).End(xlToLeft).Column i = 1 j = 1 For i = 1 To nrow ThisWorkbook.Sheets('ReadyTestCases').Cells(i, 1) = ThisWorkbook.Sheets('InputFile').Cells(i, 1) Next i ' ---------------------Inserting 20 buffer blank rows for each row in InputFile sheet--------- lastrow = Sheets('InputFile').Cells(Sheets('InputFile').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('InputFile').Activate AddRows = 21 i = lastrow Do While i <> 1 Rows(i &; ':' & i + AddRows - 1).Insert i = i - 1 Loop ' Inserting 21 buffer blank rows for each row in ReadyTestCases sheet----------- lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row ThisWorkbook.Sheets('ReadyTestCases').Activate AddRowsTC = 21 j = lastrow Do While j <> 1 ' 1 because we dont need extra blank lines after last row Rows(j & ':' & j + AddRowsTC - 1).Insert j = j - 1 Loop '------- Input values into ReadyTestCases sheet from each row of inputfile sheet lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'A').End(xlUp).Row Dim a a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a,3) = ThisWorkbook.Sheets('InputFile').Cells(a, 2) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 3) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 4) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 5) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 6) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 7) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 8) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 9) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 10) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 11) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 12) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 13) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 14) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 15) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 16) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 17) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 18) ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 3) = ThisWorkbook.Sheets('InputFile').Cells(a, 19) a = a + 21 Next a '------- Add verbiages reserved for each row lastrow = Sheets('ReadyTestCases').Cells(Sheets('ReadyTestCases').Rows.Count, 'C').End(xlUp).Row a = 1 ThisWorkbook.Sheets('ReadyTestCases').Activate For a = 1 To lastrow ThisWorkbook.Sheets('ReadyTestCases').Cells(a, 2) = 'Verify Order Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 1, 2) = 'Verify Ship Date' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 2, 2) = 'Verify Ship Mode' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 3, 2) = 'Verify Customer Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 4, 2) = 'Verify Customer Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 5, 2) = 'Verify Segment' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 6, 2) = 'Verify City' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 7, 2) = 'Verify State' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 8, 2) = 'Verify Postal Code' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 9, 2) = 'Verify Region' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 10, 2) = 'Verify Product Id' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 11, 2) = 'Verify Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 12, 2) = 'Verify Sub-Category' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 13, 2) = 'Verify Product Name' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 14, 2) = 'Verify Sales' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 15, 2) = 'Verify Quantity' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 16, 2) = 'Verify Discount' ThisWorkbook.Sheets('ReadyTestCases').Cells(a + 17, 2) = 'Verify Profit' a = a + 21 Next a '------Second last step- remove blank rows from ReadyTestCases and InputFile----- Deleteblankrows ('ReadyTestCases') 'call Delete blank row function for TC sheet ScreenUpdating = True End Sub ‘-------------------------------------------------------------------------------- Sub Deleteblankrows(ByVal Sheet As String) Dim wks As Worksheet Set wks = ThisWorkbook.Worksheets(Sheet) Dim i As Long wks.Activate lastrow = wks.Cells(Sheets(Sheet).Rows.Count, 'C').End(xlUp).Row With ActiveSheet For i = 1 To lastrow 'check each row of column B , if any row is empty then countA=0, delete that entire row If WorksheetFunction.CountBlank(Range(Cells(i, 2), Cells(i, 3))) = 1 Then Selection.Rows(i).EntireRow.Delete End If Next i End With End Sub
Објашњење кода
# 1) СцреенУпдатинг = Фалсе: Ажурирања екрана неће бити видљива постављањем СцреенУпдатинг на Фалсе.
# 2) ТхисВоркбоок.Схеетс („ИнпутФиле“). Активирајте: Ова изјава активира лист „ИнпутФиле“.
# 3) нров = ТхисВоркбоок.Схеетс (“ИнпутФиле”). Ћелије (Ровс.Цоунт, 1) .Енд (клУп) .Ров: Ова изјава добија број укупних редова.
# 4) нцол = ТхисВоркбоок.Схеетс (“ИнпутФиле”). Ћелије (1, колоне.број) .Енд (клТоЛефт) .Цолумн: Ова изјава добија број укупних колона.
# 5) и = 1: Ова изјава иницијализује и са 1.
# 6) ј = 1: Ова изјава иницијализује ј са 1.
# 7) За и = 1 за бацање
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (и, 1) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (и, 1)
Затим сам : Овај исечак копије петље Фор налепи вредност прве колоне (ИД налога у овом случају) листа „ИнпутФиле“ у сваки ред листа „РеадиТестЦасес“ као ИД тест примера.
# 8) ластров = Схеетс („ИнпутФиле“). Ћелије (Схеетс („ИнпутФиле“). Ровс.Цоунт, „А“). Енд (клУп) .Ред: Ова изјава прерачунава последњи број редова датотеке ИнпутФиле.
# 9) АддРовс = 21: Ова изјава додељује променљивој АддРовс 21. Овој променљивој је додељен 21 са намером да се дода 21 празан ред за сваки тест случај за додавање корака теста.
# 10) и = ластров: Ова изјава додељује последњи број последњих редова и.
# 11) Урадите док сам 1
Редови (и & “:” & и + АддРовс - 1) .Уметни
и = и - 1
Петља: Ова изјава додаје 20 редова за сваки тест пример почев од дна до врха.
# 12) ластров = Табеле („РеадиТестЦасес“). Ћелије (листови („РеадиТестЦасес“). Редови. Број, „А“). Крај (клУп). Ред: Ова изјава израчунава најновији укупан број редова.
# 13) ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Активирати: Кроз ову изјаву активира се други лист.
# 14) Затамни: Ова изјава проглашава променљиву а.
# 15) а = 1: Ова изјава додељује 1 а.
# 16) За а = 1 до последњег
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 2)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 1, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 3)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 2, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 4)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 3, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 5)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 4, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 6)
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 5, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле“). Ћелије (а, 7)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 6, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 8)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 7, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 9)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 8, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 10)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 9, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 11)
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 10, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле“). Ћелије (а, 12)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 11, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 13)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 12, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 14)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 13, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 15)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 14, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 16)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 15, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 17)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 16, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 18)
ТхисВоркбоок.Схеетс („РеадиТестЦасес'). Ћелије (а + 17, 3) = ТхисВоркбоок.Схеетс („ИнпутФиле'). Ћелије (а, 19)
а = а + 21
Следеће а: Фрагмент фор петље мапира вредности из сваке колоне листа ИнпутФиле у односу на сваки тест корак за сваки ИД тест случаја.
# 17) ластров = Схеетс („РеадиТестЦасес'). Ћелије (Схеетс („РеадиТестЦасес'). Ровс.Цоунт, „Ц“). Енд (клУп) .Ров : Ова изјава израчунава укупан број редова листа РеадиТестЦасес након додавања 21 реда за сваки тест случаја.
# 18) а = 1: Ова изјава додељује променљивој а 1.
# 19) ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Активирајте: Ова изјава активира лист РеадиТестЦасес.
# 20) За а = 1 до последњег стаса
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а, 2) = „Потврди датум поруџбине“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 1, 2) = „Верификујте датум испоруке“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 2, 2) = „Верифи Схип Моде“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 3, 2) = „Верификујте ИД клијента“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 4, 2) = „Верификујте име купца“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 5, 2) = „Верификуј сегмент“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 6, 2) = „Верификуј град“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 7, 2) = „Верифи Стате“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 8, 2) = „Верификујте поштански број“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 9, 2) = „Верификуј регион“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 10, 2) = „Верификујте ИД производа“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 11, 2) = „Верификуј категорију“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 12, 2) = „Потврди поткатегорију“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 13, 2) = „Верификујте назив производа“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 14, 2) = „Верификујте продају“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 15, 2) = „Провери количину“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 16, 2) = „Потврди попуст“
ТхисВоркбоок.Схеетс („РеадиТестЦасес“). Ћелије (а + 17, 2) = „Верифи Профит“
а = а + 21
Следеће а - Овај исечак фор петље додаје статичке кораке теста за сваки тест случај.
# 21) Делетебланкровс („РеадиТестЦасес“): Позовите функцију Делетебланкров за листу „Реади ТестЦасес’с лист“.
# 22) СцреенУпдатинг = Тачно: Ово вам омогућава да визуализујете ажурирања екрана која се дешавају као део извршавања макронаредби.
# 23) Суб Делетебланкровс (БиВал лист као низ): Доњи код је за функцију Делетбланкровс која ће динамички проверавати има ли празних вредности у пољима података. Ако је одговор да, тест корак креиран за празне податке ће се брисати редом брисањем таквих редова.
# 24) Затамни рад као радни лист: Ова изјава декларише променљиву вкс као радни лист.
# 25) Постави вкс = ТхисВоркбоок.Ворксхеетс (Схеет): Ова изјава додељује вкс лист дат као улазни параметар.
# 26) Дим и ас лонг: Ова облога проглашава И Лонг.
# 28) вкс.Активирај: Ова изјава активира лист.
# 29) ластров = вкс.Целлс (Схеетс (Схеет) .Ровс.Цоунт, “Ц”). Енд (клУп) .Ров: Ова изјава добија број последњег реда на листу.
# 30) За и = 1 до последњег: Петља Фор се понавља од првог до последњег реда.
# 31) Ако је ВорксхеетФунцтион.ЦоунтБланк (опсег (ћелије (и, 2), ћелије (и, 3))) = 1 Тада: Овај услов проверава да ли се за сваки ред друга и трећа колона у празну вредност рачунају као 1.
# 32) Селецтион.Ровс (и) .ЕнтиреРов.Делете: Ова изјава брише изабрани ред ако је услов тачан.
Пример употребе # 4
Екцел формуле у предлошку Тест процене могу се покренути и помоћу макроа. Графикон се такође креира помоћу макронаредбе.
Демо
- Одржава се лист „Процене“ који ће омогућити корисницима да додају процењени број сати за фазе тестирања, почев од разумевања пословних захтева до креирања, извршавања и прераде на ажурирању скрипти за тестирање.
- Зелено истакнуте ћелије омогућене су за унос корисника. То су поља за унос.
- Означени плавом бојом су аутоматски изведени.
- Други лист укључује метрике Прерада, а трећи лист садржи метрике сложености.
- Корисник уноси величину сложености у терминима Х, Л и М у колону Д, а колона Е аутоматски преузима фактор сложености помоћу влоокупа из „Показатељи сложености“ лист.
- Корисник уноси величину прераде у смислу Х, Л и М у колону Ф, а колона Г аутоматски преузима фактор сложености помоћу влоокупа са листа „Реворк метрицс“.
- Фактори се затим користе у колони Х за прикупљање укупних напора за процену.
- Други макро када се изврши припрема графикон и додаје га на четврти лист „Графикон“.
- Укључене формуле се покрећу преко макроа помоћу тастера пречица ЦТРЛ + СХИФТ + Е.
Процене
Прерадите метрику
Метрике сложености
Графикон
ВБА (макро) код за прорачун
' Keyboard Shortcut: Ctrl+Shift+E ThisWorkbook.Sheets(1).Activate Sheets('Estimates').Cells(4, 8) = Sheets('Estimates').Cells(4, 2) * Sheets('Estimates').Cells(4, 3) * Sheets('Estimates').Cells(4, 5) * Sheets('Estimates').Cells(4, 7) Sheets('Estimates').Cells(5, 8) = Sheets('Estimates').Cells(5, 2) * Sheets('Estimates').Cells(5, 3) * Sheets('Estimates').Cells(5, 5) * Sheets('Estimates').Cells(5, 7) Sheets('Estimates').Cells(6, 8) = Sheets('Estimates').Cells(6, 2) * Sheets('Estimates').Cells(6, 3) * Sheets('Estimates').Cells(6, 5) * Sheets('Estimates').Cells(6, 7) Sheets('Estimates').Cells(7, 8) = Sheets('Estimates').Cells(7, 2) * Sheets('Estimates').Cells(7, 3) * Sheets('Estimates').Cells(7, 5) * Sheets('Estimates').Cells(7, 7) Sheets('Estimates').Cells(8, 8) = Sheets('Estimates').Cells(8, 2) * Sheets('Estimates').Cells(8, 3) * Sheets('Estimates').Cells(8, 5) * Sheets('Estimates').Cells(8, 7) Sheets('Estimates').Cells(9, 8) = Sheets('Estimates').Cells(9, 2) * Sheets('Estimates').Cells(9, 3) * Sheets('Estimates').Cells(9, 5) * Sheets('Estimates').Cells(9, 7) Sheets('Estimates').Cells(10, 8) = Sheets('Estimates').Cells(10, 2) * Sheets('Estimates').Cells(10, 3) * Sheets('Estimates').Cells(10, 5) * Sheets('Estimates').Cells(10, 7) Sheets('Estimates').Cells(11, 8) = Sheets('Estimates').Cells(4, 8) + Sheets('Estimates').Cells(5, 8) + Sheets('Estimates').Cells(6, 8) + Sheets('Estimates').Cells(7, 8) + Sheets('Estimates').Cells(8, 8) + Sheets('Estimates').Cells(9, 8) + Sheets('Estimates').Cells(10, 8) ‘--------------------------------------------------- For i = 3 To 10 Sheets('Chart').Cells(i - 2, 1) = Sheets('Estimates').Cells(i, 1) Sheets('Chart').Cells(i - 2, 2) = Sheets('Estimates').Cells(i, 8) Next i End Sub
Објашњење кода
(а) ТхисВоркбоок.Схеетс (1) .Ацтиват: Активира се први лист „Процене“.
(б) Листови („Процене'). Ћелије (4, 8) = Листови („Процене'). Ћелије (4, 2) * Листови („Процене'). Ћелије (4, 3) * Листови („Процене' ). Ћелије (4, 5) * Листови („Процене“). Ћелије (4, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 4.
(ц) Листови („Процене'). Ћелије (5, 8) = Листови („Процене'). Ћелије (5, 2) * Листови („Процене'). Ћелије (5, 3) * Листови („Процене' ). Ћелије (5, 5) * Листови („Процене“). Ћелије (5, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 5.
(д) Листови („Процене“). Ћелије (6, 8) = Листови („Процене'). Ћелије (6, 2) * Листови („Процене'). Ћелије (6, 3) * Листови („Процене“) ). Ћелије (6, 5) * Листови („Процене“). Ћелије (6, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 6.
(е) Листови („Процене'). Ћелије (7, 8) = Листови („Процене'). Ћелије (7, 2) * Листови („Процене'). Ћелије (7, 3) * Листови („Процене') ). Ћелије (7, 5) * Листови („Процене“). Ћелије (7, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 7.
(ф) Листови („Процене'). Ћелије (8, 8) = Листови („Процене'). Ћелије (8, 2) * Листови („Процене'). Ћелије (8, 3) * Листови („Процене' ). Ћелије (8, 5) * Листови („Процене“). Ћелије (8, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 8.
(г) Листови („Процене'). Ћелије (9, 8) = Листови („Процене'). Ћелије (9, 2) * Листови („Процене'). Ћелије (9, 3) * Листови („Процене' ). Ћелије (9, 5) * Листови („Процене“). Ћелије (9, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 9.
(х) Листови („Процене“). Ћелије (10, 8) = Листови („Процене'). Ћелије (10, 2) * Листови („Процене'). Ћелије (10, 3) * Листови („Процене“) ). Ћелије (10, 5) * Листови („Процене“). Ћелије (10, 7): Ова изјава израчунава колону Б * колона Ц * колона Е * колона Г и додељује колони Х за ред 10.
(и) Листови („Процене'). Ћелије (11, 8) = Листови („Процене'). Ћелије (4, 8) + Листови („Процене'). Ћелије (5, 8) + Листови („Процене') ). Ћелије (6, 8) + листови („Процене'). Ћелије (7, 8) + листови („Процене'). Ћелије (8, 8) + листови („Процене“). Ћелије (9, 8) + Листови („Процене“). Ћелије (10, 8): Ова изјава сумира ћелију Х2 до Х10 и додељује коначну вредност Х11. Ова вредност обезбеђује укупан напор (у сатима).
(ј) За и = 3 до 10
Табеле („Графикон“). Ћелије (и - 2, 1) = Табеле („Процене“). Ћелије (и, 1)
Табеле („Графикон“). Ћелије (и - 2, 2) = Табеле („Процене“). Ћелије (и, 8)
Затим сам : Ова копија Фор Лооп лепи податке из колоне 1 и колоне 8 листа Процене у лист Графикон. То се ради тако да се подаци са листа графикона могу користити за припрему тортног графикона. Постоји још један макро написан за лист „Графикон“ који припрема графикон за исти.
ВБА (макро) код за графикон
Sub CreateChart() Dim rng As Range Dim cht As Object ThisWorkbook.Sheets('Chart').Activate Set rng = ActiveSheet.Range('A2:B8') Set est = ThisWorkbook.Sheets('Chart').Shapes.AddChart2 est.Chart.SetSourceData Source:=rng est.Chart.ChartType = xl3DPieExploded est.Chart.HasTitle = True est.Chart.ChartTitle.Text = 'Test Estimates' est.Chart.SetElement (msoElementDataLabelCenter) est.Chart.SetElement (msoElementLegendBottom) End Sub
Објашњење кода
- Дим рнг Ас Ранге: Ова изјава проглашава рнг као вредност опсега.
- Дим је као објекат: Ова изјава декларише ест као вредност објекта.
- Ова радна свеска. Листови („Графикон“). Активирајте: Ова изјава активира лист са графиконима.
- Поставите рнг = АцтивеСхеет.Ранге (“А2: Б8”): Опсег од А2 до Б8 на табели табела постављен је на рнг.
- Сет ест = ТхисВоркбоок.Схеетс („Графикон“). Схапес.АддЦхарт2: Ова изјава се користи за иницирање стварања нове карте на листу-графикону.
- ест.Цхарт.СетСоурцеДата Извор: = рнг: Ова изјава пружа опсег података за контемплацију на графикону.
- ест.Цхарт.ЦхартТипе = кл3ДПиеЕкплодед: Тип графикона је постављен на 3Д Пие од Екплодед типа. кл3ДПиеЕкплодед помаже у одређивању овог типа графикона.
- ест.Цхарт.ХасТитле = Тачно: Ова изјава проверава да ли графикон већ има наслов.
- ест.Цхарт.ЦхартТитле.Тект = 'Процене теста': Ова изјава замењује наслов графикона на „Процене процена“.
- ест.Цхарт.СетЕлемент (мсоЕлементДатаЛабелЦентер): Ова изјава поставља ознаке података и легенде за графикон.
- ест.Цхарт.СетЕлемент (мсоЕлементЛегендБоттом): Ова изјава поставља ознаке података на дно графикона.
Начини извршавања макронаредби
Макро се може извршити на 4 начина:
- Коришћење иконе Покрени на прозору ВБА уређивача.
- У Екцел датотеци изаберите опцију менија Виев -> Мацрос -> Виев Мацро -> Изаберите назив макронаредбе и изаберите Рун.
- Створите пречицу док правите макро, а притискање тастера пречице покреће извршавање макроа.
- Најкориснији начин је стварање дугмета за акцију ( На пример. Командно дугме) коме би био додељен макро који би кликањем покренуо извршење макроа.
Видећемо како да додамо командно дугме и дугмету доделимо макро. Када се кликне на дугме, извршиће се извршавање макронаредбе.
Додајте дугме за контролу образаца у Екцел
- Изаберите Мени „Програмер“ -> Уметни -> Контроле обрасца -> Икона дугмета „Изаберите“ и додајте дугме на Екцел листу.
- Унесите име и вредност текста за дугме. Име дугмета се користи у ВБА кодирању за препознавање овог командног дугмета, док је текст оно што се приказује на дугмету.
- Сада кликните десним тастером миша на командно дугме и изаберите опцију „Додели макро“ , појавиће се листа макронаредби, изаберите име макронаредбе коју желите да доделите.
- Једном када је макро додељен, клик на дугме покреће извршавање додељеног макронаредбе.
- У овом примеру, „Преузми процене теста“ тастер је додељен 'Процене' макро.
- Слично томе, додаћемо командно дугме за лист Графикон и доделити макро за Графикон да покрене генерисање графикона.
- Кликом на „Направи графикон“ дугме покреће макро за графикон. Ово побољшава употребљивост макроа.
Закључак
То је било неколико примера у стварном времену који би могли да буду део свакодневне рутине тестера на послу, а који би могли паметно да се идентификују за генерисање макронаредби и да би аутоматизацијом задатка могли уштедети довољно времена на ирелевантним и понављајућим ручним напорима.
Релевантне снимке екрана, ВБА код и детаљно разумевање сваке линије кода обрађени су у овом чланку. Надам се да ће ово пружити добар почетак питањима квалитета како да се трансформишу из ручног тестирања у макро начин размишљања.
За људе који верују да је посао ручног тестера само нетехнички посао, докажимо им да греше потребном применом техничког знања за побољшање продуктивности.
Аутор: Овај детаљни корисни пост написала је Схобха Д. Она ради као вођа пројекта и има више од 9 година искуства у ручном, аутоматизацијском (ИБМ РФТ и Селениум користећи Јаву) и АПИ тестирању.
Препоручено читање
- Рад са ВБСцрипт Екцел објектима
- Израда оквира за селенијум и приступање тест подацима из програма Екцел - Туториал бр. 21
- 5 најчешћих задатака тестирања Тестери који забораве да тестирају (и како то избећи)
- Топ 5 ствари које тестер мора да примени (и променљиве перспективе софтверског тестера)
- Подзадатак ЈИРА са примером (ЈИРА Цреате Под-задатак)