how automate repetitive qa tasks using excel macros
Цей поглиблений посібник про макрос миттєвого контролю QA пояснює, як автоматизувати повторювані завдання контролю якості за допомогою макросів Excel із прикладами та скріншотами аркушів Excel:
Потреба в автоматизації в сучасному світі є однією з основних і зростаючих вимог. Сьогодні кожен шукає чогось, що полегшує його / її роботу або клопоти, пов’язані з рутинною роботою.
У наш час ніхто не хоче відвідувати мобільний магазин, стояти в чергах, щоб зарядити свій телефон, зручно нікуди не відвідувати фізично, а зарядити телефон в Інтернеті за долі секунди.
Починаючи від оплати рахунків за комунальні послуги через мережевий банкінг, бронювання та відстеження кабіни в Інтернеті, покупки речей в Інтернеті на різних сайтах електронної комерції до використання різних автоматизованих приладів, таких як пральні машини, мікрохвильова піч, гейзер та постійно розвиваються смартфони тощо, сьогоднішній світ справді справді тяга до розумних та автоматизованих продуктів у вигляді послуг або гаджетів.
У цій статті ми не збираємося обговорювати використання будь-яких засобів автоматизації чи щось інше щодо штучного інтелекту чи машинного навчання, але основна увага буде зосереджена на простому використанні Excel для автоматизації щоденних рутинних завдань контролю якості.
Що ви дізнаєтесь:
Macro Mindset від QA
Ручні тестери зазвичай думають, що я, будучи ручним тестером, не маю нічого спільного ні з чим технічним чи іншими словами, «ноу-хау з кодування - це не моя чашка чаю». Це, мабуть, неправильне мислення, яке може зупинити наше зростання як інженерів.
Керівництво з контролю якості має багато щоденних завдань, які можуть повторюватися після того самого робочого процесу. Орган контролю якості може дуже добре ідентифікувати такі завдання та автоматизувати їх за допомогою макросів Excel та / або формули.
Це може допомогти двома способами:
- Зменшує час, витрачений на ручні зусилля.
- Крім того, надихає QA на навчання та адаптацію до логічного мислення та підвищення кваліфікації на технічному фронті.
Речі можуть бути автоматизовані для всіх етапів тестування, перелічених нижче:
- Планування та оцінка тестів.
- Розробка тесту або підготовка тестового кейсу.
- Оновлення стану виконання тесту.
- Звіт про тестування та створення метрик.
Швидке налаштування контексту
# 1) Ексель, збережений за допомогою. Розширення xlsxm - це макрос із підтримкою Excel.
# два) Щоб увімкнути макрос в Excel, виберіть Файл -> Параметри -> Центр довіри -> Налаштування Центру довіри -> Налаштування макросів -> Виберіть перемикач «Увімкнути всі макроси» і встановіть прапорець «Довіряти доступу до об’єктної моделі проекту VBA». Клацніть OK.
# 3) Виберіть меню Перегляд -> Макроси -> Запис макросів -> Виконайте певні дії та Зупиніть макроси . Ви можете редагувати макрос і переглядати код VBA, записаний у Редактор VBA вікно. Так само ви можете явно додати свої коди, щоб створити макрос.
# 4) Ми розглянемо деякі приклади таких повторюваних завдань, які можуть бути гарними кандидатами для автоматизації за допомогою макросів / формул Excel.
Приклад використання №1
Наприкінці кожної функціональної фази потрібно визначити кілька тестових випадків для регресії з функціонального набору. Це процес, якого слід дотримуватися в кожному спринті або ітерації.
Рішення
Щоб зменшити зусилля щодо ідентифікації та створення набору регресій вручну, може бути реалізований наведений нижче інноваційний процес.
- Ви можете створити аркуш із функціональними тестовими кейсами з додатковим стовпчиком для позначення тестових кейсів / сценаріїв як Так / Ні для регресії.
- Потім створіть макрос для того самого, щоб при запуску макросу всі тестові випадки / сценарії з регресією, позначеними як «Так», були скопійовані на інший аркуш.
- Таким чином, це дозволить уникнути додаткової вправи, щоб пройти всі функціональні тестові кейси в кінці спринту, а потім докласти додаткових зусиль для того, щоб кожен тестовий кейс був витягнутий до набору регресії.
Демо
- Перший аркуш „FunctionalTestScenarios” містить усі сценарії функціонального тестування / тестові приклади.
- Є додаткова графа 'Включити в пакет регресії?' додані в кінці тестових стовпців для позначення 'Так' чи 'Ні', визначаючи, чи кожен із сценаріїв тесту повинен бути включений до набору регресій.
- Є другий аркуш, створений як 'RegressionSuite' і це автоматично отримає всі сценарії тесту регресії через макрос.
- CTRL + SHIFT + S встановлюється як ярлик для виконання макросу.
FunctionalTestScenarios
РегресіяSuite
Код VBA (макрос)
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
Пояснення кодексу
- Таблиці (“FunctionalTestScenarios”). Активувати: Коли в Excel кілька аркушів, метод Activate активує перший аркуш, а отже фокус явно встановлюється на перший аркуш.
- Рядки (“1: 1”). Виберіть: Цей оператор вибирає перший рядок для всіх стовпців першого аркуша.
- Вибір. AutoFilter: Це твердження застосовує фільтр до вибраного першого рядка.
- Аркуш 1. Діапазон (“$ A $ 1: $ D $ 38 ″). Поле автофільтру: = 4, Критерії1: =“ Так ”: Це твердження застосовує автоматичний фільтр до стовпця номер 4, тобто 'Включити в пакет регресії?' і відфільтровує записи за значенням 'Так'.
- Lastrow = Аркуші ('FunctionalTestScenarios'). Клітинки (Sheets ('FunctionalTestScenarios'). Рядки. Кількість, 'A'). Кінець (xlUp). Рядок: Це твердження отримує останню кількість рядків першого аркуша.
- Діапазон (“A2: C2” & Lastrow). Виберіть: Це твердження вибирає всі рядки та стовпці першого аркуша з Включити в пакет регресії? = Так.
- Selection.Copy: Це твердження копіює всі вибрані записи.
- Аркуші (“RegressionSuite”). Виберіть: Це твердження відкриває 2йаркуша.
- Діапазон (“A2”). Виберіть: Це твердження вибирає клітинку A2 з 2йаркуша.
- Selection.PasteSpecial Paste: = xlPasteValues, Операція: = xlNone, SkipBlanks _: = False, Transpose: = False: Цей оператор копіює значення вибраної комірки джерела на аркуш призначення. Діапазон комірок призначення містить лише обчислені значення за допомогою формул. В якості альтернативи також можна використовувати Paste: = xlValues. Жодні пропуски не пропускаються. Вихідні комірки не транспонуються, і математичні операції не виконуються.
Приклад використання №2
Бувають випадки, коли вам потрібно створити тестові кейси для, скажімо, 100 штатів або 1000 організацій (наприклад, 1000 страхових форм). Етапи тесту для цього величезного списку штатів або утворень можуть бути однаковими та повторюваними.
Незважаючи на це, підготовка тестового кейсу може бути однією з найбільш трудомістких заходів, тому що наявність документа тестового кейсу є дуже важливим, щоб придбати необхідні оцінки від клієнта і змусити команду контролю якості перевірити кожен з тестових випадків протягом правильно розраховані терміни.
Рішення
У таких випадках довгі години роботи з підготовки кейсів можуть бути скорочені до частки секунд за допомогою макросу.
- Ви можете створити аркуш, де ви просто надаєте вхідні дані як ідентифікатор тестового випадку та унікальний список сутностей.
- Створіть макрос, який при виконанні додає повторювані рядки кроків тесту для кожного з цих об'єктів, і документ тесту готовий за кілька секунд без необхідності витрачати значну кількість ручних зусиль, необхідних для підготовки тестів.
Демо
- Перший аркуш „GetTestcasesASAP” - це єдиний аркуш, керований макросами, який спочатку є порожнім.
- Ще аркуш „Зразок вхідних даних“ не грає жодної ролі в макросі. Він просто містить зразки вхідних даних для демонстраційних цілей.
- Скопіюйте та вставте дані з вибіркового вводу в діапазон від A2 до B12 на перший аркуш.
- Ви можете скопіювати та вставити вхідні дані у форматі - стовпець A = ……. і стовпець B =.
- Після того, як вхідні дані будуть готові, натисніть CTRL + SHIFT + T як комбінаційні клавіші для виконання макросу.
- Крок тесту додається автоматично для кожного ідентифікатора тесту, і документ тесту готується всього за кілька секунд.
GetTestcasesASAP
Зразок вхідних даних
Вхідні дані вставляються в перший аркуш.
Зображення під час виконання макросу, натиснувши CTRL + SHIFT + T.
Код VBA (макрос)
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
Пояснення кодексу
(а) Аркуші (“GetTestcasesASAP”). Активуйте: Це твердження активує перший аркуш.
модульний тест інтеграція тест тест системи
(b) lastrow = Таблиці (“GetTestcasesASAP”). Клітинки (Таблиці (“GetTestcasesASAP”). Рядки.Кіра, “A”). Кінець (xlUp). Рядок: Це твердження отримує останній рядок. Цього разу він отримає загальну кількість підрахувань рядків для початкових ідентифікаторів тестових випадків, щойно доданих як частина вхідних даних перед виконанням макросу.
(c) Приглушити рядки як цілі числа: Цей оператор оголошує змінну AddRows як цілочисельний тип даних.
(d) AddRows = 5: Цей оператор ініціалізує AddRows за допомогою 5. Змінна використовується для вставки декількох рядків після кожного ідентифікатора тестового випадку, щоб статичні кроки тестування могли бути додані для кожного тестового випадку.
(e) Dim i як ціле число: Цей оператор оголошує змінну i цілим числом.
(f) i = lastrow : Цей оператор призначає початковий рахунок останнього рядка змінній i.
(g) Робити, поки i 1 : Цикл do while вставляє 6 порожніх рядків після кожного ідентифікатора тесту. Цикл починається з останнього прогресу ідентифікатора тесту до першого ідентифікатора тесту.
Рядки (i & “:” & i + AddRows) .Вставити
i = i - 1
Петля
(h) ScreenUpdating = True : Це твердження робить кожне оновлення екрана видимим. Отже, продуктивність макросу може бути трохи повільною. Щоб оптимізувати роботу макросу, ви можете також встановити ScreenUpdating = Помилковий .
Установлення значення ScreenUddating на False покращує продуктивність макросу та пришвидшує його виконання, однак ви не зможете побачити періодичні зміни, що відбуваються під час виконання макросу. Натомість зміни з’являться лише після завершення виконання макросу.
(i) lastrow = Таблиці (“GetTestcasesASAP”). Клітинки (Таблиці (“GetTestcasesASAP”). Рядки.Кілька, “A”). Кінець (xlUp) .Row : Це твердження знову обчислює останню кількість рядків після додавання нових 6 рядків для кожного тесту.
(j) i = 2
(k) Поки я<= lastrow + 6
Таблиці (“GetTestcasesASAP”). Клітинки (i, 3) = “Перевірити комбінації коефіцієнтів коефіцієнт“
Таблиці (“GetTestcasesASAP”). Клітинки (i + 1, 3) = “Пакетні графіки роботи та запуски. “
Таблиці (“GetTestcasesASAP”). Клітини (i + 2, 3) = “Розрахунки введення в експлуатацію”
Таблиці (“GetTestcasesASAP”). Клітинки (i + 3, 3) = “Швидка та детальна пропозиція”
Аркуші (“GetTestcasesASAP”). Клітини (i + 4, 3) = “Ілюстрація переваг”
Таблиці (“GetTestcasesASAP”). Клітинки (i + 5, 3) = “Підсумкова перевірка переваг”
i = i + 7
Подати заявку
Цей фрагмент циклу while додає 6 кроків статичних кроків тесту для кожного тесту, встановлюючи ці рядки згодом після кожного ідентифікатора тесту.
Статичні етапи тестування, додані для кожного тестування, такі:
- Крок 1: Перевірити комбінації коефіцієнтів та коефіцієнтів.
- Крок 2: Пакетні графіки роботи та запуски.
- Крок 3: Введення розрахунків в експлуатацію.
- Крок 4: Швидка та детальна пропозиція.
- Крок 5: Перевага ілюстрації.
- Крок 6: Підсумкова перевірка переваг.
Крім того, він також висуває наступний тестовий приклад Id у послідовності до 6 + 2, тобто 8горядок.
Наприклад: Якщо TC1 знаходиться на першому рядку, кроки додаються з другого на сьомий рядки, а TC2 висувається на восьмий ряд. Подібної моди дотримуються і для решти ідентифікаторів тесту.
Приклад використання №3
Бувають випадки, коли клієнт надає величезний файл даних десь близько 1000 записів або більше, і написання тестових кейсів для цих величезних записів і зіставлення кожних даних із кожним кроком тесту є нудною роботою. Макрос може скоротити дні зусиль до декількох хвилин, тим самим заощаджуючи час підготовки тестового кейсу.
Рішення
Файл даних, наданий клієнтом, можна скопіювати на аркуш із підтримкою макросів. При виконанні макросу тестові кейси автоматично створюються на другому аркуші шляхом автоматичного зіставлення тестових даних з кожним кроком тесту для кожного тестового випадку.
Демо
- Перший аркуш ‘InputFile’ і другий аркуш 'ReadyTestCases' є основними вкладниками в макрос.
- Інший аркуш 'Sample -InputFile' не грає жодної ролі в макросі. Він просто зберігає зразок файлу вхідних даних для демонстраційних цілей.
- Як тільки дані з ‘Sample-InputFile’ або наданий клієнтом файл даних копіюється на перший аркуш, тобто „InputFile“,
- Виконайте макрос, і тестові кейси створюються автоматично для кожного тестового випадку, де ідентифікатори замовлення встановлюються як ідентифікатори тестового випадку ( Примітка: Не забудьте розмістити унікальний ідентифікатор, розміщений як перший стовпець у InputFile).
- На сьогоднішній день у нас не встановлено жодних клавіш швидкого запуску для макросу, натомість нам потрібно запустити його через параметр запуску на Перегляд -> Макроси -> Виберіть Макрос -> Редагувати -> Вікно VBA.
- Макрокод динамічно обробляє додавання тестових кроків. Зрештою, він перевіряє, чи не є значення поля порожнім; якщо так, він видаляє тестовий крок за тим самим кроком, який не потрібен для порожнього поля. Наприклад, якщо ви подивитесь на вхідний файл нижче, 2йзапис не має значення для дати доставки, а третій рядок не має значення для регіону. Отже, після виконання макросу тестові випадки, які створюються автоматично, не матимуть кроків тесту, що відповідають цим порожнім значенням.
Зразок - InputFile
InputFile: Після виконання копіювання даних вставки із зразка InputFile в InputFile
Примітка:
- Не вставляйте заголовок стовпця з аркуша ‘Sample-InputFile’.
- Жовті виділені поля порожні, тому кроки тесту, що відповідають цим порожнім значенням, не слід створювати через макрос.
Зображення аркуша ReadyTestcases після запуску макросу.
Код VBA (макрос)
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) ScreenUpdating = False: Оновлення екрану не буде видно, встановивши для параметра «Обновлення екрана» значення «Помилкове».
# 2) ThisWorkbook.Sheets (“InputFile”). Активуйте: Це твердження активує аркуш „InputFile“.
# 3) nrow = ThisWorkbook.Sheets (“InputFile”). Клітинки (Rows.Count, 1) .End (xlUp) .Row: Це твердження отримує кількість загальних рядків.
# 4) ncol = ThisWorkbook.Sheets (“InputFile”). Клітинки (1, Columns.Count) .End (xlToLeft) .Column: Це твердження отримує кількість загальних стовпців.
# 5) i = 1: Цей оператор ініціалізує i з 1.
# 6) j = 1: Цей оператор ініціалізує j з 1.
# 7) Для i = 1 Знизити
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (i, 1) = ThisWorkbook.Sheets (“InputFile”). Клітини (i, 1)
Далі я: Цей фрагмент копії циклу For вставляє значення першого стовпця (ідентифікатор замовлення в даному випадку) аркуша „InputFile“ у кожен рядок аркуша „ReadyTestCases“ як ідентифікатор тестового вікна.
# 8) lastrow = Аркуші (“InputFile”). Клітинки (Аркуші (“InputFile”). Рядки.Кількість, “A”). Кінець (xlUp). Рядок: Цей оператор перераховує останню кількість рядків InputFile.
# 9) AddRows = 21: Цей оператор призначає змінну AddRows 21. Цю змінну призначено 21 з метою вставки 21 додаткових порожніх рядків для кожного тесту для додавання кроків тесту.
# 10) i = lastrow: Це твердження присвоює останній підрахунок останнього рядка i.
# 11) Робити, поки я 1
Рядки (i & “:” & i + AddRows - 1). Вставити
i = i - 1
Петля: Це твердження додає 20 рядків для кожного тестування, починаючи знизу вгору.
# 12) lastrow = Таблиці (“ReadyTestCases”). Клітинки (Аркуші ('ReadyTestCases'). Рядки. Кількість, 'А'). Кінець (xlUp). Рядок: Це твердження перераховує останню загальну кількість рядків.
# 13) ThisWorkbook.Sheets (“ReadyTestCases”). Активувати: Другий аркуш активується за допомогою цього твердження.
# 14) Затемнити до: Цей оператор оголошує змінну a.
# 15) a = 1: Це твердження присвоює 1 а.
# 16) Для a = 1 до останнього
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 2)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 1, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 3)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 2, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 4)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 3, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 5)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 4, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 6)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 5, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 7)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 6, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 8)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 7, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 9)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 8, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 10)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 9, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 11)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 10, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 12)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 11, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 13)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 12, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 14)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 13, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 15)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 14, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 16)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 15, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 17)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 16, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 18)
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 17, 3) = ThisWorkbook.Sheets (“InputFile”). Клітини (a, 19)
a = a + 21
Далі a: Фрагмент циклу for відображає значення з кожного стовпця аркуша InputFile щодо кожного кроку тесту для кожного ідентифікатора тестового випадку.
# 17) lastrow = Аркуші (“ReadyTestCases”). Клітинки (Аркуші (“ReadyTestCases”). Рядки.Кіра, “C”). Кінець (xlUp) .Row : Цей оператор перераховує загальну кількість рядків аркуша ReadyTestCases після додавання 21 рядка для кожного ідентифікатора тестового випадку.
# 18) a = 1: Це твердження присвоює змінній a 1.
# 19) ThisWorkbook.Sheets (“ReadyTestCases”). Активуйте: Це твердження активує аркуш ReadyTestCases.
# 20) Для a = 1 до останнього
ThisWorkbook.Sheets (“ReadyTestCases”). Клітинки (a, 2) = “Перевірити дату замовлення”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 1, 2) = “Підтвердити дату відправлення”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 2, 2) = “Перевірити режим доставки”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 3, 2) = “Підтвердити ідентифікатор клієнта”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 4, 2) = “Підтвердити ім’я клієнта”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітинки (a + 5, 2) = “Підтвердити сегмент”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 6, 2) = “Підтвердити місто”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітинки (a + 7, 2) = “Перевірити стан”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 8, 2) = “Підтвердити поштовий індекс”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 9, 2) = “Підтвердити регіон”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 10, 2) = “Підтвердити ідентифікатор товару”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітинки (a + 11, 2) = “Перевірити категорію”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітинки (a + 12, 2) = “Перевірити підкатегорію”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 13, 2) = “Перевірити назву товару”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 14, 2) = “Перевірити продажі”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 15, 2) = “Перевірити кількість”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 16, 2) = “Підтвердити знижку”
ThisWorkbook.Sheets (“ReadyTestCases”). Клітини (a + 17, 2) = “Перевірити прибуток”
a = a + 21
Далі a - Цей фрагмент циклу For додає статичні кроки тесту для кожного тестового випадку.
# 21) Deleteblankrows (“ReadyTestCases”): Викличте функцію Deleteblankrow для 'Ready TestCases's Sheet'.
# 22) ScreenUpdating = True: Це дозволяє візуалізувати оновлення екрана, що відбуваються як частина виконання макросу.
# 23) Sub Deleteblankrows (аркуш ByVal як рядок): Наведений нижче код призначений для функції Deletblankrows, яка буде динамічно перевіряти наявність порожніх значень у полях даних. Якщо так, тестовий крок, створений для порожніх даних, буде по черзі видалено шляхом видалення таких рядків.
# 24) Вимкнути робочі дні як робочий аркуш: Цей оператор оголошує змінну wks як Worksheet.
# 25) Набір wks = ThisWorkbook.Worksheets (Sheet): Це твердження призначає аркуш wks, наданий як вхідний параметр.
# 26) Dim i As Long: Цей лайнер оголошує I як Long.
# 28) тиждень Активуйте: Це твердження активує аркуш.
# 29) lastrow = wks.Cells (Sheets (Sheet) .Rows.Count, “C”). End (xlUp) .Row: Це твердження отримує кількість останніх рядків на аркуші.
# 30) Для i = 1 до останнього: Цикл For виконується з першого рядка до останнього.
# 31) Якщо WorksheetFunction.CountBlank (Діапазон (осередки (i, 2), осередки (i, 3))) = 1 Тоді: Ця умова перевіряє, чи для кожного рядка другий і третій стовпець зараховуються до порожнього значення як 1.
# 32) Selection.Rows (i) .EntireRow.Delete: Цей оператор видаляє вибраний рядок, якщо умова відповідає істині.
Приклад використання No4
Формули Excel у шаблоні Тестові оцінки також можна запускати, використовуючи макрос. Діаграма також створюється за допомогою макросу.
Демо
- Ведеться аркуш «Оцінки», який дозволить користувачам додавати розрахункові години для етапів тестування, починаючи від розуміння бізнес-вимог і створюючи, виконуючи та переробляючи оновлення сценаріїв тесту.
- Виділені зеленим кольором комірки активовані для введення користувачем. Це поля введення.
- Виділені синім кольором автоматично похідні.
- Другий аркуш включає метрики переробки, а третій аркуш - метрики складності.
- Користувач вводить розмір складності через H, L та M у стовпець D, а стовпець E автоматично отримує коефіцієнт складності за допомогою vlookup із «Показники складності» аркуша.
- Користувач вводить розмір переробленої величини через H, L та M у стовпець F, а стовпець G автоматично отримує коефіцієнт складності, використовуючи vlookup із аркуша „Rework metrics”.
- Потім фактори використовуються в колонці H для отримання загальних зусиль для оцінки.
- Інший макрос при виконанні готує діаграму та додає її на четвертому аркуші «Діаграма».
- Включені формули керуються за допомогою макросу за допомогою комбінації клавіш CTRL + SHIFT + E.
Оцінки
Переробіть метрики
Метрики складності
Діаграма
Код VBA (макрос) для таблиці оцінок
' 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
Пояснення кодексу
(a) ThisWorkbook.Sheets (1) .Activat: Активується перший аркуш «Оцінки».
(b) Аркуші ('Оцінки'). Клітини (4, 8) = Аркуші ('Оцінки'). Клітини (4, 2) * Аркуші ('Оцінки'). Клітини (4, 3) * Аркуші ('Оцінки' Клітини (4, 5) * Аркуші (“Оцінки”). Клітини (4, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і призначає стовпцю H для рядка 4.
(c) Аркуші ('Оцінки'). Клітини (5, 8) = Аркуші ('Оцінки'). Клітини (5, 2) * Аркуші ('Оцінки'). Клітини (5, 3) * Аркуші ('Оцінки' Клітини (5, 5) * Аркуші (“Оцінки”). Клітини (5, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і присвоює стовпцю H рядку 5.
(d) Аркуші ('Оцінки'). Клітини (6, 8) = Аркуші ('Оцінки'). Клітини (6, 2) * Аркуші ('Оцінки'). Клітини (6, 3) * Аркуші ('Оцінки' Клітини (6, 5) * Аркуші (“Оцінки”). Клітини (6, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і присвоює стовпцю H рядку 6.
(e) Аркуші ('Оцінки'). Клітини (7, 8) = Аркуші ('Оцінки'). Клітини (7, 2) * Аркуші ('Оцінки'). Клітини (7, 3) * Аркуші ('Оцінки' Клітини (7, 5) * Аркуші (“Оцінки”). Клітини (7, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і призначає стовпцю H для рядка 7.
(f) Аркуші ('Оцінки'). Клітини (8, 8) = Аркуші ('Оцінки'). Клітини (8, 2) * Аркуші ('Оцінки'). Клітини (8, 3) * Аркуші ('Оцінки' Клітини (8, 5) * Аркуші (“Оцінки”). Клітини (8, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і призначає стовпцю H для рядка 8.
(g) Аркуші ('Оцінки'). Клітини (9, 8) = Аркуші ('Оцінки'). Клітини (9, 2) * Аркуші ('Оцінки'). Клітини (9, 3) * Аркуші ('Оцінки' Клітини (9, 5) * Аркуші (“Оцінки”). Клітини (9, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і присвоює стовпцю H для рядка 9.
(h) Аркуші ('Оцінки'). Клітини (10, 8) = Аркуші ('Оцінки'). Клітини (10, 2) * Аркуші ('Оцінки'). Клітини (10, 3) * Аркуші ('Оцінки' Клітини (10, 5) * Аркуші (“Оцінки”). Клітини (10, 7): Це твердження обчислює стовпець B * стовпець C * стовпець E * стовпець G і призначає стовпцю H для рядка 10.
(i) Аркуші ('Оцінки'). Клітини (11, 8) = Аркуші ('Оцінки'). Клітини (4, 8) + Аркуші ('Оцінки'). Клітини (5, 8) + Аркуші ('Оцінки' ). Клітини (6, 8) + Аркуші ('Оцінки'). Клітини (7, 8) + Аркуші ('Оцінки'). Клітини (8, 8) + Аркуші ('Оцінки'). Клітини (9, 8) + Аркуші ('Оцінки'). Клітини (10, 8): Це твердження підсумовує комірку H2 до H10 і присвоює остаточне значення H11. Ця величина забезпечує загальні зусилля (у годинах).
(j) Для i = 3 до 10
Таблиці ('Діаграма'). Клітинки (i - 2, 1) = Аркуші ('Оцінки'). Клітинки (i, 1)
Таблиці ('Діаграма'). Клітинки (i - 2, 2) = Аркуші ('Оцінки'). Клітинки (i, 8)
Далі я: Ця копія For Loop вставляє дані зі стовпця 1 та стовпця 8 аркуша оцінок у аркуш діаграми. Це робиться для того, щоб дані з аркуша діаграми можна було використовувати для підготовки секторної діаграми. Існує ще один макрос, написаний для аркуша “Діаграма”, який готує діаграму для того самого.
Код VBA (макрос) для таблиці діаграм
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
Пояснення кодексу
- Dim rng As Range: Цей оператор оголошує rng як значення діапазону.
- Тьмя - це об’єкт: Цей оператор оголошує est як значення об'єкта.
- Ця книжка.Таблиці (“Діаграма”). Активуйте: Це твердження активує таблицю діаграм.
- Встановити rng = ActiveSheet.Range (“A2: B8”): Діапазон від A2 до B8 для діаграми аркуша встановлений у значення rng.
- Встановити est = ThisWorkbook.Sheets (“Діаграма”). Shapes.AddChart2: Це твердження використовується для ініціювання створення нової діаграми на аркуші-діаграмі.
- est.Chart.SetSourceData Джерело: = rng: Це твердження забезпечує діапазон даних для споглядання на діаграмі.
- est.Chart.ChartType = xl3DPieExploded: Для типу діаграми встановлено тривимірний пиріг типу Exploded. xl3DPieExploded допомагає визначити цей тип діаграми.
- est.Chart.HasTitle = True: Це твердження перевіряє, чи діаграма вже має заголовок.
- est.Chart.ChartTitle.Text = “Тестові оцінки”: Це твердження замінює заголовок діаграми на «Тестові оцінки».
- est.Chart.SetElement (msoElementDataLabelCenter): Це твердження встановлює мітки даних та легенди для діаграми.
- est.Chart.SetElement (msoElementLegendBottom): Це твердження встановлює мітки даних внизу діаграми.
Шляхи виконання макросу
Макрос можна виконати, використовуючи 4 способи:
- За допомогою піктограми Виконати у вікні редактора VBA.
- У файлі Excel виберіть пункт меню Перегляд -> Макроси -> Перегляд макросу -> Виберіть ім'я макросу та виберіть Виконати.
- Створіть ярлик під час створення макросу, а натискання комбінацій клавіш спричинить виконання макросу.
- Найбільш зручним способом є створення кнопки дії ( Наприклад Кнопка команди), якій буде призначено макрос, який при натисканні викликає виконання макросу.
Ми побачимо, як додати командну кнопку та призначити макрос кнопці. При натисканні кнопки буде виконано виконання макросу.
Додайте кнопку керування формами в Excel
- Виберіть Меню «Розробник» -> Вставка -> Елементи керування формою -> Піктограма кнопки вибору і додайте кнопку на аркуші Excel.
- Введіть ім'я та текстове значення для кнопки. Ім'я кнопки використовується в кодуванні VBA для розпізнавання цієї командної кнопки, тоді як текст - це те, що відображається на кнопці.
- Тепер клацніть правою кнопкою миші на командній кнопці та виберіть опцію «Призначити макрос» , з'явиться список макросів, виберіть ім'я макросу, який ви хочете призначити.
- Як тільки макрос призначений, натискання на кнопку запускає виконання призначеного макросу.
- У цьому прикладі „Отримати тестові оцінки“ кнопці призначено «Оцінки» макрос.
- Подібним чином ми додамо командну кнопку для аркуша діаграми та призначимо макрос для діаграми, щоб ініціювати генерацію діаграми.
- Клацнувши на «Створити діаграму» кнопка запускає макрос для діаграми. Це покращує зручність використання макросу.
Висновок
Це було декілька прикладів у режимі реального часу, які могли б стати частиною повсякденного розпорядника роботи на роботі, який можна було б чітко визначити для генерації макросів і, отже, заощадити достатню кількість часу на нерелевантних та повторюваних ручних зусиллях за допомогою автоматизації завдання.
Відповідні знімки екрана, код VBA та детальне розуміння кожного рядка коду висвітлено в цій статті. Я сподіваюся, це дасть хороший старт для контролю якості щодо того, як перетворити себе з ручного тестування на макрос.
Для людей, які вважають, що робота ручних тестувальників - це суто нетехнічна робота, давайте доведемо їх помилку шляхом необхідного застосування технічних знань для підвищення продуктивності.
Автор: Ця поглиблена корисна публікація написана Шобхою Д. Вона працює керівником проекту та має понад 9 років досвіду в ручному, автоматичному (IBM RFT та Selenium з використанням Java) та тестуванні API.
Рекомендована література
- Робота з об’єктами Excel VBScript
- Створення Framework селену та доступ до тестових даних з Excel - Підручник селену №21
- 5 найпоширеніших завдань тестування Тестери забудьте протестувати (і як цього уникнути)
- 5 найкращих речей, які тестер повинен мати у програмі Excel (і перспективи зміни тестера програмного забезпечення)
- Підзадача JIRA з прикладом (Створення підзавдання JIRA)