В попередньому пості](https://sinaptia.dev/posts/qa-automation-on-a-serverless-architecture), ми обговорювали, як підходимо до нових викликів, таких як тестування додатків на серверній архітектурі без серверів. Але ми ще не розглянули детально наш процес забезпечення якості. У цьому пості ми пояснимо різні етапи, які включає наш процес забезпечення якості.
Перші кроки
Під час підключення до проєкту наша робота як інженерів з забезпечення якості полягає в тому, щоб повністю зрозуміти природу проєкту, який ми тестуватимемо. Розуміння мети системи, її користувачів, процесів, доменних понять і правил є ключовим для успішного забезпечення якості програмного продукту. Без цієї інформації неможливо спроектувати та реалізувати ефективні тести.
Коли знання отримано, наступним кроком є визначення обсягу тестування. Наприклад, ось деякі типові питання, які ми ставимо:
- Які цільові пристрої (наприклад, десктоп, мобільні)? Якщо ми тестуємо для десктопів, то для яких браузерів? Якщо для мобільних пристроїв, то для яких операційних систем?
- Чи важливий доступність для цього проєкту? Якщо так, то які стандарти доступності будуть використовуватись?
Далі ми визначаємо обсяг роботи: на цьому етапі ми аналізуємо і вирішуємо, які стратегії тестування та інструменти будемо використовувати. Зокрема, потрібно визначити, яка стратегія тестування краще підходить для проєкту (автоматизоване, ручне чи обидва варіанти), визначити технічний стек для тестування (який фреймворк для тестування, сервер безперервної інтеграції) і визначити робочий процес з командою розробників (це важливо для правильного початку з самого початку).
Після визначення обсягу роботи настав час подумати про План тестування. План тестування — це набір тестових наборів, які будуть виконані для перевірки функціональності. Щоб створити ефективний план тестування, потрібно добре знати додаток, і найкращий спосіб ознайомитися з додатком — це виконати ручні тести. Лише після того, як ви ознайомитеся з додатком, можна автоматизувати тести. Для нас надзвичайно важливо вручну використовувати додаток і розуміти кожну деталь. Ручне тестування неможливо уникнути. Навпаки, воно є необхідним.
Важливо зазначити, що план тестування може змінюватись від спринту до спринту, оскільки нові функції розробляються.
Спільна робота з розробниками
Процес, який ми використовуємо, безперешкодно інтегрується з робочим процесом розробки. Ми завжди користуємось тією ж системою управління задачами та любимо підтримувати прямий і зручний зв'язок з рештою команди, незалежно від того, чи є команда розробників нашою, чи це команда наших клієнтів.
Для ефективного тестування ми перевіряємо кожну функцію в ізольованому середовищі (використовуючи спеціально виділене середовище QA або тестувальні додатки, розгорнуті для кожної нової гілки коду). Ми не лише перевіряємо, чи відповідає код специфікації, але й перевіряємо, що нічого іншого не зламалось. Автоматизовані тести стають надзвичайно корисними для цього. Ми також перевіряємо функції в різних браузерах і мобільних пристроях, щоб переконатися, що кожна деталь працює відповідно до раніше визначеного обсягу тестування.
Коли під час тестування виявляється баг, важливо дотримуватись систематичного процесу для його звітування. Необхідно надати детальний опис баґа, вказавши кроки для відтворення і надавши скріншоти чи відео, щоб допомогти розробнику відтворити проблему.
Спільна робота з розробниками — це шлях до успішного процесу забезпечення якості.
Автоматизація тестування
Автоматизація тестування має велике значення, коли ручне тестування було виконано в значних обсягах. Ручне тестування однакових потоків знову і знову може бути виснажливим та часозатратним. Автоматизовані тести економлять час і дозволяють інженерам з QA зосередитись на інших завданнях. Вони також швидші та точніші, оскільки люди схильні до помилок, особливо коли втомлені чи стресовані.
Однак єдиний спосіб визначити точні, ефективні автоматизовані тести — це виконати ручне тестування додатку. Немає автоматизації без ручного тестування.
Спільна робота з користувачами
Усе програмне забезпечення містить баґи.
У попередньому пості ми обговорювали, як ми підходимо до нових викликів, таких як тестування додатка на серверній архітектурі без серверів. Але ми ще не розглядали наш процес забезпечення якості в деталях. У цьому пості ми пояснимо різні етапи, які входять до нашого процесу забезпечення якості.
Перші кроки
При підключенні до проєкту наша робота як інженерів з забезпечення якості полягає в тому, щоб повністю зрозуміти природу проєкту, який ми будемо тестувати. Розуміння мети системи, її користувачів, процесів, а також доменних понять і правил є ключовим для успіху в забезпеченні якості програмного продукту. Неможливо спроектувати та реалізувати ефективні тести без цього знання.
Коли ми отримуємо необхідні знання, наступним кроком є визначення обсягу тестування. Наприклад, ось деякі типові питання, які ми ставимо:
- Які цільові пристрої (наприклад, десктопи, мобільні)? Якщо ми тестуємо для десктопів, то для яких браузерів? Якщо для мобільних пристроїв, то для яких операційних систем?
- Чи важлива доступність для цього проєкту? Якщо так, то які стандарти доступності будуть використовуватись?
Далі ми визначаємо обсяг роботи: на цьому етапі ми аналізуємо і вирішуємо, які стратегії тестування та інструменти будемо використовувати. Зокрема, потрібно визначити, яка стратегія тестування краще підходить для проєкту (автоматизоване, ручне чи обидва варіанти), визначити технічний стек тестування (який фреймворк для тестування, сервер безперервної інтеграції) і визначити робочий процес з командою розробників (це критично важливо для того, щоб все було зроблено правильно з самого початку).
Коли обсяг роботи визначено, настає час подумати про План тестування. План тестування — це набір тестових наборів, які будуть виконані для перевірки функціональності. Щоб створити ефективний план тестування, потрібно добре знати додаток, а найкращий спосіб ознайомитися з ним — це виконати ручні тести. Лише після того, як ви ознайомитесь із додатком, можна автоматизувати тести. Для нас надзвичайно важливо вручну використовувати додаток і розуміти кожну деталь. Ручне тестування неможливо уникнути. Навпаки, воно є необхідним.
Важливо зазначити, що план тестування може змінюватися з кожним спринтом, оскільки розробляються нові функції.
Спільна робота з розробниками
Процес, який ми використовуємо, безперешкодно інтегрується з робочим процесом розробки. Ми завжди користуємось тією ж системою управління задачами та любимо підтримувати прямий і зручний зв'язок з рештою команди, незалежно від того, чи є команда розробників нашою, чи це команда наших клієнтів.
Для ефективного тестування ми перевіряємо кожну функцію в ізольованому середовищі (використовуючи спеціально виділене середовище QA або тестувальні додатки, розгорнуті для кожної нової гілки коду). Ми не лише перевіряємо, чи відповідає код специфікаціям, але й те, що нічого іншого не зламалось. Автоматизовані тестові набори стають надзвичайно корисними для цього. Ми також перевіряємо функції в різних браузерах і мобільних пристроях, щоб переконатися, що кожна деталь працює відповідно до раніше визначеного обсягу тестування.
Коли під час тестування виявляється баг, важливо дотримуватись систематичного процесу для його звітування. Необхідно надати детальний опис багу, вказавши кроки для його відтворення і надавши скріншоти або відео, щоб допомогти розробнику відтворити його.
Спільна робота з розробниками — це шлях до успішного процесу забезпечення якості.
Автоматизація тестування
Автоматизація тестування є дуже важливою, коли ручне тестування було виконано в значних обсягах. Ручне тестування однакових потоків знову і знову може бути виснажливим і забирати багато часу. Автоматизовані тести економлять час і дозволяють інженерам з QA зосередитись на інших завданнях. Вони також швидші і точніші, оскільки люди схильні до помилок, особливо коли втомлені або стресовані.
Однак єдиний спосіб визначити точні та ефективні автоматизовані тести — це спершу вручну протестувати додаток. Немає автоматизації без ручного тестування.
Спільна робота з користувачами
Усе програмне забезпечення містить баґи.
Іноді баги з'являються після ретельного тестування (ручного або автоматизованого). Їх часто знаходять користувачі. І найчастіше вони не знають, як їх відтворити. Ось тут і проявляється майстерність інженера з QA. Часто інженери з QA мають більше і свіжіших знань, ніж користувачі та навіть самі розробники, і, використовуючи ці знання, вони можуть виявити зламані шляхи, які зайняли б багато часу, щоб розкрити іншим людям, і визначити, чи є те, що повідомив користувач, багом чи ні.
Інженери з QA є важливою частиною процесів розробки та підтримки.
Висновки
Ми багато говоримо про ручне тестування, оскільки без нього неможливо виконати автоматизацію тестування. З допомогою ручного тестування ми не тільки набуваємо досвіду з додатком для проектування та реалізації ефективних тестів, але й отримуємо знання, щоб допомогти користувачам додатку та команді розробників.
Ми вважаємо, що наш процес забезпечення якості є ефективним у багатьох аспектах: розробники довіряють, що вони доставляють код, який працює правильно, а користувачі мають когось, хто їх підтримує.
Іноді баги з'являються після ретельного тестування (ручного або автоматизованого). Їх часто знаходять користувачі. І найчастіше вони не знають, як їх відтворити. Ось тоді і проявляється майстерність інженера з QA. Часто інженери з QA мають більше і свіжіших знань, ніж користувачі та навіть самі розробники, і використовуючи ці знання, вони можуть виявити зламані шляхи, для виявлення яких іншим людям знадобився б значно більший час, і визначити, чи є те, що повідомив користувач, багом, чи ні.
Інженери з QA є ключовою частиною процесів розробки та підтримки.
Висновки
Ми багато говоримо про ручне тестування, оскільки без нього неможливо виконати автоматизацію тестування. Завдяки ручному тестуванню ми не тільки набуваємо досвіду з додатком для проектування та реалізації ефективних тестів, але й отримуємо знання, щоб допомогти користувачам додатку та команді розробників.
Ми вважаємо, що наш процес забезпечення якості є ефективним у багатьох аспектах: розробники довіряють, що вони доставляють код, який працює правильно, а користувачі мають когось, хто їх підтримує.
Перекладено з: Quality Assurance, the SINAPTIA way