Найти тему
Журнал «Код»

Кто такой инженер по тестированию и стоит ли на него учиться

Рас­кла­ды­ва­ем по полоч­кам новую про­фес­сию.

Если вы зна­е­те язык про­грам­ми­ро­ва­ния, вы може­те стать раз­ра­бот­чи­ком и писать код. Если зна­е­те мате­ма­ти­ку, може­те стать дата-сайентистом и извле­кать зна­ния из биг-даты. Если раз­би­ра­е­тесь в людях, биз­не­се и тех­но­ло­ги­ях, мож­но стать про­дак­том и рулить про­дук­том в целом.

А кто такой инже­нер по тести­ро­ва­нию? Гово­рят, что это хоро­ший трам­плин в ИТ. Раз­бе­рём­ся.

На микроволновках

Допу­стим, в ком­па­нии реши­ли создать быто­вую мик­ро­вол­нов­ку.

Продакт-менеджер:
Кол­ле­ги, нам нуж­но устрой­ство, в кото­ром люди смо­гут разо­гре­вать блю­да, но без нагре­ва­тель­но­го эле­мен­та. Что­бы рабо­та­ла быст­ро. Раз­мер такой-то. Нуж­на двер­ца. Обя­за­тель­но тай­мер.
Раз­ра­бот­чик:
Для это­го под­хо­дят мик­ро­вол­ны. Потре­бу­ет­ся сде­лать вра­ща­ю­щу­ю­ся плат­фор­му и фара­де­е­ву клет­ку.
Про­дакт:
Ниче­го не понял, делай­те.
Инже­нер по тести­ро­ва­нию:
Постой­те!
Все:
Что?
Инже­нер по тести­ро­ва­нию:
От како­го напря­же­ния будет рабо­тать? Какая будет защи­та от пере­па­дов? А если вклю­чить в розет­ку вдвое менее мощ­ную? Что там мож­но будет греть, а что нель­зя? Что если вклю­чить с откры­той двер­цей? Что будет, если греть воду? Что если греть камень? А сталь? А кота? А дина­мит? А если под­жечь фитиль? А если туда ниче­го не поло­жить и вклю­чить?
Все креп­ко дума­ют.

Это и есть рабо­та тести­ров­щи­ка: убе­дить­ся, что про­дукт рабо­та­ет нор­маль­но в штат­ных и вне­штат­ных ситу­а­ци­ях. По-умному будет так: «Насколь­ко реаль­ное пове­де­ние про­дук­та сов­па­да­ет с ожи­да­е­мым и как это отра­зит­ся на опы­те поль­зо­ва­те­ля?»

Какие бывают

В ИТ-среде в свя­зи с тести­ро­ва­ни­ем и каче­ством при­ня­то три обо­зна­че­ния:

QA — quality assurance, самый глав­ный по каче­ству;
QC — quality control, кон­тро­лёр каче­ства;
Tester — тести­ров­щик.

В раз­ных ком­па­ни­ях эти обо­зна­че­ния могут сли­вать­ся или допол­ни­тель­но раз­де­лять­ся, но в целом кар­тин­ка такая.

QA — это тот, кто дума­ет о каче­стве про­дук­та в целом, при­чём не толь­ко о конеч­ном коде, но и все­го про­цес­са раз­ра­бот­ки. Напри­мер:

Как понять поль­зо­ва­тель­ские сце­на­рии, в кото­рых веро­ят­нее все­го воз­ник­нут ошиб­ки? Как их собрать? Как систе­ма­ти­зи­ро­вать? Как ниче­го не упу­стить? (Напри­мер, как понять, какие имен­но пред­ме­ты люди могут дога­дать­ся засу­нуть в мик­ро­вол­нов­ку, и как защи­тить­ся от иди­о­тов, кото­рые засу­нут туда дина­мит?)
Как соеди­нить запро­сы людей, тре­бо­ва­ния биз­не­са и реаль­ные воз­мож­но­сти про­дук­та с точ­ки зре­ния каче­ства? Что если наш про­дукт совсем не дела­ет то, чего поль­зо­ва­те­ли могут ожи­дать? Напри­мер, если они будут сушить в мик­ро­вол­нов­ке кош­ку — это чья про­бле­ма? Будем ли мы с этим что-то делать?
Кто, как и в каком поряд­ке будет исправ­лять ошиб­ки? Как мы будем повтор­но тести­ро­вать места с ошиб­ка­ми?
Что и как тести­ро­вать от вер­сии к вер­сии про­грам­мы, что­бы это было доста­точ­но быст­ро, но не в ущерб каче­ству?

Мож­но пред­ста­вить, что QA — это дирек­тор по каче­ству, глав­ный чело­век на пути у багов. Он не менее важен, чем глав­ный архи­тек­тор или ИТ-директор. Мно­гие его функ­ции могут пере­се­кать­ся с функ­ци­я­ми дру­гих ИТ-директоров.

QC — это тот, кто сфо­ку­си­ро­ван на тести­ро­ва­нии само­го про­дук­та:

Что имен­но тести­ру­ем? Какие функ­ции, кноп­ки, состо­я­ния, сце­на­рии?
Какие резуль­та­ты тести­ро­ва­ния нам нуж­ны? Какие исхо­ды пра­виль­ные, а какие — ошиб­ки?
Как авто­ма­ти­зи­ру­ем тесты? Что нуж­но обя­за­тель­но прой­ти руч­ка­ми?
Как син­хро­ни­зи­ро­вать рабо­ту несколь­ких тести­ров­щи­ков? Как рас­пре­де­лить зада­чи, обла­сти, слои?

Мож­но пред­ста­вить, что это такой глав­ный бри­га­дир тести­ров­щи­ков. Его рабо­та — что­бы тесты шли ров­но и чёт­ко, без про­блем. Разу­ме­ет­ся, очень полез­но, если он уме­ет непо­сред­ствен­но тести­ро­вать.

Тести­ров­щик — это тот, кто тести­ру­ет про­дукт: про­хо­дит его руч­ка­ми или пишет авто­ма­ти­че­ские тесты; опи­сы­ва­ет баги; обща­ет­ся с раз­ра­бот­чи­ком по пово­ду этих багов; зано­во тести­ру­ет исправ­лен­ное.

Зачем столько тестировщиков

Когда про­дукт малень­кий, функ­ция тести­ров­щи­ка может лежать на самом раз­ра­бот­чи­ке: сам напи­сал код, сам про­ве­рил рабо­ту. Ника­кие QA и QC в малень­ком про­дук­те не нуж­ны — там всё реша­ет­ся быст­ро и ком­пакт­но.

Но про­дук­ты име­ют свой­ство рас­ти: сна­ча­ла там один раз­ра­бот­чик, потом трое. Каж­дый про­те­сти­ро­вал свою часть про­дук­та, а кто про­те­сти­ру­ет про­дукт в целом и про­ве­рит «сты­ки»? Нужен тести­ров­щик. Про­дукт про­дол­жа­ет рас­ти, и вот уже у нас не один тести­ров­щик, а пяте­ро: как сде­лать так, что­бы они не тести­ро­ва­ли одно и то же? Или тести­ро­ва­ли, но по пра­виль­ной мето­ди­ке? Зна­чит, им нужен бри­га­дир — QC.

Не успе­ли огля­нуть­ся — и вы уже дела­е­те мас­со­вый веб-сервис, у вас несколь­ко сотен тысяч кли­ен­тов, а сам сер­вис состо­ит из десят­ков моду­лей. И часть моду­лей дела­ют в Москве, дру­гую часть — в Санкт-Петербурге, тре­тью — в Ека­те­рин­бур­ге. У каж­до­го офи­са своя атмо­сфе­ра, куча соб­ствен­ных нюан­сов и про­блем. И вот это всё нуж­но «при­че­сать», что­бы внут­ри и на сты­ках этих моду­лей не было багов. Над этим рабо­та­ют десят­ки тести­ров­щи­ков, несколь­ко QC и один боль­шой важ­ный QA, кото­рый управ­ля­ет тести­ро­ва­ни­ем.

Что делает тестировщик

Тести­ров­щи­ку дают про­дукт и тре­бо­ва­ния к нему (доку­мен­та­цию). Он всё это изу­ча­ет и сопо­став­ля­ет. При­ду­мы­ва­ет, как это всё тести­ро­вать. Его зада­ча — про­ве­рить, что­бы про­дукт испол­нял воз­ло­жен­ные на него обя­зан­но­сти по доку­мен­та­ции, а потом — про­ве­рить вся­кие нештат­ные ситу­а­ции и пред­ло­жить улуч­ше­ния.

Само тести­ро­ва­ние про­ис­хо­дит по мно­же­ству раз­ных сце­на­ри­ев. Напри­мер, так:

Тести­ров­щик откры­ва­ет про­дукт как поль­зо­ва­тель и про­хо­дит все стан­дарт­ные сце­на­рии — как будет про­ис­хо­дить у 80% всех людей. Все баги фик­си­ру­ет.
Потом он может прой­ти кро­меш­ные вари­ан­ты — напри­мер, если у чело­ве­ка очень длин­ное имя или трёх­знач­ный воз­раст. Напри­мер, если у вас интернет-магазин, то что будет, если в нём зака­жет товар Его Пре­свя­тое Вели­че­ство Кон­стан­тин Кон­стан­ти­но­вич «Наву­хо­до­но­сор II» Кон­стан­ти­но­поль­ский?
Мож­но попро­бо­вать взло­мать про­дукт: вме­сто име­ни вве­сти код; доба­вить в кор­зи­ну бес­ко­неч­ное коли­че­ство това­ров; доба­вить в кор­зи­ну −1 (минус один) товар; доба­вить в кор­зи­ну боль­ше 40 тысяч това­ров (и пере­гру­зить пере­мен­ную счёт­чи­ка това­ров); поис­кать в стро­ке поис­ка «Вой­ну и мир» (пол­ный текст).
Мож­но пред­ста­вить, что у поль­зо­ва­те­ля дефект­ное устрой­ство: напри­мер, ввод про­ис­хо­дит бес­ко­неч­но быст­ро или вме­сто рус­ских букв в поле вво­да встав­ля­ют­ся кар­тин­ки. Как тогда пове­дёт себя про­грам­ма? Все наход­ки фик­си­ру­ют­ся в баг­тре­ке­ре.

Какие-то из этих тестов мож­но авто­ма­ти­зи­ро­вать: пишет­ся спе­ци­аль­ная про­грам­ма, кото­рая симу­ли­ру­ет дей­ствия поль­зо­ва­те­ля и срав­ни­ва­ет резуль­та­ты с эта­ло­ном. Дру­гие тесты обя­за­тель­но про­хо­дят­ся руч­ка­ми.

Отдель­ная кух­ня — это то, как тести­ров­щик фик­си­ру­ет баги и доно­сит их до раз­ра­бот­чи­ка. Ведь одно дело ска­зать «Я нашёл ошиб­ку», и совсем дру­гое — сде­лать так, что­бы раз­ра­бот­чик тоже смог её най­ти и испра­вить. Поэто­му хоро­ших тести­ров­щи­ков учат гра­мот­но опи­сы­вать баги.

В неко­то­рых ком­па­ни­ях тести­ров­щик пред­ла­га­ет улуч­ше­ния про­дук­та с точ­ки зре­ния логи­ки, интер­фей­са или тек­ста. Раз чело­век поль­зу­ет­ся про­дук­том мно­го и часто, есть смысл его послу­шать.

Почему говорят, что это трамплин в профессию

С одной сто­ро­ны, стать тести­ров­щи­ком про­ще, чем про­грам­ми­стом: не нуж­но знать язы­ки про­грам­ми­ро­ва­ния и мате­ма­ти­ку. Про­грам­ми­ро­ва­ние и пони­ма­ние алго­рит­мов потре­бу­ет­ся толь­ко для авто­те­стов, и это не так слож­но, как обыч­ная про­дук­то­вая раз­ра­бот­ка.

С дру­гой сто­ро­ны, тести­ров­щи­ки очень важ­ны: ни одна ува­жа­ю­щая себя ком­па­ния не будет запус­кать про­дукт без вни­ма­тель­но­го тести­ро­ва­ния. Вез­де, где есть раз­ра­бот­чи­ки, будут и тести­ров­щи­ки.

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

Где учиться

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

Подписывайтесь на наш канал, чтобы стать крутым тестировщиком!