Питання та відповіді на тестову співбесіду

Розкажіть про себе

Треба розповісти що вам подобається та чим ви займаєтесь

Чому ви хочете бути тестувальником?

Розкажіть про вашу мотивацію з якою ви рухаєтесь до посади тестувальника

Що таке тестування?

Процес, де ми досліджуємо програму чи документацію цієї програми з певною метою (знайти баг, підтвердити, що продукт готовий до релізу тощо).

Назвіть цілі тестування

  • Виявити дефекти до того, як їх виявлять користувачі.
  • Надання актуальної інформації про стан продукту зараз.
  • Перевірка на відповідність ПЗ всім заявленим вимогам.

Які принципи тестування ви знаєте?

  • Testing shows the presence of defects, not their absence (Тестування демонструє наявність дефектів, але не гарантує їх відсутності).
  • Exhaustive testing is not possible (Вичерпне тестування неможливе).
  • Early testing saves time and money (Тестування слід починати на ранніх стадіях життєвого циклу розробки програмного забезпечення, щоб знайти дефекти якомога раніше).
  • Defects cluster together (Накопичення дефектів. Принцип Паретто: для багатьох явищ 80 відсотків наслідків спричинені 20 відсотками причин).
  • Beware of the pesticide paradox (Парадокс пестициду. Якщо повторювати ті самі тести знову і знову, то в певний момент цей набір тестів перестане виявляти нові дефекти).
  • Testing is context dependent (Тестування залежить від контексту).
  • Absence of errors is a fallacy (Відсутність знайдених дефектів під час тестування не завжди означає готовність продукта до релізу).

Коли слід починати тестування?

Слід розпочинати тестування на ранніх стадіях життєвого циклу розробки ПЗ, щоб знайти дефекти якомога раніше.

(Пам'ятаємо про принцип №3 – раннє тестування (Early testing)).

Опишіть життєвий цикл Програмного Забезпечення

Software development lifecycle – період часу, який починається з моменту ухвалення рішення про необхідність створення програмного продукту та закінчується в момент його повного вилучення з експлуатації.

  • Планування та аналіз вимог
  • Написання вимог
  • Дизайн архітектури продукту
  • Розробка продукту (програмування)
  • Тестування продукту
  • Розгортання продукту (реліз)
  • Супровід

Що таке entry criteria та exit criteria?

Entry criteria (критерії входу в тестування) визначають умови, які мають бути виконані до початку робіт. Наприклад, визначені вимоги, графік, встановлено програму, що тестується.

Exit criteria (критерії виходу з тестування) визначають, які умови мають бути виконано, щоб завершити рівень тестування або набір тестів. Наприклад, закрито всі завдання і баг репорти, досягнуто певного відсотку пройдених тестів.

В чому різниця між QC і QA?

Quality Assurance (QA) – QA забезпечує правильність процесу тестування, підходить до контролю якості глобально, стежить за нормалізацією процесів. (Займається тестуванням програми у всіх фазах життєвого циклу програмного забезпечення. Найбільше уваги в роботі приділяє процесам, але також займається тестуванням продукту.)

Quality Control (QC) – QC передбачає контроль за дотриманням вимог. (Займається тестуванням програми у фазах розробки та тестування. На роботі займається продуктом (додатком, сайтом).

Які методології управління проєктами ви знаєте?

  • Waterfall
  • V-модель
  • Ітераційна, інкрементальна модель (відмінність: в ітераційній моделі ідея проєкту спочатку маленька, але потім з’являються додаткові функції. В інкрементальній моделі ідея проєкту від самого початку велика)
  • Спіральна модель
  • Модель хаоса
  • Гнучка модель( Agile: Scrum, Kanban)

Що таке Waterfall?

Waterfall Model – відома послідовним проходженням стадій, кожна з яких має завершитись повністю до початку наступної. 

Найчастіше використовується в медичних та військових проєктах. 

Переваги: вартість і дедлайни визначені заздалегідь; розробка відбувається швидко; хороший результат лише у проєктах із чітко та заздалегідь визначеними вимогами.

Недоліки: неможливо повернутись на попередню фазу або повторити фазу; неможливо змінити вимоги під час розробки.

Що таке Agile?

Методологія Agile - це набір практик, метою яких є оперативна реакція на зміни під час робочого процесу. Такі підходи допомагають командам швидко реагувати на зворотний зв'язок від клієнтів та замовників, тим самим постійно покращуючи вироблений продукт.

Цінності Agile:

  • Люди та співпраця важливіші за процеси та інструменти Працюючий продукт важливіший за вичерпну документацію Співпраця із замовником важливіша за обговорення умов
  • контракту
  • Готовність до змін важливіша за дотримання плану

Суть Agile маніфесту:

  • Вся робота над проєктом розділяється на короткі цикли (ітерації) і ведеться поетапно;
  • В кінці кожної ітерації замовник отримує готовий мінімально робочий продукт чи його частину, яку вже можна використовувати;
  • Протягом всього робочого процесу команда співпрацює з замовником;
  • Будь-які зміни в проєкті вітаються і швидко інтегруються в роботу.

Що ви знаєте про Scrum?

Підхід передбачає взаємодію кожного етапу розробки ПЗ, як команди розробників (Delivery Team), а й самого замовника (Product owner), і навіть Scrum-майстра.

Суть даного фреймворку:

  • Робота ділиться на спринти тривалістю 1-4 тижні
  • Перед початком спринта команда сама формує список задач на ітерацію
  • Під час кожного спринта створюється продукт чи послуга, які можна продемонструвати клієнту
  • Після виконання спринту проводиться ретроспектива. Це мітинг, мета якого отримати фідбек від кожного учасника команди, виявити поточні успіхи та проблеми, тобто оцінка та аналіз виконаної роботи.
  • Кожен наступний етап нарощуватиме функціонал проєкту, доки всі функції не будуть реалізовані.
  • Мітинги, які допомагають в процесі роботи: Щоденний стендап, Планування, Ретроспектива та Sprint Review.
  • Обов'язкові ролі: Scrum-master (допомагає вирішити блокери, слідкує за дотриманням скраму) та Product Owner (виставляє пріоритети і цілі спринта)

Розкажіть про Цикл тестування в житті ПЗ?

Software testing life cycle – це послідовність дій, які проводяться в процесі тестування, за допомогою яких гарантується якість ПЗ та його відповідність вимогам.

Етапи STLC циклу: 

  • Планування
  • Моніторинг і контроль
  • Аналіз і дизайн
  • Імплементація
  • Виконання
  • Репортинг
  • Завершення тестування

Які види тестової документації ви знаєте? 

  1. Тест стратегія, тест план, тест полісі, вимоги, тест кейс, чек ліст, тест сьют, баг репорт, тест репорт (Test Run Result, тест самері репорт).

Що таке вимоги і які види вимог ви знаєте? 

Це документ в якому описується що програма має робити і як. Види: software requirements specification, product requirement document, user stories, acceptance criteria.

Що таке User Story?

Це неформальні вимоги, що пишуться в один рядок і складаються з трьох частин: “Як …, я хочу …, щоб …”. Також Юзер сторі - це формат завдання в Джирі, який має підзавдання.

Що таке тест кейс?

Це інструкція з тестування, яка складається з кроків для відтворення та очікуваного результату.

З чого складається тест кейс? 

Тестові дані, пріоритет, тип (категорія), номер, назва, preconditions, steps to reproduce, designer, дата створення, очікуваний результат. Можуть бути скріншоти. Може бути модуль до якого відноситься test case - test suite.

Що таке чекліст?

Це список, який скл з 3 колонок: ID кроку, назва,статус (passed, failed, blocked, in progress, skipped), тестові дані.

Чим відрізняється чекліст від тест кейса? 

Чек ліст простіший, тест кейс об'ємний і детальніший.

Що таке тест план?

Тестовий документ, який описує як буде відбуватись процес тестування.  

З чого складається тест план?

Описуємо як ми будемо тестувати, що будемо/не будемо тестувати, які рівні/техніки будемо використовувати. Описуємо ролі, обов'язки (roles and responsibilities), ризики та способи їх знизити. Entry, exit критеріїю. Графік, environment.

Чим тест план відрізняється від тест стратегії? 

  1. Тест план це документ який описує тестування на маленькому рівні: продукту, релізу, спринту, юніту, фічі. Стратегія описує тестування на рівні проєкта. Тест полісі- документ, який описує тестування на рівні організації. 

Що таке Traceability matrix?

Що таке Impact Analysis?

Аналіз впливів, один із видів матриці відслідковуваності, де ми співставляємо дві фічі на предмет залежностей, щоб визначити що треба тестувати для регресії.

Що таке баг? 

Невідповідність до вимог, недолік в програмі.

Чим дефект відрізняється від баг-репорта? 

Баг-репорт-документ, який описує баг. Дефект - формальна назва багу.

Що таке баг-репорт?

Докладна покрокова інструкція для відтворення помилки

З чого складається баг-репорт?

ID, назва, Preconditions, Steps, Actual/Expected result, Severity, Priority, Type, людина, які зробила цей баг-репорт, людина, яка має його виправити, статус, середовище, скріншоти, відео

Що таке Severity та Priority? 

Пріоритет - це як швидко треба виправити цей баг, і як він впливає на авторитет компанії. Северіті - ступінь впливу, показує наскільки баг ламає програму.

Наведіть приклад багу з низьким пріоритетом, але високим ступенем впливу.

Не можливість перейти за посиланням в  інсту на якомусь веб сайті. Зазвичай якщо ми маємо високе severity, то і пріоритет теж буде високим або середнім. Бо такі баги це велика рідкість. 

Опишіть життєвий цикл баг-репорта. 

New, Open, Assigned, In progress. Duplicate - якщо такий баг вже є. Deferred - якщо баг не терміновий, то його можна перенести на наступний спрінт. Fixed, verified (перевірено), reopened- якщо щось невірно пофіксили. Closed.

Як ви будете тестувати якщо вимог нема?

Шукати вимоги в Юзер Сторіз (завдання в Джирі), і там може бути опис задачі. Шукати в конфлюенсі. Пробувати гуглити. Якщо такого нема, спитати Продакт Овнера. Якщо його нема, то лишається здоровий глузд, аналіз конкурентів.

Коли QA-інженер повинен звертатися за допомогою?

В останню чергу після гугла і конфлюенса. Спочатку питати колегу, потім якщо він не знає то ліда, потім продакт овнера.

Які види тестування ви знаєте?

Позитивне\негативне, мануальне\автоматизоване, статичне\динамічне, чорний\білий\сірий ящик, функціональне, нефункціональне і пов’язане зі змінами.

Чим верифікація відрізняється від валідації?

Verification - процес оцінки системи чи її компонентів з метою виявлення чи задовольняє результат поточного етапу розробки вимогам, які були сформовані на початку даного етапу. (процес, коли звіряється чи вірно щось відбувається, працює програма відповідно до вимог)

Validation - визначення відповідності розробленого ПО очікуванням та потребам користувача, вимогам до системи. (перевірка кінцевого результату. Чи вийшов продукт таким яким хотіли?)

В чому різниця між статичним та динамічним тестуванням?

Статичне тестування - це перевірка документації, динамічне - перевірка програми. Статичне може виконуватись без використання комп’ютера, а динамічне тільки з ним.

В чому різниця між білим, чорним та сірим ящиками?

Чорний ящик - неможливо погрузитися в технічну складову продукту, є тільки уявлення як у юзерів. (Доступ тільки до вимог і самої програми)

Білий ящик - протилежність чорному, тобто є  доступ до коду, бази даних та документації АПІ.

Сірий ящик - щось середнє між чорним та білим. Не маємо доступ до коду, але є доступ до інших тех. областей. Яскравий приклад - тестування API використовуючи Postman.

В чому різниця між позитивним та негативним тестуванням?

Позитивне тестування - коли ми вводим валідні дані і очікуєм на хороший результат. Негативне - коли ми вводимо завідома не коректну інформацію і очікуєм на помилку.

Скільки негативних перевірок може бути за 1 раз? (Реєстрація, скільки полів можна ввести негативних)?

Тільки одне поле заповнюєм негативнвою інформацією, всі інші - позитивними. Так легше локалізувати дефект.

В чому різниця між мануальним та автоматизованим тестуванням?

Мануальне тестування - це тестування з використанням клавіатури і миші, а автоматизоване - це коли інженер написав код, який виконує тестування.

Які рівні тестування ви знаєте?

  1. Component testing,
  2. Integration testing,
  3. System testing,
  4. Acceptance testing

Які типи нефункціонального тестування ви знаєте?

Перфрманс група (пов’язані з навантаженням): Load, Performance, Stress, Recovery, Volume, Scalability, Endurance etc.; UI, UX\Usability, Localization, Internationalization, Configuration

Які типи тестування, пов’язані зі змінами, ви знаєте?

Smoke testing, Sanity testing (перекладається як “розсудливість”, на співбесідах не люблять коли кажуть “санітарне тестування” ), Regression testing,  Re-testing або Confirmation testing

Чим смоук тестування відрізняється від регресивного?

Smoke - перевіряємо критично важливий шлях, функціонал. 

Regression - перевіряємо старий функціонал, щоб він не зламався з новою доробкою. Зазвичай Смоук проводять безпосередньо перед регресією.

В чому різниця між смоук та саніті тестуванням?

Smoke - перевіряємо критично важливий шлях, функціонал. Зазвичай вважається “поверхнім” тестуванням.

Sanity - тестування конкретної невеликої частини; перевірка частини, яка найчастіше виходить з ладу; перевірка нового функціонала.  Його також називають тестуванням “вглиб”, тобто детальної перевірки.

Що таке регресія? Реліз? Code freeze?

Регресія: Перевірка, чи новий код не порушив вже наявні функції. Тестування старого коду після внесення змін.

Реліз: Випуск нової версії програмного продукту для користувачів. Оновлення з новими функціями або виправленнями.

Code freeze: Зупинка внесення змін у вихідний код. Зазвичай перед релізом для стабілізації програми.

Якщо тест кейсів багато, а часу на тестування нема, як обрати тести на регресію?

Потрібно пріоритезувати тест кейси. Необхідно дивитися спочатку на критично важливий функціонал, який є суттю даного ПО. Якщо вистачить часу, то потрібно ще пройтись по самому популярному шляху продукту та перевірити блок, де було більше всього багів.

Що таке Monkey testing?

Що таке Monkey testing?

Monkey testing є методом тестування програмного забезпечення, при якому тестові дані та вхідні параметри генеруються випадковим чином без спеціального планування чи знань про внутрішню структуру програми. Цей метод також відомий як "random testing" або "fuzz testing".

Collapsible content

Що таке End-to-End testing?

End-to-End тестування - це процес перевірки повного шляху взаємодії програми від початку до кінця, включаючи всі компоненти та системи, для підтвердження, що весь процес працює коректно.

Які ви знаєте техніки тест дизайну?

Еквівалентне розділення, граничні значення, таблиця прийняття рішень, попарне тестування, діаграма станів і переходів, діаграма сценаріїв використання (юз кейс), вгадування помилок, дослідницьке тестування, чек-ліст бейзд тестінг.

Є Input поле, яке приймає цілі значення від 18 до 99 включно. Потрібно протестувати за допомогою технік Boundary Values Analysis і Equivalence Partitioning.

ЕП: 10, 20, 100
БВ: 17, 18, 99, 100 АБО 17, 18, 19, 98, 99, 100

В чому різниця між еквівалентним розділенням та граничними значеннями?

Еквівалентне розділення - розбиваємо діапазони на класи. Все що входить в клас - всі значення повинні бути еквівалентні один одному за результатом.

Граничні значення - перевірка границь діапазонів та значення поряд з границею.

Навіщо потрібна таблиця прийняття рішень?

Щоб перевірити всі умови, не пропустити важливі перевірки і виділити самі цікаві і основні перевірки.

Як створювати тест кейси з ТПР?

Якщо в ТПР 16 колонок, то не обов’язково створювати 16 тестів. Краще виділити 1 позитивний, по 1 негативному на кожне поле, і всі цікаві (спірні) тести, де треба було уточняти вимоги.

Що таке ad-hoc тестування?

Ad-hoc тестування - це непланована перевірка програми для виявлення дефектів без попереднього планування.

Що таке дослідницьке тестування і чим воно відрізняється від Ad-hoc?

Що таке кросс-браузерне тестування?

Наведи 5 перевірок які ти б проводив/ла, використовуючи техніку вгадування помилок.

Що таке SQL?

Які бувають бази даних?

Що ви знаєте про NoSQL?

Основні команди SQL?

Як створити таблицю в SQL?

Як заповнити таблицю даними?

Як змінити дані в таблиці?

Як видалити дані з таблиці?

Як видалити таблицю?

Дістань всю інформацію з таблиці Люди

Дістань тільки імена і фамілії з таблиці Люди

Дістати все з таблиці Люди, де імя - Анна

Дістати все з таблиці Люди, де імя починається на А

Дістати все з таблиці Люди, де імя містить букву А

Дістати всіх тестувальників з таблиці Працівники, відсортованих за датою найму

Дістати 5 останніх найнятих тестувальників із таблиці Працівники

В чому різнця між where і having?

  1. Це одне й те саме, але having використовується з командою group by.

Що ви знаєте про Join в базах даних?

Як створювати тест кейси з БД?

Особливості тестування мобільних додатків.

Нативні, гібридні веб-додатки.

Що таке емулятор та симулятор?

Що не можна протестувати на емуляторі, а лише на реальному пристрої?

Які бувають переривання?

Що таке Dev tools і навіщо ним користуватись?

В чому різниця між frontend та backend?

Що таке JSON та XML?

Що таке сніффер і навіщо він потрібний? 

Що таке кеш та кукі? Чим відрізняються?

Що таке ідентифікація, аутентифікація і авторизація?

Навіщо потрібно чистити кеш перед тестуванням веб-застосунків?

Чим HTTP відрізняється від HTTPS?

Опишіть, що таке клієнт-серверна архітектура?

Архітектура, при якій мережеве навантаження розподіляється між клієнтом та сервером.

З чого складається HTTP-запит?

З чого складається HTTP response?

Які ви знаєте методи HTTP?

Чим GET відрізняється від POST?

Які ви знаєте статус коди?

Що таке REST API?

Відмінності від SOAP?

Collapsible content

Що таке IP?

Що таке домен?

Що таке логи?

Як тестувати АПІ? Які є тести для АПІ?

Як створювати тест кейси для АПІ?

Що таке моки, стаби, драйвери?

Що ти знаєш про оцінювання задач\естімейт? В чому оцінюють задачі?

Які метрики, повязані з тестуванням, ти знаєш?

У вас відкривається веб-сайт. Білий екран. Більше нічого. Як тестуватимете?

Вам прийшло завдання без опису. Як ви себе поведете?

Як тестуватимете кнопку?

Як тестуватимете поле?

Протестуйте маску в інстаграм.  5 позитивних та 5 негативних перевірок.

Накидайте перевірок на робот-пилосос. Позитивних та негативних.

Ви виявили помилку під час тестування мобільної програми та повідомили про неї. Розробник неспроможний її відтворити. Що ви можете пропустити в цьому випадку?

Відповідь

Переконатися, що розробник використовує ті самі налаштування, середовище та версії програмного забезпечення, що й ви під час тестування. Запропонувати мітинг, де розробник покаже екран і покроково відтворить баг.

Як QA-інженер ви читаєте вимоги для створення тестових випадків та виявили серед них деяку двозначність. Що ви можете зробити у такому разі?

В чому різниця між мікросервісом і монолітом?

В чому різниця  HTML, XML, XHTML?

  1. HTML (HyperText Markup Language) Мова розмітки гіпертексту, стандартна мова розмітки, яка використовується для створення веб-сторінок, використовується для форматування та відображення даних
  2. XML (eXtensible Markup Language):Відноситься до мови розмітки, що розширюється, XML призначений для передачі та зберігання даних, а не їх відображення. Теги XML не визначені. Нам потрібно самим визначити теги: XML розроблений для самоописання, а XML – рекомендований стандарт W3C.
  3. XML доповнює HTML, а XML не замінює HTML, це важливо розуміти. 
  4. XHTML (eXtensible HyperText Markup Language) Розширювана мова розмітки гіпертексту - це мова розмітки, яка поводиться аналогічно мові розмітки гіпертексту (HTML), але має більш строгий синтаксис. З точки зору успадкування, HTML - це додаток, заснований на стандартній узагальненій мові розмітки (SGML) і дуже гнучкий мові розмітки, в той час як XHTML заснований на розширюваній мові розмітки (XML), XML є підмножиною SGML
  5. HTML5 використовує бази даних SQL і кеш додатків для тимчасового зберігання даних, тоді як HTML для цього використовується тільки кеш браузера.

Що таке CSS?

1 of 4