• Что такое TDD и для чего применяется?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я формулирую так "В TDD ты сначала спрашиваешь себя как я буду это проверять, а потом приступаешь к работе". Должен сказать, этот вопрос настолько очевидный и простой, что странно что разработчики часто не задаются им. Я как тестировщик знаю, что ничего не знаю и мне легко думать из этой перспективы. Я не уверен ни в чем, поэтому проверять гипотезу для меня - норма. Я не знаю как работает мой код, я только могу предполагать. Написав тест, ты явно формулируешь свои ожидания. Это мыслительный процесс. Это часть инженерной работы.

    Вы когда холодильник покупаете тоже сперва мерки берете, заранее, приходите с ними в магазин, смотрите ширину двери, в какую сторону она открывается, чтобы она открывалась полностью. Чтобы шнура хватало до розетки. Считаете поворотные углы, чтобы вы могли его пронести по лестнице и через дверные проемы, и развернуть при установке.
    Многие так не делают - просто покупают и с помощью "лома и какой-то матери" впяливают это себе в кухню.
    Кажется дебильно? Так порой делается разработка. Фигачим, а там посмотрим. Мы же мастера на все руки, для нас нет непосильных задач. Зачем думать - мы же опытные, не первый холодильник авось устанавливаем.

    Сначала думай потом делай. Семь раз отмерь - один раз отрежь. Это все об этом.
    Ответ написан
  • Работа тестировщиком не дает никаких полезных навыков в плане дальнейшего трудоустройства разрабочиком?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если вы будете заниматься автоматизированным тестированием вам волей-неволей придется понимать устройство приложения. Хотя бы очень поверхностно. Чем лучше автоматизатор тем лучше его понимание устройства приложения. И тут все зависит от вас, станете вы интересоваться устройством приложения глубже или нет. Требовать от вас этого никто не станет. Будете интересоваться - через какое-то время сможете стать разработчиком.

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

    Автоматизатор должен понимать язык на котором он пишет. Он также может понимать как эти тесты выполняются, он может понимать шаблоны проектирования. Он может и должен писать чистый, хорошо поддерживаемый код. Все это ему может в работе понадобиться. Но станет ли это билетом в разработку? Нет, вовсе не обязательно.

    У меня сложилось впечатление, что вы хотите через тестирование попасть в разработку. Я бы не стал так делать. Так вы ни хорошим тестировщиком не станете, ни хорошим разработчиком. Я сознательно отказался от работы разработчиком, и остался автоматизатором. Потому что знаю как они работают, и мне иногда грустно. Стать еще одним производителем багов - нет спасибо. А у меня уникальные навыки. Я решаю интересные задачи. Я ковыряюсь в приложении, чтобы понять где к нему прицепиться, чтобы получить нужную информацию. Нормальные интерфейсы, к сожалению, порой не предусмотрены. Я постоянно тусуюсь с разработчиками. Мы обсуждаем баги и я иногда могу подсказать подход к их решению, могу помочь отфутболить баг, или если баг не наш, перенаправить его с нормальным комментарием. Могу зайти в бюро к разработчику и спросить почему баг еще не пофиксили, причем именно техническую причину, и понять ее. Могу прочитать лекцию разработчикам о том, что важно писать внятные коммит-мессаджи. Знаю как пользоваться Джирой. Например трансформировать баг в таск и наоборот. Знаю наши информационные системы. Могу подсказать как с помощью нашего интрумента тестирования продебажить трудно воспроизводимое состояние. Могу читать стектрейс и лог иприложения, и понимая как работает наша программа, обьяснить разработчику, что проблема наша, а не во фреймворке или где-то еще.

    Просто я тянусь к знаниям и не считаю себя умным и "все итак знающим".

    Можно конечно все время сидеть в бюро и добавлять n+1 тест в тестовый набор у уходить в 17 часов домой. От вас зависит.

    И по з/п я получаю больше чем некоторые наши разработчики, потому что навыки уникальные, кроме меня никто не хочет этим заниматься, и не знает как. Другое дело, что если я поменяю место работы то в сухом остатке у меня будет только опыт внедрения автоматизации и язык программирования. Но в разработчики я все равно не пойду. Для автоматизатора всегда открыт весь мир технологий, а для разработчика только те, на которых пишется программа.
    Ответ написан
  • Что лучше: унифицированный или уникальный дизайн?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Насчет однообразного дизайна - у эппл и гугла есть дизайн-гайдлайны. Следаовать этим гайдлайнам - хорошо.
    Twitch в браузере, на телевизоре, на мобильном телефоне и на десктопе смотрятся узнаваемо. Как-то они это делают.
    WinAmp - имеет "уникальный" дизайн не соответствующий стилю внешней системы - все пользуются.
    Ответ написан
  • Как с помощью Cypress отследить запрос на сервер ??

    lxsmkv
    @lxsmkv
    Test automation engineer
    В официальной документации вроде описано. Внизу есть и ссылка на пример реализации.

    И также в этом гайде официальной документации описаны принципы тестирования с использованием их фреймворка.
    Ответ написан
  • Как смоделировать вселенную?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Я вам просто для рефлексии ваш вопрос прокомментирую. Дело в том, что для моделирования сложных систем, нужно сперва понять, что из себя представляют эти системы. Moжете почитать про World3 - компьютерная модель
    для рассчета макро-показателей мира.
    Модель никогда не будет идеальной. Поэтому нужно точно знать, что мы хотим смоделировать. И какие ограничения это накладывает.

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

    Это агентное моделирование. Можете попробовать NetLogo, например.

    Как лучше сделать "сознание" бота, чтобы он был самообучающимся
    Чему он должен будет обучаться? Создать простейший механизм обучения можно по принципу спичечных коробков Дональда Митчи

    но и в то-же время организованным?
    что значит быть "организованным"?

    Какую информацию о окружающей среде бот должен воспринимать
    А он должен? Для чего это нужно?

    Как организовать семантику языка жителей
    А они должны общаться? Для чего им это нужно?

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

    Я хочу чтобы жители обсуждали свои проблемы, решали их
    Это предложение должно было стоять выше, поскольку описывает условие. Почему у жителей должны быть проблемы? Какие проблемы? Что значит решить проблему?

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

    Как видите, чтобы создать модель чего-то нужно сначала понять что-то.

    И еще читайте про имитационное моделирование
    Ответ написан
  • Можно ли описывать негативные тесты при помощи Gherkin?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Негативные тесты это проверка на то, что приложение справляется с непредусмотренными ситуациями ожидаемым образом.

    Позитивный тест
    Дано: первое слагаемое равно 1
    и дано: второе слагаемое равно 3
    если мы производим операцию сложения данных чисел
    тогдарезультат будет равен 4

    Вот несколько примеров негативных тестов

    Дано: первое слагаемое равно 1.0
    и дано: второе слагаемое равно 3
    если: мы производим операцию сложения данных чисел
    тогда: будет выведена ошибка несоответствия числовых типов

    Дано: мета-файл базы данных отстутствует в папке конфигурации
    если: мы запускаем базу данных
    тогда: в логе будет записана ошибка о недостающем файле.
    и тогда: в консоли будет выведена ошибка о недостающем файле.
    если: мы нажмем любую клавишу в консоли
    тогда: приложение будет завершено.

    В общей форме это выглядит так:
    Дано: какая-то фигня
    если: я делаю какую-то дичь
    и если: я делаю какую-то ерунду
    тогда: приложение делает так
    и тогда: приложение делает эдак.

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

    lxsmkv
    @lxsmkv
    Test automation engineer
    В принципе все правильно. Берете и делаете. Серебрянной пули нет.

    Особенно порадовало, что "все занимаются тестированием"- это правильно. Лишь бы это не было "все - значит никто". И следите за тем, чтобы тестирование давало результат - либо тикет в системе либо фикс. Если баги находят, но просто говорят о них на кухне - это не тестирование. Если баг фиксится сразу, это не значит что коммит-сообщение можно ляпнуть "fixed some strange bug" - он должен содержать описание сценария в котором он происходит и как он влияет на пользователя.

    Улучшайте коммит-сообщения. Так чтобы из них можно было собрать патчноут и красиво показать пользователю. А не куча невнятного "внутряка". Формулируйте с позиции пользы, это заставит разработчиков немного больше гордиться проделанной работой, а следовательно добавит им мотивации. Для примера посмотрите как пишут патчноуты передовые представители игровой индустрии.

    По автоматизации .. подводные камни такие:
    - если автотестов много - их долго выполнять. Начните с небольшого количества 20-50. На них вы обкатаете внедрение и процесс. Не считайте никакие ROI - это бред. Чем считать ROI лучше написать еще один полезный тест.
    - архитектуру тестов старайтесь организовать так, чтобы работу по их написанию можно было распараллелить. Например если у Вас Page Object - один может писать компоненты из которых другой может строить сценарии.
    - ваш сервис сильно зависит от доступности источников данных - проверяйте доступность источников регулярно, особенно если эти данные вы получаете не по API, а выковыриваете парсером.
    - сделать тестовую базу данных - правильно. Автоматизируйте ее свертывание-развертывание через контейнеры.
    - по приоритетам автоматизации - точно так же - по "абстрактной" значимости. Хороший источник для идей - багтрекер. Кластеризуйте ошибки по типам и делайте выводы.
    - не делайте автоматизацию ради автоматизации - в первую очередь чините продукт, потом тесты.
    - не усложняйте тесты ради того чтобы они справлялись с более сложными условиями, упрощайте условия.
    - автотесты будут сыпаться по непонятным причинам. Делайте как можно более полезное логгирование. Если тесты выполняются в произвольном порядке - это тоже может быть одной из причин. Любой рандом в тестировании - зло. Учитывайте это при наполнении тестовой базы данных. Желательно, чтобы тестовая база всегда содержала одинаковые данные. Смотря что у Вас за база. Если это только пользователи это одно, а если у вас там хранятся аггрегированные данные, то нужно время от времени пересобирать тестовую базу из свежих источников и проверять работу тестировочных скриптов с ней.
    - автоматизацию тестирования можно применять не только для тестирования конечного продукта, можно тестировать миграции схемы базы данных, восстановление базы из бекапа и прочее.

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

    Как добиться независимости в тестах (phpunit)?
    Правильное тестирование Javascript?
    Как систематически подойти к тестированию в малой компании разработчиков?
    С чего начать изучение на должность QA автоматизатора?
    Как создать отдел тестирования?
    Какие шаги тестирования сайта?

    Читайте:
    "Lessons Learned in Software Testing" (Kaner, Bach, Pettichord)
    "Experiences of Test Automation: Case Studies of Software Test Automation" (Graham, Fewster)
    и вот эту вики: TestAutomationPatterns (Кстати, ее инициатор и редактор та же Dorothy Graham. Есть даже пару записей ее лекций на ютубе - советую глянуть)
    В ней прям шаблоны. Проблема - решение. Бесценная вещь. Мне в свое время очень помогло, чтобы понять "что не так" и как это лечить.
    Ответ написан
  • Как показать "черный" экран поверх отрытого приложения?

    lxsmkv
    @lxsmkv
    Test automation engineer
    В Libreoffice Impress нажатие кнопки B или W включает черный или белый экран пока не будет нажата кнопка следующего слайда (см. тут).
    У него также есть мобильное приложение для удаленного управления презентацией
    Ответ написан
  • Интеграция Windows и WSL?

    lxsmkv
    @lxsmkv
    Test automation engineer
    - Тут написано про "interop" WSL и Винды
    - Файлы Винды в WSL находятся в /mnt/[drive-letter]
    - Как найти файлы WSL в Винде написано тут и тут
    - Нормальную возможность открывать WSL файлы в Explorer'е скоро добавят в Винду
    Ответ написан
  • Как убрать иконку поиска из dock ubuntu?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Смена позиции для Dash Home кнопки не предусмотрена (тыц, тыц)
    Ответ написан
  • BeautifulSoup4 сжирает оперативную память, что делать?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Ну вот тут говорят page.decompose() разрушает обьект страницы.
    Утечка памяти это когда программа никакой полезной работы не производит, а потребление памяти растет.
    Тут я думаю нет утечки, а просто каждый цикл добавляет в память новые данные. И они не удаляются.
    Ответ написан
  • Как найти тест, не подчищающий за собой?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Можно в процедуру удаления фикстуры вставить специальное лог сообщение и искать в логе. Если сообщение должно выводиться перед окончанием теста, то фильтровать на окончание теста плюс сколько-то строк сверху. LogЕxpert такое умеет делать. Или просканировать весь лог скриптом, и определить для каждого теста, было ли выведено специальное сообщение.
    Ответ написан
  • Создание многопользовательской RTS (Real Time Strategy)?

    lxsmkv
    @lxsmkv
    Test automation engineer
    гляньте вот этот туториал на ютубе ("Let' s make an MMO in UE4" by SabreDartStudios)
    Что касается "пиления" своего движка - не думаю что это правильный ход. Из того что я слышал, люди наоборот сваливают со своих движков на Unity или UE. Как, например, Urban Terror, был модом под третий Квейк, сейчас портируется на UE
    Ответ написан
  • Циклы. While, do while, for, чем отличаются?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Нам в школе так обьяснили:
    while - в зависимости от условия тело цикла может быть не выполнено ни разу.
    do while - тело цикла будет выполнено минимум один раз.

    ну а for - будет выполняется для выбраных элементов последовательности (какие это будут элементы - указывается в условии). Тут можно задать периодичность, например, для каждого второго элемента.
    Ответ написан
  • С чего начинать собирать свой игровой компьютер ???

    lxsmkv
    @lxsmkv
    Test automation engineer
    С чтения рекомендуемых системных требований к тем играм которые собираетесь игратъ.
    Ответ написан
  • На linux есть вирусы?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Если вы собираетесь переходить на линукс, то в первую очередь надно научиться пользоваться поисковиком. Вы удивитесь сколько материала найдете задав эти четыре слова в поисковик. Приведу только пару из них:
    "Вирусы для *n*x существуют!" (habr.com)
    "Про вирусы для Linux" (ubuntu-repository.blogspot.com)

    Говоря коротко: Вирусы на linux есть, но подхватить какой-либо из них вероятность меньше.
    Ответ написан
  • Если я хорошо освою C, я смогу написать свою ОС под свою хотелку?

    lxsmkv
    @lxsmkv
    Test automation engineer
    Для саботажа любой системы, цифровой или реальной, нужно доскональное понимание устройства этой системы. А язык программирования - просто инструмент для создания исполняемого кода в целевой системе.
    Посмотрите фильм "11 друзей Оушена" с какой точностью они изучали систему на которую собирались совершить нападение, и сколько разных навыков им для этого потребовалось.
    Ответ написан