Русский
Русский
English
Статистика
Реклама

Из песочницы Состоялся релиз проекта для запуска приемочных тестов

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


Введение


AT2K проект с открытым исходным кодом, написанный на Golang (в качестве языка бекенда) и Angular (для клиентской части). Основная идея и цель в том, чтобы позволить пользователям (программистам, QA инженерам и, возможно, менеджерам) писать и запускать тесты на языке, близком к их предметной области.


Пара примеров


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


Итак, реализация сервиса (node.js):


import express from 'express';import uuid4 from 'uuid4';const app = express();const users = express.Router();const port = process.env.PORT || 4444;let usersRepository = [];app.use(express.json());app.use('/api/v1/user', users);function resetRepository() {  usersRepository = [    {hash: uuid4(), name: 'John'},    {hash: uuid4(), name: 'Nick'}  ];}users.get('/:hash', (req, res) => {  const user = usersRepository.find(u => u.hash === req.params.hash);  if (user) {    res.status(200).send({      status: 'ok',      data: user    });  } else {    res.status(200).send({      status: 'error',      data: 'user-not-found'    });  }});users.post('/', (req, res) => {  const { name } = req.body;  const hash = uuid4();  usersRepository.push({    hash, name  });  res.status(200).send({status: 'ok', hash});});app.listen(port, () => {  resetRepository();  console.log(`Stub AT2K is available on localhost:${port}`);});

Без лишних слов, вот пара тестов:


BEGIN    createUserResponse = CREATE USER {"name": "Joe"}    ASSERT createUserResponse.status EQUALS ok    userResponse = GET USER ${createUserResponse.hash}    ASSERT userResponse.status EQUALS ok    ASSERT userResponse.data.name EQUALS Joe    ASSERT userResponse.data.hash EQUALS ${createUserResponse.hash}ENDBEGIN    userResponse = GET USER not-exists-hash    ASSERT userResponse.status EQUALS error    ASSERT userResponse.data EQUALS user-not-foundEND

Как видите, все довольно просто.


С чего начать


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


Сразу после регистрации можно заходить в админку на странице входа.


Видим довольно непритязательный интерфейс, который с порога сообщает нам, что мы
не создали каких-то там объектов (разберемся позже):


image


Для того чтобы понять, что делать дальше, давайте еще раз посмотрим на пример
теста, а именно на команду:


BEGIN  createUserResponse = CREATE USER {"name": "Joe"}END

Здесь


  • createUserResponse переменная, куда будет записан результат выполнения
    команды
  • CREATE команда
  • USER объект, для которого выполняется команда
  • {"name": "Joe"} аргументы

Так вот, веб-версия проекта служит двум основным целям


  1. Создать и настроить объекты и команды
  2. Запустить тесты, загрузив файл с ними

Создаем объекты и команды для них


Для начала, нам нужно создать объект. Для этого нажимаем на вкладку Create object и попадаем сюда:


image


Нужно ввести имя нашего объекта. Для тестов пойдет USER.


Вводим, нажимаем Create, объект создался:


image


Чтобы без лишних ошибок запустить наши простенькие тесты, нужно создать 2 команды GET и CREATE. Начнем с GET. Нажимаем на иконку редактирования справа от названия команды (см. скрин выше) и попадаем в меню редактирования объекта:


image


Нажимаем на Add command и заполняем все поля, как на скрине ниже:


image


Нажимаем Create внизу страницы (заголовки и куки пока не трогаем, т.к. не нужны).


Аналогично создаем команду CREATE:


image


По результату, в меню редактирования объекта получаем такую картину:


image


image


Почти все готово для запуска тестов.


Запускаем веб-сервис и настраиваем ссылки для запросов


Сейчас нам нужно предоставить доступ бекенду проекта до нашего веб-сервиса. Чтобы не заморачиваться с деплоем, можно просто воспользоваться ngrok.


Для тестов я использую node.js:


mkdir at2k-stub && cd at2k-stubnpm init -ynpm i express uuid4touch index.js

Скопируйте код из введения статьи в файл index.js и запустите командой


node .

Далее воспользуемся ngrok, чтобы сделать наш веб-сервис доступным извне:


ngrok http 4444

Получится ссылка вида http://56dd9be41097.ngrok.io


Далее, нужно обновить наши команды, чтобы они использовали ссылку, полученную выше. Чтобы не редактировать каждую команду по отдельности, нажмите на пункт меню General settings и выберите Base URLs. Введите в поле Base URL ссылку http://56dd9be41097.ngrok.io и нажмите на кнопку Choose all:


image


Нажимаем Update и все готово.


Запуск тестов


Итак, до запуска тестов нас отделяет 1 шаг написание самих тестов. Для этого создайте файл (скажем, get_create_tests.txt) и скопируйте в него содержимое примера тестов из введения. Далее, выберите пункт Run tests, нажмите на кнопку Tests file и выберите файл, который вы создали ранее. Нажимаем Run tests и, если все сделано правильно, видим такую картину:


image


Несложно понять, что наши тесты запускаются и работают.


А что дальше?


Дальше, как несложно догадаться, можно продолжать создавать команды для нашего объекта (USER), писать тесты с использованием этих команд и запускать их также, как было описано в предыдущем разделе.


От автора


Любые предложения по улучшению проекта приветствуются я здесь, чтобы получить фидбек.


Если кто-то решится изучить код в репозитории и предложить улучшения или замечания, тоже буду рад (лучше в телеге @ilyaWD).

Источник: habr.com
К списку статей
Опубликовано: 11.11.2020 12:15:25
0

Сейчас читают

Комментариев (0)
Имя
Электронная почта

Тестирование веб-сервисов

Тестирование веб-приложений

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru