LINUX.ORG.RU

Вышел Meta Test 2.0

 , , , ,


0

1

Meta Test — это российская программная платформа для создания и запуска автоматизированных тестов веб-приложений людьми без навыков программирования. В основе платформы лежит концепция языково-ориентированного программирования. Для описания тестов используется декларативный предметно-ориентированный язык, что позволяет избавится от создания тестового «фреймворка» и сложных для понимания концепций вроде Page Object Model. Но тем не менее поддерживается исполнения в тестах обычного кода на языке python, что позволяет гибко работать с источниками тестовых данных, отправлять API запросы и даже создавать новые команды для встроенного языка.

Основные изменения:

  • Расширения для поддержки браузеров chromium, edge и safari были перенесены из дистрибутива в репозиторий для расширений.
  • Улучшена система отчётов. Доработан отчёт для allure.
  • В механизм расширений была добавлена поддержка команд.
  • Изменено поведение большинства команд, некоторые команды были переименованы.
  • Добавлены команды для поддержки js-alerts.
  • Доработан раннер тестов. Добавлена поддержка статистики, что позволяет автоматически ранжировать тесты по времени запуска и запускать только упавшие тесты.
  • Добавлена начальная поддержка HTTP запросов. С их помощью можно напрямую обращаться к веб-серверу, минуя взаимодействия с браузером.

Этот механизм в первую очередь предназначен для дополнения браузерного тестирования, а не для создания самостоятельных API-тестов.

Например, тест, приведённый ниже, переходит на URL http://the-internet.herokuapp.com/download и получает все ссылки, находящиеся в контейнере с классом example. Затем для каждой ссылки выполняется HEAD запрос, код статуса которого должен быть равным 200.

from metatest import *

TEST["Проверка доступности ссылок для скачивание файлов"](
    URL("http://the-internet.herokuapp.com/download")
    
    , "Проверяем доступность всех URL файлов"
    , HEAD[ALL(".example > a", "attr::href")](
        STATUS == STATUS.OK
        , timeout=25
))

>>> Meta Test

★★★★★

Проверено: CrX ()
Последнее исправление: demidrol (всего исправлений: 3)
Ответ на: комментарий от Rodegast

Я автоматизацией тестирования занимаюсь почти 15 лет. Для меня DSL это то, что не зависит от инструмента/реализации, типичные примеры это TEX, SQL, HTML. Где ты в сабже разглядел то же самое, для меня загадка.

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

А вишенка на торте это функциональная ущербность даже по сравнению с открытыми и известными фреймворками. Ты же сам современные приложения наверное не на делфи будешь писать?

Lordwind ★★★★★
()
Ответ на: комментарий от Lordwind

Я автоматизацией тестирования занимаюсь почти 15 лет

Я тебе даже сочувствую.

Для меня DSL это то, что не зависит от инструмента/реализации, типичные примеры это TEX, SQL, HTML.

То что ты написал это внешние DSL, а сабж использует внутренний DSL. У каждого из них есть свои особенности и преимущества, но об этом ты в гугле почитаешь.

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

Ну хорошо, расскажи в чём проявляется эта ущербность по сравнению например с selenide :D

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

Основная идея сабжа в том что он предоставляет универсальный DSL

сабж использует внутренний DSL

Во, пошли отмазки.

Я тебе даже сочувствую

Ну хорошо, расскажи

Могу начать с того что такое ЧСВ, но об этом ты в гугле почитаешь)

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)
Ответ на: комментарий от Lordwind

Во, пошли отмазки.

В чём «отмазки»? Эти фразы друг другу не противоречат.

Могу начать с того что такое ЧСВ

Тут ЧСВ у всех есть. На ЛОР-е без него не выжить.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

Открываешь Capybara на github там в описании есть всё что нужно для работы с ней.

AleksK ★★★★
()
Ответ на: комментарий от Rodegast

ты столкнёшься с теми же рисками

Ты так упорно изображаешь идиота что я начинаю подозревать что тебе за это платят. С какого перепугу «теми же» если код selenide открыт и на его поддержку без проблем можно нанять хоть LLM, хоть мясных - в отличии от проприетарного убожества?

zabbal ★★★☆☆
()
Последнее исправление: zabbal (всего исправлений: 1)
Ответ на: комментарий от zabbal

код selenide открыт и на его поддержку без проблем можно нанять хоть LLM, хоть мясных

Вот только бизнес решает свои задачи и тратить средства на поддержку того что и так работает он не будет.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

тратить средства на поддержку того что и так работает он не будет.

Пока работает. Какая гарантия, что в купленном метатесте никогда не будет ошибок?

А потом на какое-то описание теста падает ошибка или неправильно отрабатывает, а разработчик к этому времени закрылся и занимается чем-то совсем другим. И у этого «бизнеса» выбор из двух плохих решений: перейти на что-то ещё и переписать все тесты под другой синтаксис или просто ввести внутреннюю разметку «минного поля» (какие комбинации конструкций не использовать, потому что не работают).

А потом выходит http3 и надо писать прокси для того, чтобы устаревший метатест мог читать страницы по новому протоколу. А потом выходит какое-нибудь расширение HTML и приходится окончательно выкинуть устаревшее, так как обновить его нельзя. Видел такое многократно с программами, написанными на Delphi в 90-е.

monk ★★★★★
()
Ответ на: комментарий от monk

Какая гарантия, что в купленном метатесте никогда не будет ошибок?

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

а разработчик к этому времени закрылся и занимается чем-то совсем другим

С СПО ты получишь те же самые риски. Мы это уже обсуждали.

А потом выходит http3 ... А потом выходит какое-нибудь расширение HTML ...

Научись решать проблемы по мере их поступления.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

бизнес решает свои задачи

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

zabbal ★★★☆☆
()
Ответ на: комментарий от zabbal

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

А вот нет нормальных аналогов :D Да тут сказали про тесты на capybara напоминают Meta Test, но доверия она как то не вызывает.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

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

Только если ты ещё есть и продолжаешь поддерживать Метатест, а не вышел на пенсию, например.

А в случае с чем-то другим я могу искать не лично тебя, а любого программиста на питоне.

С СПО ты получишь те же самые риски. Мы это уже обсуждали.

Не те же. Я сопровождал медицинский диагностический центр, у которого был склад написанный на открытом решении (на базе Informix-4GL/LaTex/uucp/Redhat Linux) и регистратура с учётом услуг на закрытом решении. Оба разработчика несколько лет назад прекратили поддержку. В итоге с 4GL удалось разобраться, актуализировать печатные формы и модифицировать расчёт себестоимости. А в регистратуре пришлось делать альтернативное рабочее место (прикрутил MS Excel к СУБД).

Научись решать проблемы по мере их поступления.

Угу. Бухай/колись, живи быстро, проблемы ведь будут не сегодня, решай по мере их поступления, когда уже ломка и печень отвалилась.

Выбирать закрытое решение можно либо когда оно безальтернативно для какой-либо задачи (типа решений SAP), либо когда от него в любой момент можно отказаться (драйвера железа, игры, читалки открытых форматов, …).

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Да тут сказали про тесты на capybara напоминают Meta Test, но доверия она как то не вызывает.

Со стороны внешнего пользователя capybara и Meta Test одинаково не вызывают доверия. Объективно надо или показывать, какой нужный пользователю тест из Meta Test невозможно или гораздо более сложно описать на capybara, или утверждение голословно.

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Мета тест авторизацию по OAuth2 поддерживает?

monk ★★★★★
()
Ответ на: комментарий от monk

Выбирать закрытое решение можно либо когда оно безальтернативно для какой-либо задачи

Вот у тебя ручной тестировщик. Сможешь назвать открытое решение которое при минимальном уровне обучения позволит ему писать автоматизированные тесты?

утверждение голословно.

Это не утверждение, а моё ощущение. Что бы что то утверждать нужно препарировать эту капибару, у меня на это нет ни времени ни желания.

Мета тест авторизацию по OAuth2 поддерживает?

Мета тест поддерживает все что поддерживает python.

Rodegast ★★★★★
() автор топика
Ответ на: комментарий от Rodegast

Сможешь назвать открытое решение которое при минимальном уровне обучения позволит ему писать автоматизированные тесты?

Вот это, например:

  Capybara.current_driver = :mechanize # OAuth
  # Sign in to Twitter
  visit 'http://twitter.com/sessions/new'
  fill_in "Username or email", :with => 'my_app_test_account'
  fill_in "Password", :with => 'my_app_test_account_password'
  click_button 'Sign In'
  unless page.has_content?('Sign out')
    raise "Sign in failed! Manually sign in to reset the captcha"
  end

  # Sign in to app
  page.driver.get '/auth/twitter'
  page.driver.follow_redirect!

  if page.driver.response.redirect?
    page.driver.follow_redirect!
  else
    # Authorize the app on twitter
    click_button "Allow"
    click_link 'click here'
  end

  page.driver.follow_redirect!
  page.should have_content('Sign out')

Кстати, аналогичный пример на Мете как будет? Я у Data не вижу, куда можно текст поля ввести.

monk ★★★★★
()
Ответ на: комментарий от Rodegast

Мета тест поддерживает все что поддерживает python.

И как сделать, чтобы команда URL метатеста использовала OAuth1Session? Без него так:

from requests_oauthlib import OAuth1Session
twitter = OAuth1Session('client_key',
                            client_secret='client_secret',
                            resource_owner_key='resource_owner_key',
                            resource_owner_secret='resource_owner_secret')
url = 'https://api.twitter.com/1/account/settings.json'
r = twitter.get(url)

но полученный r нельзя запихнуть в TEST метатеста. Или можно?

monk ★★★★★
()
Ответ на: комментарий от monk

Вот это, например

Вот я смотрю на твой пример и кроме visit 'http://twitter.com/sessions/new' ничего не понимаю

И как сделать, чтобы команда URL метатеста использовала OAuth1Session?

Команда URL для этого не предназначена. Тебе нужно получить токен через OAuth1Session, а потом подсовывать в заголовки. Будет типа такого:


oauth = OAuth1Session(...)
token = oauth.fetch_request_token("...")

class AuthTrigger(BaseTrigger):
    def setup_test(self, browser, test_id, test_scope, test_args):
        # Авторизация пользователя
        return AUTH_BEARER(token)

CONFIG.TRIGGER = AuthTrigger

Rodegast ★★★★★
() автор топика
Последнее исправление: Rodegast (всего исправлений: 1)
Ответ на: комментарий от Rodegast

но доверия она как то не вызывает

Бгыы… заметьте, это говорит тип, закрысивший баблишко на оплату баннера и протащивший рекламу под видом новости. Доверия полные штаны, дааа :-D :-D :-D

zabbal ★★★☆☆
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.