IT-инфраструктура для бизнеса и творчества
Разработка
Dmitry Kotenko

Тестировщик: от самоопределения до первого бага

Находясь в поисках тестировщика, мы сталкивались с тем, что соискатели, претендующие на эту должность, зачастую не понимали, что именно должен знать и уметь этот специалист. Поэтому сегодня рассказываю, с чего начать, если вдруг вы решили вступить в ряды IT именно с этой профессии. Матёрым QA это будет неинтересно, а вот новички — welcome.

Как определиться?

Профессию QA-специалиста (Quality Assurance) можно рассматривать как стартовый этап, можно как самодостаточную специальность. Если общих фраз и требований на hh.ru вам недостаточно для того, чтобы понять, увлечет вас тестирование или пройдет мимо — мы вас понимаем. Пообщайтесь с потенциальными коллегами, посмотрите видео на Youtube, можете сходить на митап QA-специалистов. В конце статьи для вас есть пункт, где мы рекомендуем дополнительные материалы — они будут полезны, если вам интересны теоретические основы тестирования (а без них, по факту, тяжеловато).

Собеседование. Чего ждать?

Все зависит от компании, в которую вы планируете собеседоваться. Где-то ручаются всему научить самостоятельно, но в большинстве случаев существует перечень требований к потенциальному QA: с него и начните. А пока что вот вам чек-лист основных понятий, с которых стоит начать:

  • Чем отличаются друг от друга виды тестирования
  • Какая бывает документация и как с ней работать
  • Методы тест-дизайна
  • Принципы написания тест-кейсов

В качестве тренировки попробуйте протестировать первый попавшийся под руку предмет. Из личных качеств вам пригодятся усидчивость, внимательность к деталям, придирчивость, стремление развиваться — все по канону.

Первый рабочий день

Как к начинающему, скорее всего, в курс дела вас будет вводить кто-то из числа опытных коллег, в больших компаниях этим занимается QA-lead. Покажут весь софт, объяснят, как работать с документацией, расскажут парочку кейсов, познакомят со всеми QA и разработчиками, расскажут о компании. Есть организации, в которых новеньким заботливо организовали целый портал, чтобы они познакомились с системой. Не упустите возможность спросить все, что непонятно, интересно и т.д. В Infoshell рабочий день начинается с созвонов с Product Owner’ами. Обсуждаем, что успели вчера, чем будем заняты сегодня, распределяем задачи, обсуждаем то, что непонятно. Также в течение дня всегда можем связаться в Skype или Slack.

Первые кейсы

Пришло время взяться за практику. Сейчас вы протестируете своё первое приложение. Как это проходит?
До того, как тестировать приложение, попробуйте составить чек-лист (список функций, которые нужно проверить). Потом это станет у вас постоянной практикой. Вам расскажут о приложении и выдадут документацию, в которой подробно описан функционал. Уделите время тому, чтобы продумать возможные баги и записать их. Попросите чек-лист у более опытных тестеров, чтобы дополнить свой.

Например, часть общего чек-листа для мобильного приложения:

Дальше приступаем к тестированию приложения. Как правило, оно проходит в несколько этапов:

  • Дымовое тестирование
    Или Smoke-тестирование — проверка основных функций приложения: если в приложении “Велопрокат” некорректно работает функция заказа одного из товаров — приложение не выполняет основные функции. Такие баги проверяют в первую очередь. Идея в том, чтобы на первых шагах выявить очевидно важные баги и не копаться в заведомо нерабочем приложении.
  • Регрессионное тестирование
    Проверяем две вещи:
    - во-первых, найденный баги были исправлены;
    - во-вторых, как повлияли внесенные изменения на работу остальных фич приложения.
  • Полное функциональное тестирование и тестирование пользовательских интерфейсов
    Полностью проверяем приложение на соблюдение всех требований, указанных в спецификации.

Кратко рассказали об этапах тестирования, а теперь о том, как описывать найденные баги.

Первым делом стоит разобраться с типом найденной ошибки. В основном их делят на баги, улучшения и дополнения к функционалу. Баги — нарушения в функционале; улучшения — в целом работает, но можно сделать лучше; дополнения к функционалу — возможности, которые нужно добавить к функционалу. Такая классификация помогает разработчикам расставлять приоритетность выполнения задач.

Далее приступайте к позитивному тестированию — когда вводите заведомо корректные значения, после — к негативному. При негативном тестировании проверяем, что программа не работает там, где не должна.

Итак, разберем составление тест-кейса для бага (описание найденного бага):

  • Порядковый номер
  • Название
    Оно должно быть понятным, отражающим суть, но кратким.
    Лайфхак: название можно строить по принципу чгк (что случилось? на какой странице приложения? после чего это случилось?). Например: на странице “Корзина” после нажатия кнопки “Отправить” появляется сообщение об ошибке.
  • Предварительные шаги
    Сценарий того, как вы пришли к багу. Какие действия выполнили, куда кликали, что вводили и т.д. Все подкрепляется скриншотами.
  • Ожидаемый результат

    Расписываем, что должно было произойти исходя из документации.

  • Полученный результат
    Что произошло по факту. Снова прилагаем скриншот.
  • Приоритет и серьезность
    Выставляя приоритет, говорим, насколько важно прямо сейчас решить эту задачу. Чем больше баг портит основной функционал приложения, чем ближе к его основной задаче, чем чаще используется эта функция — тем приоритетнее баг.

    О серьезности:
    S1(Блокирующая) — одна или несколько функций не работают, приводя систему в нерабочее состояние.
    S2(Критическая) — когда не работает важный функционал, затрагивающий основную бизнес-логику.
    S3(Значительная) — когда не работает не самый важный функционал, бизнес-логика не нарушена или есть возможность осуществить тестируемую функцию корректно, но через другой набор действий.
    S4(Незначительная) — дефект, не относящийся к основному функционалу, возможно, не влияющий на работу приложения: ошибка в интерфейсе, сместившееся поле, проблема сторонних сервисов.
  • Среда
    Указываем, на какой платформе тестировался сервис (браузер, модель телефона, версия Android и т.д.).

Как правило, на тестирование одной версии уходит 3-5 часов.

Часть записи тест-кейса в TFS:

Наш пример — один из самых популярных подходов к описанию багов. Он не универсален для каждой компании, но более-менее общий.

Не первый рабочий день

Немного набравшись опыта, вы сможете “умнее” подходить к тестированию приложения: не просто тыкать на кнопочки и искать то, что не работает — вы будете знать, какие баги искать в первую и последнюю очередь, где они могут быть, начнете учитывать бизнес-логику продукт, будете учиться. Опытных тестировщиков ценят за то, что они повышают качество продукта, а не ищут как можно больше багов.

Приятно, когда тестировщик старается дойти до “корня” проблемы. Пробуйте находить закономерности. Например, при поиске по названию программа при вводе названия пиццы “Пепперони” производит поиск по категории продуктов “Выпечка”. Так происходит со всеми пиццами? Что происходит при поиске выпечки? В каких случаях поиск работает верно? Так вы облегчите работу программистам.

Несколько ресурсов для тех, кому нужно больше информации

1. Для начала, можете посмотреть вот этот плейлист на Youtube. Теоретические основы рассказывают в меру подробно, но этого хватит, чтобы понять, хочется ли двигаться дальше.
2. Рекомендуем книгу Романа Савина “Тестирование dot COM”. Эта книга дает общее понятие о тестировании, рассказывает основы, дает представление о том, чем занимаются тестировщики.
3. “Тестирование программного обеспечения. Базовый курс” Святослава Куликова — полезно начинающим и продолжающим.
4. Полезная статья о том, почему тестирование — не забег на скорость по количеству найденных багов.
5. Здесь разобраны примеры тест-кейсов.
6. Хороший портал, который вам ещё не раз пригодится.

Успехов!

{ "author_name": "Dmitry Kotenko", "author_type": "self", "tags": [], "comments": 2, "likes": 4, "favorites": 22, "is_advertisement": false, "subsite_label": "dev", "id": 59042, "is_wide": true, "is_ugc": true, "date": "Wed, 20 Feb 2019 15:24:10 +0300", "is_special": false }
(function () { let cdnUrl = `https://specialsf378ef5-a.akamaihd.net/SelectelBranding/images/` let previousArticleNumber = null let currentArticleNumber = 0 let platform = 'Desktop' let articles = [ { name: 'camera', url: `${cdnUrl}CameraCat`, text: 'умную камеру для\u00A0наблюдения за\u00A0котиками', link: 'https://vc.ru/selectel/306690', num: 3 }, { name: 'chill', url: `${cdnUrl}ChillCat`, text: 'трекер, который подскажет, когда пора отдохнуть', link: 'https://vc.ru/promo/288561-eye-tracker', num: 1 }, { name: 'cloud', url: `${cdnUrl}CloudCat`, text: 'котика: даёшь ему «пять», а\u00A0он делает бэкап в облако', link: 'https://vc.ru/dev/294799-maneki-neko', num: 2 } ] let buttonCycle = document.querySelector('.button--cycle') let buttonChoose = document.querySelector('.button--choose') let buttonMobile = document.querySelector('.button--mobile') let textField = document.querySelector('.selectel-footer-subtitle') let imageAgent = document.querySelector('.image--agent') let banner = document.querySelector('.selectel-footer') buttonCycle.addEventListener('click', cycleClick) buttonChoose.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) buttonMobile.addEventListener('click', () => sendEvent(`Promo ${articles[currentArticleNumber].num} Left`, 'Click')) let media = window.matchMedia("(max-width: 570px)") media.addEventListener('change', matchMedia) function matchMedia() { if (media.matches) { platform = 'Mobile' } else { platform = 'Desktop' } update() } matchMedia() function cycleClick(event) { sendEvent(`Promo ${articles[currentArticleNumber].num} Right`, 'Click') if (event) { event.preventDefault() event.stopPropagation() } window.open('https://vc.ru/tag/selectelDIY', '_blank') //cycle(event) } function cycle(event) { // incrementArticleNumber() textField.innerHTML = generatedText() imageAgent.src = articles[currentArticleNumber].url + platform + '.svg?3' imageAgent.setAttribute("class", "") imageAgent.classList.add('image--agent', articles[currentArticleNumber].name) banner.href = articles[currentArticleNumber].link } function update() { banner.href = articles[currentArticleNumber].link imageAgent.src = articles[currentArticleNumber].url + platform + '.svg' textField.innerHTML = generatedText() } function incrementArticleNumber() { previousArticleNumber = currentArticleNumber if (currentArticleNumber >= articles.length - 1) { currentArticleNumber = 0 } else { currentArticleNumber++ } } const sendEvent = (label, action = 'Click') => { const value = `SelectelDIY — loc: Footer — ${label} — ${action}`; if (window.dataLayer !== undefined) { window.dataLayer.push({ event: 'data_event', data_description: value, }); } }; function generatedText() { let defaultText if (platform === 'Desktop') { defaultText = `Мы тут собрали %text%. Хотите научим?` } else { defaultText = `Мы тут собрали %text%.` } return defaultText.replace('%text%', articles[currentArticleNumber].text) } function getRandom(min, max) { min = Math.ceil(min) max = Math.floor(max) return Math.floor(Math.random() * (max - min + 1)) + min } (function create() { currentArticleNumber = getRandom(0, articles.length - 1) cycle() let page = document.querySelector('.page--entry') if (page) { function insertAfter() { let parents = page.querySelectorAll('[data-id="7"]') let referenceNode = parents[0] referenceNode.parentNode.insertBefore(banner, referenceNode.nextSibling); loaded() } setTimeout(() => insertAfter(), 0) } }()) function loaded() { banner.classList.add('loaded') } loadImages([ `${cdnUrl}CameraCatDesktop.svg`, `${cdnUrl}ChillCatDesktop.svg`, `${cdnUrl}CloudCatDesktop.svg`, `${cdnUrl}CameraCatMobile.svg`, `${cdnUrl}ChillCatMobile.svg`, `${cdnUrl}CloudCatMobile.svg?3`, ]) function loadImages(urls) { return Promise.all(urls.map(function (url) { return new Promise(function (resolve) { var img = document.createElement('img'); img.onload = resolve; img.onerror = resolve; img.src = url; }); })); } }())
0
2 комментария
Популярные
По порядку

интересно написано и неплохо разжевано. спасибо!

0

Спасибо, стараюсь!

0
Читать все 2 комментария
Роботы-курьеры «Яндекса» начнут доставлять посылки «Почты России» в Москве Статьи редакции

Пока заказать доставку можно через приложение «Почты России» на Android в некоторых районах города.

Робот-курьер «Яндекса»
Как не попасть в карьерную ловушку тимлида: личный опыт

Кажется, что тимлиду просто некуда расти: дальше надо либо идти в менеджмент, либо наоборот, становиться узконаправленным разработчиком. По просьбе «Лаборатории Касперского» Евгений Мацюк, который прошел в компании неординарный путь, рассказал о своих карьерных развилках во время и после тимлидства, а также поделился опытом горизонтального роста.

ПСБ запустил личный кабинет для предпринимателей. Там можно следить онлайн за каждым своим терминалом

Сервис предоставляется бесплатно.

Как OTUS стал платформой для самореализации. История преподавателя

Наш преподаватель, специалист по Data Science, решил поделиться своей историей преподавания. Он рассказал, как пришел в эту сферу, с какими трудностями столкнулся на пути к преподаванию и что ему помогает. А еще поделился советами, как поддерживать внимание студентов и сделать занятия полезными и увлекательными.

Неправильный кейс о продвижении юридических услуг с помощью контекстной рекламы

Взлёты, падения и оплата за конверсии.

Логи нарушений работы водителей: как это работает на пользу доставки
7 причин начать пользоваться Bright Data Proxy Manager:
Яндекс.Еда повышенная стоимость доставки и отказ возврата при неполной доставке

Сегодня заказал в в Яндекс.Еде из Макдоналдса:

Cloud CDN: что это такое, как устроено и кому нужно. Разбираем на примере бургеров

Cloud CDN — это сеть быстрой доставки статического контента в формате услуги облачного провайдера. Объяснить, как работает технология, проще всего на примере — сравнить Cloud CDN с популярным продуктом, который выглядит плюс-минус одинаково вне зависимости от того, заказали вы его в Москве, Питере или Нью-Йорке. Знакомьтесь: классический бургер.…

«Крутые ИТ-стартапы запускают не только в Кремниевой долине»: путь Insider от офиса в квартире к $47 млн инвестиций

За 9 лет разработчик маркетинговой платформы из Турции открыл филиалы в Польше, Вьетнаме, Индонезии, Дубае, России, Австралии и ещё 19 странах, а в будущем планирует оценку в $2-3 млрд и выход на IPO.

null