Авто-тестирование web
для бизнеса и профита
Интро
Юра
- ойтишник с 10ти лет
- строил домонеты до 2005
- работал в куче секторов от рекламы до банков
- сейчас больше в менеджмент, продажи и венчур
modus operandi
- приносить пользу или GTFO
- делать больше из меньшего
Что мы знаем про тестирование?
- если функционал небольшой и редко меняется - можно руками
- чем быстрее выявлена бага - тем меньше времени её фиксить (CI)
- скорость разработки прямо пропорциональна количеству вносимых багов
О чём мой рассказ
- не про энтерпрайз
- не для авто-тестировщиков
- про эффективный иструмент управления разработкой и автоматизации
Сеттинг
- внутренний коробочный проект для дилеров фармы и агротехники
- функционал быстро растёт
- прогеры ломают старое
Решение
- делаю отдел QA
- приделываю к репе автодеплой
- собираю на коленке базовый функционал тест-раннера
- даю тест-раннер джуну
Результат
- за 1.5-2 месяца покрывает весь функционал
- прогеры исправили всё поломаное и перестали отвлекаться
АТирование в наши дни
- оверинжиниринг
- микроменеджмент
- рутина
Оверинжиниринг
- АТы пишутся на ЯП (js, java, python)
- от АТовщиков требуют знания ЯП (высокие косты)
- АТы переусложнены и непонятны
- изменения мучительны (долгий TTM)
микроменеджмент
- привязка к реализации
- необходимость договариваться с разработкой
- меняется реализация - надо менять автотесты
рутина
- делаем одно и тоже долго, и очень долго
Behavior Driven Development (BDD)
разработка от user-stories
Структура
BDD:
- Feature (бизнес-функция)
- Scenario (user-stories)
- Action (атомарные действия)
- команды тестовой среды
Язык огурца
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 (Юра)
- авто-тестирование для бизнеса и профита
- также лайфхаки и здравый смысл
