Pull to refresh
15
35.1
Send message

Спасибо за комментарий! Насчёт фейкового опыта — точное замечание. Честно, не стал выносить это в статью, потому что, по факту, этим занимаются не только по наводке курсов. Многие ушлые студенты уже изначально идут на обучение с планом: "сделаю пару пет-проектов, накручу резюме, притворюсь сразу миддлом". Курсы тут не всегда первопричина — это скорее симптом общей болезни.

Когда такие "лайфхаки" ещё и вдалбливаются как часть обучения — это просто токсично. Вред и рынку, и самим выпускникам.

В файле button.py видимо ошибка два раза повторяется expect(locator).to_be_disabled() в двух методах

Спасибо за замечание! Действительно, этот вызов повторялся дважды — уже исправил.

И вот не понятно с чекбоксом как быть? его не нужно выделять в отдельный тоже файл? или это считается button

Чекбокс — это всё же отдельный элемент, у него своя семантика и поведение. Поэтому его лучше выносить в отдельный файл/класс. Он не является частью button, даже несмотря на визуальную схожесть.

Как правильно и где объявлять кастомный data-testid, если по умолчанию web разработчики используют просто "id"? Если я не ошибаюсь, то это нужно сделать в fixtures в settings в chromium_page?

Да, вы всё верно поняли. Если на проекте используются обычные id, и нет возможности повлиять на появление data-testid, можно переопределить селектор по умолчанию. Это делается один раз в начале (например, в фикстуре chromium_page) с помощью:

playwright.selectors.set_test_id_attribute("id")

осле этого можно использовать привычный синтаксис:

login_button = page.get_by_test_id("login-button")
login_button.click()

Похоже, вы немного ошиблись статьёй — тут речь идёт про API тесты, а не про UI и работу с data-testid

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

Спасибо за комментарий! Если уже не новичок и срочно нужна работа — лучше не идти ни на какой курс. Это просто не тот момент. Гораздо эффективнее сразу фокусироваться на поиске: обновить резюме, пройтись по вакансиям, подготовиться к собеседованиям, порешать задачки. Курсы — это всё-таки про вдумчивое, системное обучение, которое требует времени. А в ситуации «нужно срочно выйти на работу» — это не самое разумное вложение времени.

Спасибо за комментарий, очень хороший вопрос!

А как в этом отчете узнать, какие страницы / состояния не покрыты тестами? На первый взгляд - кто-то должен вручную прокликать разные тесты / страницы в отчете и визуально оценить покрытие. Это так, или я что-то упустил?

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

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

Скриншот этой штуки будет чуть ниже — фича уже почти готова

Да, всё так. Они вваливают миллионы в маркетинг, лендосы, фотосессии с модными прическами — и потом всё это включают в цену курса. А по факту — ты платишь не за контент, а за «ощущение, что учишься у звезды».

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

И самое смешное — всё это часто делается, чтобы человек, купив курс, видел в преподе «себя в будущем». Типа «я тоже буду таким модным экспертом». А потом хоп — уже подписка, рассрочка, и ты не учишься, а просто платишь.

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

Понимаю ход мысли, и в идеале всё действительно так: пошёл работать, и на практике всё понял.

Но вот проблема — как туда попасть? На джун-позиции огромная конкуренция, а требования уже давно не "научим всему с нуля", а "приходи готовым, с пет-проектами, пониманием процессов и опытом (пусть даже на стажировке)".

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

Хорошие курсы могут помочь. Плохие — создают ложные ожидания и ещё больше людей вешают в воронке "вроде учился, а взять никто не хочет".

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

Попробуйте смотреть шире: если статья написана ясно, по делу и без воды — это ещё не повод искать подвох. Иногда это просто результат опыта и желания делать контент с уважением к читателю.

Забавно, что вы сразу делаете выводы про "накрутку", вместо того чтобы допустить более простое объяснение: может, людям просто полезны мои ответы. Я стараюсь отвечать развернуто, по существу и без токсичности — может, попробуете так же? Глядишь, и ваши комментарии тоже начнут лайкать не меньше.

А про устройство платформы: комментарии тут ничего не дают, кроме обратной связи и смысла — если вы её не видите, это уже не мои проблемы.

Спасибо, крутое уточнение. Маркетинг работает не в одну сторону. Это не только курсы «навязывают» то, что им выгодно, но и рынок действительно сам просит: дайте всё и сразу, за один платеж и без усилий. Поэтому и рождается этот странный гибрид — «всё в одном», который вроде бы решает проблему, но по факту не даёт ни глубины, ни результата.

Я в статье больше фокусировался на стороне самих курсов, но да есть и вторая половина — это ожидания студентов. Типа "я лучше один раз отмучаюсь, зато потом сразу буду автотестером". Только вот «один раз» превращается в месяц-полтора абстрактной беготни по верхам, и толку никакого. Но это не отменяет сказанного в статье, что вместо того, чтобы это объяснить студентам и не толкать ерунду в виде "все везде и сразу", создатели таких курсов все равно продолжают этим заниматься. Лишь бы бабки заносили, а там уже не важно. Хотите и танцы с бубном плясать научим, главное деньги занесите.

Но как раз поэтому и написал статью — не чтобы всех поругать, а чтобы как минимум переориентировать мышление: сначала фундамент, потом специализация. А не "всё сразу, по акции, но поверхностно".

Спасибо за комментарий! Рад, что стиль изложения понравился.

Но, на мой взгляд, важно и не оставить читателя с ощущением "всё бесполезно".

Статья — не про «всё бесполезно». Именно поэтому в конце я и добавил блок "А как надо?", где как раз собрал конкретный чек-лист, как распознать адекватный курс без воды и маркетинга. Постарался сделать его максимально практичным — для новичков, которым и правда трудно сориентироваться.

12. А как надо?

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

1. Нет иллюзий и пустых обещаний

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

2. Фокус на знания, а не зарплату

Если вместо "200 тыщ через 3 месяца" вам обещают знания, конкретные навыки, работу с технологиями, практику, проекты, — это уже говорит о вменяемости. Вам не вешают лапшу, а просто говорят: «Вот чему вы научитесь. А как вы этим распорядитесь — ваш выбор».

3. Если обещают деньги — спрашивайте про ответственность

Любое упоминание зарплаты должно сразу вызывать вопрос: А кто за это в ответе? Что будет, если вы закончите курс и не устроитесь? Или устроитесь, но не на "от 150К"? Если в договоре прописана компенсация, возврат или ответственность — это уже что-то. Но если просто заявляют, что "все наши выпускники получают офферы" — это вода, это маркетинг, это развод. Все должно быть закреплено юридически — в противном случае они не имеют права давать такие обещания.

...

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

Тема сложная: за последние годы накопилось столько навязанного шума вокруг тестирования и входа в IT, что прежде чем дать конкретику, нужно немного расчистить завалы. Снять розовые очки, если так будет проще. Так что часть «воздуха» — это не просто критика, а попытка снять искажения, чтобы человек, приходящий в профессию, понимал, куда он идёт и на что его там ждет. Иначе он как мотылек, который летит на костер и даже не знает, что его там ждет.

Из личного опыта — жена (психолог по образованию) закончила полугодовые курсы по мануальному тестированию и вполне влилась в сферу. Второй год работает и недавно взяла ещё курс, по автоматизации. Каким-то вещам уже сама меня учит :)

Это как раз подтверждает мой месседж: если подходить без иллюзий и шарлатанства, то можно войти в профессию. Спокойно, осознанно и постепенно. Ключевое — не искать волшебства, а работать системно.

со всеми согласен

Согласен просто потому, что комментарии перекликаются с тем, что я уже описал в статье. Видимо, не зря писал. А на разговоры ради разговоров времени, правда, нет — стараюсь отвечать по сути.

Полностью согласен. Здесь на самом деле две большие проблемы, и я как раз из-за них и решил написать эту статью.

Во-первых, если подобные курсы до сих пор существуют и не закрылись, значит, маркетинг у них работает. Люди продолжают нести им деньги, покупаясь на красивые обещания, гарантию трудоустройства и атмосферу "вот-вот войдёшь в айти". Цель статьи — хотя бы немного повлиять на это. Пусть она поможет одному человеку не попасть на развод — уже не зря.

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

Конечно, статья — капля в море. Но если таких капель будет больше, если больше людей начнёт говорить вслух о проблеме — может, хоть немного изменится ситуация.

Спасибо за содержательный комментарий!

Насчёт бесплатных курсов — полностью согласен, действительно есть достойные. Я даже думал накидать парочку ссылок, но:

  • во-первых, таких курсов достаточно много, и боюсь, что кого-то случайно забуду, что вызовет вопросы;

  • во-вторых, большинство из них и так довольно на слуху — например, на Stepik, Moodle, freeCodeCamp, JetBrains Academy, metanit (особенно по C# и .NET, но и по python, например там тоже есть), Frontend Mentor, MDN Web Docs, LearnPython.org и других — полно качественного контента бесплатно, без регистрации и СМС

Что касается возврата денег, то да — идея с месячным сроком (а не 7 или 14 дней) и тем более с возвратом пропорционально пройденному — максимально здравая. Некоторые платформы вроде Stepik или Coursera это уже реализуют, вроде как.

Спасибо за комментарий! Делюсь. У меня был очень похожий кейс — человек, которого я менторил, тоже был далеко за 30 и уже работал ручным QA. Мы начали заниматься автоматизацией, когда он ещё оставался на своей текущей позиции.

Занимались примерно год по 2 - 3 часа в день, иногда по выходным и даже по праздникам — за это время он начал хоть как-то «разбирать» автотесты и понимать, что происходит. Затем он ещё около полугода продолжал работать ручным тестировщиком, но уже с пониманием автоматизации, после чего устроился джуном-автоматизатором.

Проработал около года на первой позиции, и затем перешёл на роль мидла — насколько знаю, до сих пор стабильно работает в этой роли.

Но важно понимать:

  • всё это происходило в течение нескольких лет — не «волшебный рост за 3 месяца»;

  • мы потом еще много раз с ним созванивались, но уже по его текущим задачам по автоматизации;

  • человек уже был внутри IT, а это всё же облегчает процесс;

  • и очень многое зависело от его внутренней мотивации: прогресс шёл только тогда, когда он сам прикладывал усилия между сессиями.

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

Благодарю за ироничный комментарий — всегда интересно наблюдать, как люди приходят не чтобы задать вопрос, обсудить идею или предложить улучшение, а просто чтобы вбросить сарказм ради самоутверждения. Особенно когда аргумент — «популярный инструмент» с 8 звёздами.

P.S. инструмент ui-coverage-tool был создан 15 апреля. Стартовые 8 звёзд за пару недель — неплохой темп

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

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

Спасибо за крутой и очень точный вопрос!

В идеальном мире тесты стабильны и проходят, а если начинают падать на ранних шагах, то первым приоритетом становится починить их, а не анализировать покрытие. Но ваш поинт абсолютно логичен: при падении ранних шагов часть покрытия может "исчезать" из визуального отчета, что искажает картину.

Что касается вашей идеи — да, теоретически и технически можно собрать покрытие даже без запуска самих тестов. Библиотека никак не ограничена в этом плане: если вы можете заранее получить локаторы + действия (например, как metadata из тестов), то можно отрисовать покрытие поверх сайта даже в статике — просто подкинуть это всё трекеру.

Фреймворк-специфичная реализация (как собрать сценарии без исполнения) — это уже вопрос к конкретному стеку. Но сама возможность — абсолютно реальна и интересна. Возможно, вы навели на ещё одно направление использования инструмента. Спасибо! Подумаю, мб какой пример накидать, как это можно сделать.

По поводу нейминга и ссылок — полностью согласен, и на самом деле это уже возможно: можно передавать любые названия и URL через tracker.start_scenario(name=..., url=...). Просто в примере использован request.node.name (который возвращает имя функции), чтобы не усложнять.

Насчёт "маркетингового булшита" — ну, хочется, чтобы полезное звучало громко. Рад, что хотя бы в этой статье градус был комфортный.

Спасибо, что следите — ценю, даже когда комментарии с "перцем".

Благодарю за столь эмоциональный и многословный комментарий. Видно, что мой скромный инструмент задел вас за живое, и это уже успех.

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

Теперь по сути:

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

  • Касательно старых конференций, no-name решений и 19 минут на ознакомление: Удивительно, сколько презрения можно вложить в слова о событиях, о которых вы сами не так много знаете. К слову я лично был на этой конференции еще несколько лет назад и был в курсе про данное решение еще до того, как вы про него узнали. Не стесняйтесь, признание — первый шаг к принятию.

  • Ваше объяснение разницы между документацией, тест-кейсами и фактическим тестированием трогает своей наивностью. Вероятно, вы и вправду считаете, что TMS и красивые таблички спасают от багов в продакшене. Желаю удачи в этой вере.

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

  • По поводу отсутствия ассертов: Инструмент и не претендует на роль экстрасенса. Я не строю иллюзий, что могу угадать мысли тестировщика через отслеживание кликов. В отличие от некоторых, кто, судя по вашему тону, всерьез считает, что TMS отражает реальность тестирования.

В завершение хочу сказать: Если в будущем вам вновь захочется выплеснуть поток токсичности и обид за жизнь, не стесняйтесь — я рад видеть, что мой инструмент вызывает живые эмоции. А значит, он работает.

P.S.: Вместо скриншот-тестирования, как вы опасались, я, пожалуй, займусь еще одним полезным делом — выведу "coverage-психотерапию" в отдельную ветку разработки. Успех будет гарантирован — аудитория уже есть.

Information

Rating
222-nd
Registered
Activity