QA для начинающих: как протестировать ракету или самолёт

В новом выпуске подкаста «Сушите вёсла» Android-разработчики позвали в гости ребят из QA. Обсудили, что это за дисциплина такая, чем она полезна бизнесу и как протестировать ракету, не спрашивая Илона Маска.

В закладки
Аудио

Разработчики Redmadrobot записывают душевные подкасты, где обсуждают разработку, аналитику, тестирование и другие стороны создания ИТ-продуктов. В этот раз на огонёк заглянул QA-отряд из Redmadrobot: тимлиды Алекс и Глеб и их руководитель Саша. Получился честный разговор про жизнь QA в мире, где есть тестировщики и разработчики. Ниже ссылка на полную запись и ответы на самые горячие вопросы.

Что это вообще такое — QA?

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

А в чём отличие от тестировщика?

Глобально QС (Quality Control), или тестировщики, — это часть QA.

Тестировщик изучает продукт, проводит исследования, отрабатывает возможные сценарии и ловит баги. Он предоставляет команде общую картину о продукте. QC не повышает качество, а даёт представление о том, что происходит в разработке.

QA же помогает команде наладить процессы, связанные с качеством. Он смотрит на всю картину целиком и делает так, чтобы ошибок было меньше.

QC про результат: найти баги. QA про процесс: отладить процессы разработки, чтобы багов не было.

Должен ли тестировщик знать язык программирования, на котором написана программа?

Тестировщику необязательно знать язык и технологию, но это может быть плюсом в работе.

Мне очень нравится исследовать баги, и иногда меня заносило: я доходил до строчки кода, где баг воспроизводился. Это интересно, когда ты можешь дать чуть больше информации разработчику в баг-репорте. Но это совсем необязательно.

Алекс
QA Team Lead

«Код написан х̶о̶р̶о̶ш̶о̶»: разработчик пишет код, а тестировщик ищет баги. Как не поругаться?

Разработчик думает, как сделать хорошо. Тестировщик думает, как протестировать, чтобы найти, почему это плохо. Тут есть определенный конфликт интересов.

У нас есть гипотеза, что всё зависит от того, как далеко QA находится от разработчика. Когда они сидят рядом, то рассуждают и рефлексируют над задачей вместе. Это работает лучше, потому что уровень доверия выше. Находясь в разных отделах или компаниях, сложно достичь такого взаимопонимания. Остаётся только злиться на репорты от незнакомых ребят.

Ещё такое бывает у специалистов в начале пути. У молодых QA и разработчиков немного опыта в командной работе, поэтому возникают трудности. Со временем появляется осознание, что вы — напарники, работаете над одним продуктом и вместе делаете его лучше.

В QA идут неудавшиеся программисты?

Бывает по-разному, некоторые уходят в тестирование по любви. Например, наш Head of QA Саша ушёл из программирования, потому что ему больше нравится всё ломать.

Можно ли «мигрировать» из одного вида тестирования в другой?

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

А ракету-то как протестировать?

Мы тестируем ПО и не связаны с космосом. Но можем предположить, как это может быть.

Как и в других тестах, тут мы имеем дело со списком характеристик объекта. Его материалы, износостойкость, температура нагрева или охлаждения, количество топлива на один полёт и ещё сотни пунктов.

Если бы тестировщик захотел протестировать ракету, то стал бы вытворять с ней всякое: нагревал бы, охлаждал, отправлял на расстояние, на которое она не рассчитана, и прочее. Отработка подобных сценариев, исходящих из документации к объекту или из эмпирических познаний, способна выявить дефекты, от исправления которых зависит качество любого продукта.

Полезные ссылки

Starter pack для всех, кто хочет ворваться в мир QA уже сегодня:

Если есть вопросы — пишите в комментариях, будем разбираться :)

Слушайте нас на удобной платформе — SoundCloud, Apple, Google Podcasts. Приходите обсуждать выпуск в Telegram-чат.

Материал опубликован пользователем.
Нажмите кнопку «Написать», чтобы поделиться мнением или рассказать о своём проекте.

Написать
{ "author_name": "РЭДМЭДРОБОТ", "author_type": "self", "tags": ["\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430","\u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435","\u043f\u043e\u0434\u043a\u0430\u0441\u0442\u044b","\u043a\u043e\u043c\u0430\u043d\u0434\u0430","\u0431\u0438\u0437\u043d\u0435\u0441","qa","android"], "comments": 11, "likes": 26, "favorites": 82, "is_advertisement": false, "subsite_label": "hr", "id": 96778, "is_wide": false, "is_ugc": true, "date": "Wed, 11 Dec 2019 09:43:01 +0300", "is_special": false }
Создать объявление на vc.ru
Сервисы
Куда уходят клиенты конструкторов сайтов
Чаще всего мигрируют с Wix на Tilda, клиенты «Платформы LP» переходят на Creatium, а «Битрикс 24» и Tilda обмениваются…
0
{ "id": 96778, "author_id": 337772, "diff_limit": 1000, "urls": {"diff":"\/comments\/96778\/get","add":"\/comments\/96778\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/96778"}, "attach_limit": 2, "max_comment_text_length": 5000, "subsite_id": 199121, "last_count_and_date": null }
11 комментариев
Популярные
По порядку
Написать комментарий...
8

Тестировщик думает, как протестировать, чтобы найти, почему это плохо

Тестировщик ищет пути, при которых состояние или поведение системы становится не таким, каким ожидается. Иногда просто проверяет, каким будет состояние или поведение системы в таких-то ситуациях, потому что ожиданий особых нет и значит нужно получить знания на будущее.
Но тестировщик не ищет, почему что-то пошло не так. Его задача — описать, что к этому привело как можно более кратно и ясно. Можно, конечно, потратить время и разобраться, что же послужило причиной. Но это будет тормозить сам процесс контроля качества.

Остаётся только злиться на репорты от незнакомых ребят

Ппц. Это кто такой неженка? Не важно, знакомый тебе зарепортил или не знакомый. У тебя репорт есть, это уже в миллион раз лучше, чем ничего. В конце-концов, задай дополнительные вопросы.

ему больше нравится всё ломать

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

Если бы тестировщик захотел протестировать ракету, то стал бы вытворять с ней всякое:

Тестировщик бы ознакомился с техническими требованиям и проверил бы соответствие им. То есть создавал условия, описанные в требованиях и проверял бы, всё ли остаётся в порядке. А что касается "отправлять на расстояние, на которое она не рассчитана", то это тоже про требованиях. Сказано в требованиях, что при такой-то дальности должны быть такие-то результаты и не описано, что должно быть сверх этого — тогда можно отправить, чтобы просто указать в репорте, что будет если. Но на релиз это не влияет особо. А если в требованиях сказано, что она должна летать строго столько, то сама возможность отправки сверх этих значений должна быть невозможна. И это проверяется не на ракете, а на ПО. То есть никто не отправлял бы ракету саму в этом случае.

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

Ответить
0

Не принимайте близко к сердцу. Тут же краткий пересказ, в подкасте всё по делу. Конечно, если всё-таки готовы)

Ответить
2

"он должен уметь создавать баги" - ага, именно создавать баги, может всё таки воспроизводить? Корректно описывать?

"Если бы тестировщик захотел протестировать ракету, то стал бы вытворять с ней всякое: нагревал бы, охлаждал, отправлял на расстояние, на которое она не рассчитана, и прочее. Отработка подобных сценариев, исходящих из документации к объекту или из эмпирических познаний, способна выявить дефекты, от исправления которых зависит качество любого продукта." - ага, именно так, сначала запусти ракету и потверди что она запускается, а уже потом нагревай, охлаждай и т.д. Потому что сначала проверяют работает ли КАК ДОЛЖНО, а уже потом проверяют какая реакция на неожиданные сценарии. И тестировщики не ищут баги.

Ответить
1

Кстати такое иногда случается с начинающими QA, когда проверяют sql инъекцию, xss, даже с учетом того что современные фреймворки это из коробки умеют экранировать. Находят какой-нибудь хитрый кейс, который только на тестовом энвайронменте воспроизводится. Но забыли протестировать позитивный сценарий, который будет использовать треть пользователей, может так и в продакшн все уехать, если разработчик тоже не посмотрит.

Или учат так или просто людям скучно по тест кейсам гонять, хочется достижений, KPI по открытым багам выполнить.

Ответить
0

Наверное, опечатка, а вообще в теории тестирования есть такой подход для оценки качества тестирования – внесение в систему искусственных багов, чтобы потом просмотреть находятся они или нет в текущем процессе тестирования.

Ответить
0

Это называется мутационное тестирование. Им хорошо проверять автотесты. То есть мутанты нужны для того, чтобы проверить качество покрытия.

Ответить
0

Это две разные техники, которые могут дополнять друг друга.

Мутационное тестирование (mutation testing227) — техника тестирова-ния, в которой сравнивается поведение нескольких версий одного и того же компонента, причём часть таких версий может быть специ-ально разработана с добавлением ошибок (что позволяет оценить эф-фективность тест-кейсов — качественные тесты обнаружат эти специ-ально добавленные ошибки). Может комбинироваться со следующим в этом списке видом тестирования (тестированием добавлением ошибок).
o

Тестирование добавлением ошибок (error seeding228) — техника те-стирования, в которой в приложение специально добавляются зара-нее известные, специально продуманные ошибки с целью монито-ринга их обнаружения и устранения и, таким образом, формирования более точной оценки показателей процесса тестирования. Может ком-бинироваться с предыдущим в этом списке видом тестирования (мута-ционным тестированием).

Ответить
0

Я не могу уловить разницу. В чём она?

Я могу уловить разницу между Fault injection и мутационным тестированием, но потому что это вообще разные вещи. Первым можно, к примеру, отказоустойчивость системы проверить или убедиться в полноте и корректности обработчиков исключений. А вторым можно проверить тесты. Но не могу уловить разницу между вот теми цитатами 227 и 228.

Ответить
1

Ок)

Ответить
1

Очень полезно для начинающих, огромное спасибо! P.S. не слушайте отстойные коменты, троли пишут, это как эпидемия сейчас

Ответить
0

Спасибо)

Ответить
{ "page_type": "article" }

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fizc" } } }, { "id": 4, "label": "Article Branding", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cfovx", "p2": "glug" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fjog" } } }, { "id": 10, "disable": true, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "disable": true, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "bscsh", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "bugf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-223676-0", "render_to": "inpage_VI-223676-0-1104503429", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=bugf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Баннер в ленте на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudx", "p2": "ftjf" } } }, { "id": 16, "label": "Кнопка в шапке мобайл", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byzqf", "p2": "ftwx" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "bugf", "p2": "fzvc" } } }, { "id": 19, "disable": true, "label": "Тизер на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "p1": "cbltd", "p2": "gazs" } } }, { "id": 20, "label": "Кнопка в сайдбаре", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "p1": "cgxmr", "p2": "gnwc" } } } ] { "page_type": "default" }