Авто-тестирование web

для бизнеса и профита

Интро

Юра

  • ойтишник с 10ти лет
  • строил домонеты до 2005
  • работал в куче секторов от рекламы до банков
  • сейчас больше в менеджмент, продажи и венчур

modus operandi

  • приносить пользу или GTFO
  • делать больше из меньшего

Что мы знаем про тестирование?

  • если функционал небольшой и редко меняется - можно руками
  • чем быстрее выявлена бага - тем меньше времени её фиксить (CI)
  • скорость разработки прямо пропорциональна количеству вносимых багов

О чём мой рассказ

  • не про энтерпрайз
  • не для авто-тестировщиков
  • про эффективный иструмент управления разработкой и автоматизации

Сеттинг

  • внутренний коробочный проект для дилеров фармы и агротехники
  • функционал быстро растёт
  • прогеры ломают старое

Решение

  • делаю отдел QA
  • приделываю к репе автодеплой
  • собираю на коленке базовый функционал тест-раннера
  • даю тест-раннер джуну

Результат

  • за 1.5-2 месяца покрывает весь функционал
  • прогеры исправили всё поломаное и перестали отвлекаться

АТирование в наши дни

  • оверинжиниринг
  • микроменеджмент
  • рутина

Оверинжиниринг

  • АТы пишутся на ЯП (js, java, python)
  • от АТовщиков требуют знания ЯП (высокие косты)
  • АТы переусложнены и непонятны
  • изменения мучительны (долгий TTM)

микроменеджмент

  • привязка к реализации
  • необходимость договариваться с разработкой
  • меняется реализация - надо менять автотесты

рутина

  • делаем одно и тоже долго, и очень долго

Behavior Driven Development (BDD)

разработка от user-stories

Структура

BDD:

  1. Feature (бизнес-функция)
  2. Scenario (user-stories)
  3. Action (атомарные действия)
  4. команды тестовой среды

Язык огурца

Feature: Payment
  As a customer
  I want to be able to make a payment
  So that I can complete my purchase
Scenario: Successful Payment
    Given I have added items to my cart
    And I am on the checkout page
    When I enter my valid payment information
    And I click on the "Submit Payment" button
    Then I should see a confirmation page
    And my order should be processed successfully

либа

@Given /^go to "([^"]*)"$/, (url) ->
    browser.get url
@Given /^logged in as "([^"]*)" with password "([^"]*)"$/,
    (user, pass) ->
      $("#loginform-username").sendKeys user
      $("#loginform-password").sendKeys pass
      $('[type="submit"]').click()
@Given /^open menu$/, (item) ->
    $('[data-action="toggleMenu"]').click()
    browser.driver.sleep(1000)
@Given "write $msg", (msg) ->
    console.log 'writing console message', msg
    browser.driver.sleep(1000)

workflow

стандартные ошибки

  • АТер совмещает инженера тестирования и автоматизатора
  • часто ещё и системного аналитика
  • делает как ему проще
  • уровни начинают перемешиваться

примеры ошибок

Сценарий съезжает в действия:

  • действия становятся громоздкими
  • нужно писать много кода

Фичи съезжают в сценарии:

  • сценарии становятся запутаными
  • теряется их описательная ценность
  • фичи дублируются

Экономика

  • аналитику может делать кто угодно
  • инженером тестирования может быть каждый второй джун
  • автоматизатор аутсорсится (начальную сборку и недостающие действия)

Другие применения АТов

  • мониторинг
  • сбор данных
  • интеграция

Профит

  • быстро
  • дешево
  • надёжно
  • универсально
  • прозрачно для бизнеса

???

вопросы

Контакты

  • телега/вазап: +996 555 755 925 (Юра)
  • авто-тестирование для бизнеса и профита
  • также лайфхаки и здравый смысл