Как обучить девушку основам тестирования веб-приложений?

Читать много, нужен совет.

Немного нетривиальная задача мне выпала. Девушка, можно сказать, моя гражданская жена, хочет стать тестировщиком. Сама не особо знает, каким именно, но хочет в IT на начальные позиции. После некоторых раздумий остановились на тестировании интерфейсов веб-приложений, т.к. это, во-первых, тренд (время SPA), который будет только расти, а во-вторых, в вебе огромная свобода в тестировании. Иные виды приложений (мобильные, десктоп), решили отсечь, т.к. входной порог выше (узкие инструменты, менее популярные, более привязывающие к технологии). Иные виды тестирования - тем более. Во-первых, значительную часть тестов, которые "близко к коду" или "близко к критическим фичам", делают программисты, во-вторых, про далекие тесты (вроде нагрузочного, дымового и т.п.) можно забыть на начальном этапе. Сам я с вебом очень давно знаком, фулстек разработчик, как щас говорят. Из технологий: python/js/django/flask/backbone и всякое смежное. В основном пишу модульные тесты (питоний unittest), фронтенд тестил редко, ибо фриланс и проекты не такие большие, но есть опыт с mocha/jasmine + selenium, а также python + selenium для e2e тестирования. Для себя я много что пробую, но все-таки я не тестировщик, просто приходится знать и интересоваться, как оно, плюс есть вещи, где нельзя без тестирования.

Так вот, в общем, имеем мое понимание, как оно устроено и может быть устроено, и практически нулевые знания у девушки. У нее за плечами довольно техническое образование (безопасность в IT), что-то она кодила, про веб знает немного. Можно охарактеризовать так: html/css, немного питона (по моей инициативе), примерное представление о парадигмах программирования (ООП), что-то знает про сети (шлюз, роут, днс, дхцп, скорее всего, помнит даже, что такое бгп (sic!) и т.п.), но опыта нет ни в чем вообще. Есть аналитическое мышление, но нет уверенности, "нет наглости делать так, как кажется правильным и не бояться писать велики".

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

Но с моей точки зрения знать надо много: у меня есть ощущение, что тестировщик - это почти разработчик. Как можно тестить интерфейс без понимания того, как устроена верстка (html/css/svg, особенно фичи с селекторами)? Как можно тестировать сложные сценарии без знания основ взаимодействия фронтенда и бэкенда (кукисы, аякс, основы js, чтобы не пугаться, если что)? Кроме того, хорошо было бы знать что-нибудь про бекенд. Кроме того, в реальном месте вообще может оказаться какая-нибудь связка ангуляра, кармы тест раннера, жасмина или чего-то в этом роде, надо бы быть в теме.

Что я сделал: решил начать с питона, потому как JS учить как первый язык и умереть в прототипах, очень интересном приведении типов, 100 способах объявить приватный член и стрелять по ногам, с миллионами фреймворков/парадигм/стандартов/модулей/классов... Это очень сложный язык, я считаю. Начинать с популярной джавы - это вообще провал, потому как я сам с ним знаком на уровне универа всего лишь, во-вторых, я считаю, что это не лучший язык для разработки и обучения, кроме того, мы все-таки в области фронтенда. На питоне мы уже написали тестовый класс и юнит-тестик для него, чтобы примерно понимать суть тестирования. Потом я сказал, что если сделать наоборот, то это будет TDD. А если перед TDD подумать и описать, что надо, то это будет BDD. Понимаю, что нюансов много, но стараюсь сделать так, чтобы возникли вопросы у человека, и он пошел гуглить. По пути я объясняю некоторые фичи вроде того, зачем нужен self (для непитонистов - this - указатель на текущий объект), что такое типизация, ООП, даю ссылки на хабру, в доки, показываю, как дебажить, разбирать ошибки, в общем, стараюсь объяснить как можно больше всего из программирования вообще, могу параллельно залечивать на темы "а ты знаешь, вот в си есть указатели, и они там работают вот так ...", потому как язык - это все фигня. С вероятностью значительной ей придется учить либо js, либо, прости господи, джаву. И все это будет очень просто, я считаю, если она будет знать базовые концепции.

Кроме того, мы поставили селениум вебдрайвер и сейчас пишем в том же питоне функциональные тесты (e2e) реальных сайтов, на кнопочки нажимаем, поля заполняем, по страницам ходим. Иногда я пишу тестовые странички, где надо мышой подвигать, покликать, ховеры разные и визибилити проверить, чтобы было посложнее. Все это надуманные примеры, но суть объясняет.

Периодически объясняю, что селениум - это не только вебдрайвер и что сущесвуют иные запускальщики тестов, это все для кругозора. Про само тестирование (какое бывает) я посоветовал лекции от Яндекса + пару тройку статей с Хабры, т.к. считаю, что брать книжку, где тестируют абстрактные светофоры - это бесполезно.

Я думаю, мой подход понятен, я учу читать доки и стараюсь из обрывков инфы в ее голове создать что-то, причем моя задача - это "знать суть + моментальная практика, а нюансы нужны только тогда, когда знаешь, что они существуют". Смотрим доки, если что не известно, то тут же надо гуглить, если нужна фундаментальная инфа, то статьи/обрывки книг по основам и так далее.

Так вот. Прав ли я вообще? Моя задача объяснить основы веба, в т.ч. программирования, популярные инструменты для тестирования, популярные парадигмы, чтобы можно было пойти джуном тестером. Я чувствую, что я не учитель, ибо у меня есть какое-то видение автоматически, как должно быть, и я строю все уже из него. Есть ощущение, что говорю очень много инфы сразу, что вводит в ступор. Есть ощущение, что я не могу передать все, что знаю, ибо всего очень много и часто все затягивается на длинные монологи, когда я что-то показываю, делаю, но у человека разрывает мозг. Кто-нибудь считает, что я дико не прав, возможно? Может, есть фундаментальная литература с основами по тестированию веба вообще? Она начинала читать "тестирование дот ком" от кого-то, по моему мнению ее вообще читать не стоит, ибо все, что там есть, можно увидеть на вики, немного подумав. Может, есть какие-то прямо суперские книги, такие как Кормен в алгоритмах, например? Или мне стоит вообще изменить подход?

Сам нахожусь в некотором замешательстве, ибо начал чувствовать, что я, скорее, "укладываю инфу в своей голове", чем что-то объясняю ей... %)
  • Вопрос задан
  • 7066 просмотров
Решения вопроса 3
AlexXYZ
@AlexXYZ
O Keep Clear O
Мне кажется, что после слов
Девушка, можно сказать, моя гражданская жена
многие перестали читать... Вам такую информацию надо было поместить в конце. В стиле "да, вот ещё - эта девушка моя гражданская жена".
Есть всякие исторические анекдоты на эту тему. Мне нравится следующий:
Поклонник: Шерр Моцарт, я подумываю начать писать симфонии. Не могли бы Вы подсказать, как мне начать?
Моцарт: Симфония – это очень сложная музыкальная форма. Начинайте с каких-нибудь простых частушек, и постепенно усложняя, двигайтесь к симфонии.
Поклонник: Но герр Моцарт, Вы начали писать симфонии с 8 лет.
Моцарт: Всё верно. Потому что никогда ни у кого не спрашивал, как их надо писать.


В принципе ваша жена, пусть и гражданская, поступает правильно, что пытается понять, что вы делаете. У вас очень хорошая жена. Расскажите ей, но не будьте занудой. Она сама выберет, что из того, чем вы занимаетесь будет ей интересно.
Ответ написан
@mipan
Много текста - мало сути. Боюсь, и учите вы также.

прочесть:
1. Савин "Тестирование Dot Com"
2. Программу базового уровня ISTQB - rstqb.org/sertifikacija/materialy/materialy-istqb.html

Для минимум изучения:
1. Общую информацию про http протокол.
2. Как правильно писать баги (необходимая информация, ясность, лаконичность, пр)
3. Консоль браузера.
4. SQL - базовые запросы, join'ы
5. Посмотреть как выглядит процесс CI, инструменты типа Jenkins
6. Selenium - постольку-поскольку. Маловероятно, что сходу дадут писать прям автотесты. Если будет время, до кучи с ним еще XPath
7. Xml
8. Всякие полезные фичи, типа инструментов для быстрой обработки скриншотов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
@HappySmile
Женись на ней! И пусть варит борщ и нянчит детей. Зачем засорять голову тестированием)))
Ибо с описания понятно, что тестирование ей не идет. И вообще, что за мода пошла приводить своих подруг в тестирование.
Ответ написан
nastasya1011
@nastasya1011
тестировщик, криптография
единственный источник по тест-дизайну который может рассказать как тестировать кроме как ориентируясь на свой субъективный здравый смысл A Practitioner’s Guide to Software Test Design
Lee Copeland
Ответ написан
Комментировать
@EkS2019
По идее спрос на тестировщиков должен расти. Но что-то в моем большом городе Тюмени из 167 вакансий программистов, только 3 вакансии тестировщиков. И вакансии новые редко бывают по этой профессии.
Ответ написан
Комментировать
@lilia_urmazova
Онлайн-школа IT-профессий m2p.education
С Савиным согласна.
ISTQB - ну, под вопросом. Мне кажется, с этого начинать немного жестковато.

По тестированию минимум:
-----------------------------------
Мануальное тестирование
1) Основы тест-дизайна (для начала уверенных знаний partitioning достаточно, но можно для ознакомления и что-то посложнее взять).
2) Работа с требованиями - просто must have (анализ, оценка качества требований, умение задавать вопросы стейкхолдерам)
3) Работа с дефектами - качество и приоритезация.
4) Основы сетевых протоколов
5) Основы SQL
6) Основы REST
7) Основы архитектуры ПО
8) Работа по Agile и отличие от других SDLC
9) XML/JSON
10) Основные тулы для работы

Автоматизация:
1) Автоматизация UI (Selenium)
2) Автоматизация REST
3) Автоматизация мобилок (Appium или что-то из этой оперы)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы