Серия горизонтальных оценок платформы тестирования с открытым исходным кодом «Flowing Horses»: «Деревянные лошади» в мире тестирования
Серия горизонтальных оценок платформы тестирования с открытым исходным кодом «Flowing Horses»: «Деревянные лошади» в мире тестирования

Предисловие

Впервые я познакомился с платформой Liuma в мае этого года. Когда я впервые услышал это имя, я подумал, что оно довольно интересное, и предположил, что его название должно быть взято из «Коровьей лошади Мулиу» Чжугэ Ляна. Позже я подтвердил автору, что это действительно так. Чжугэ Лян изначально изобрел Му Лю Ню Ма для повышения эффективности транспортировки, а испытательная платформа Му Лю Ма должна была повысить эффективность испытаний. Можно сказать, что название было «в самый раз».

В этой статье около 12 000 слов, и я писал ее много дней. Возможно, эта статья заняла у меня больше всего времени. На самом деле написание статей – не самое сложное – это учиться, исследовать, наступать на подводные камни, решать задачи, писать статьи, записывать и подводить итоги. Поэтому написание довольно тщательное и в целом достаточно подробное. Чтение может занять немного много времени, поэтому вы можете сначала уделить внимание сборнику, а затем внимательно изучить содержание статьи, когда у вас будет время позже. Содержание примерно разделено на следующие четыре части:

Введение

  • Обзор проекта: стек технологий, принцип работы
  • Введение в функцию проекта: функциональные особенности

Развертывание

  • Планирование развертывания
  • Развертывание зависимой среды (JDK, MySQ, NGINX, Git, NodeJS, Python3)
  • Упаковка кода: проект клонирования, упаковка внешнего кода, упаковка внутреннего кода.
  • Развертывание проекта: внешнее развертывание, внутреннее развертывание, развертывание механизма выполнения.

Использование

  • Тестирование Интерфейс: Создать интерфейс (добавить ссылку на общедоступные параметры、Добавить справочные специальные параметры)、Тестовые случаи (ассоциация параметров)、Практика тестирования бизнес-процессов
  • webАвтоматизированное тестирование:Управление элементами(Добавить элемент)、тестовый пример(Добавить элемент)、Разработка сценариев тестирования
  • план испытания, взаимосвязь между тестовыми коллекциями и тестовыми примерами

Краткое содержание

  • Краткое описание использования: общие меры предосторожности при использовании,например ссылка на переменную、ссылка на функцию、Связанные параметры Цитаты и т. д.
  • Предложения по оптимизации: предложено 7 предложений по оптимизации, основанных на реальном процессе использования и с точки зрения пользователя.
  • Краткое изложение преимуществ и недостатков: преимущества, недостатки, рейтинги (оценка и выставление баллов с разных сторон)

【Введение】

Следующий обзор проекта и описание функций взяты с официального сайта и из описания проекта GitHub.

1. Обзор проекта

Liuma — это платформа автоматического тестирования с низким уровнем кода, целью которой является использование простейшей архитектуры для единой поддержки автоматического тестирования API/WebUI/AppUI. Платформа использует модель проектирования с низким уровнем кода и реализует традиционные тестовые сценарии настраиваемым образом, что позволяет пользователям с более слабыми способностями к программированию быстро приступить к автоматизированному тестированию. В то же время платформа также поддерживает реализацию пользовательских компонентов посредством простого написания кода, что позволяет пользователям гибко реализовывать свои собственные потребности.

Проект разделен на сторону платформы и движка. Он использует распределенное исполнение, а узел выполнения теста (т. е. движок) может быть зарегистрирован на любой машине в любой среде, что позволяет преодолеть ограничения ресурсов и сети. В то же время, запустив движок на локальном ПК, пользователям удобно быстро отлаживать тестовые случаи и просматривать процесс выполнения в режиме реального времени, обеспечивая то же удобство, что и при традиционном написании скриптов.

Официальный сайт: http://www.liumatest.cn/ Адрес кода: https://github.com/Chras-fu/Liuma-platform Документация по развертыванию: https://docs.qq.com/doc/p/c989fa8bf467eca1a1e0fa59b32ceab017407168. Руководство пользователя: https://docs.qq.com/doc/p/1e36932d41b40df896c1627a004068df9a28fc3f Стек технологий платформы: интерфейсная часть VUE+ElementUI, серверная часть Java+SpringBoot и механизм тестирования Python.

2. Введение функции

1. Тестирование API

  1. Поддержка одиночного Тестирования интерфейса и тестирования ссылок.
  2. Поддерживает унифицированное управление интерфейсами и импорт Swagger.
  3. Поддерживает создание вариантов использования надежности интерфейса для проверки в полевых условиях одним щелчком мыши.
  4. Поддержка глобальных переменных、ассоциация、утверждение、встроенные функции、Пользовательская функция。
  5. Поддерживает пред- и пост-скрипты, продолжение сбоя, тайм-аут, ожидание/условие/цикл и другие логические контроллеры.
  6. Поддерживает разделение сред и вариантов использования, сопоставляя доменные имена несколькими способами, позволяя выполнять набор вариантов использования в нескольких средах.

2. Тестирование веб-интерфейса

  1. Поддерживает сценарии использования с использованием ключевых слов и без кода.
  2. Поддерживает унифицированное управление элементами пользовательского интерфейса и пакетный импорт шаблонов Excel.
  3. Поддерживайте пользовательские ключевые слова, инкапсулируйте общие этапы операций и улучшайте читаемость вариантов использования.
  4. Поддерживайте выполнение локального механизма и просматривайте процесс выполнения в режиме реального времени.
  5. Поддерживает последовательное выполнение в той же коллекции вариантов использования, что и варианты использования API.

3.Тестирование AppUI (версия 1.1 доступна онлайн)

  1. Поддержка возможностей написания и выполнения сценариев использования, эквивалентных WebUI.
  2. Поддержка систем Android и Apple
  3. Поддерживает управление реальными устройствами, скринкастинг и онлайн-операции.
  4. Поддержка онлайн-получения элементов управления и сохранения элементов одним щелчком мыши.
  5. Поддержка просмотра процесса выполнения в режиме реального времени.

【Развертывание】

1. Инструкции по развертыванию

1. Инструкции по развертыванию

Официальный адрес документа по развертыванию: https://docs.qq.com/doc/p/c989fa8bf467eca1a1e0fa59b32ceab017407168. Предусмотрено два метода развертывания: один — развертывание контейнера, а другой — обычное развертывание. Преимущество развертывания контейнера заключается в том, что оно простое и быстрое. Преимущество обычного развертывания заключается в том, что по сравнению с контейнерами проблемы легче устранять. Недостаток — более громоздкие шаги. Оба метода имеют свои преимущества и недостатки, поэтому вы можете свободно выбирать в соответствии со своими предпочтениями. В этой статье используется обычный метод развертывания.

2. Планирование развертывания

Машина/Система

Среда развертывания

иллюстрировать

192.168.1.123,CentOS7

JDK8MySQL8Nginx

Сервер интрасети CentOS7: используется для запуска фоновой службы Java + внешний интерфейс Nginx для перенаправления прокси-сервера. MySQL в качестве базы данных фонового хранилища.

192.168.1.131,Windows10

GitJDK8MavenIDEA EditorNodeJS

Персональный офисный компьютер с Windows 10: Git используется для клонирования кода клиентской части, серверной части и ядра в локальный редактор IDEA для изменения файла конфигурации. Maven автоматически загружает пакеты зависимостей и упаковывает программы Java, которые NodeJS компилирует и упаковывает клиентские программы.

192.168.1.188,Windows7

Python3SeleniumChromeChromeDriver

Другие хосты Windows в той же интрасети: Python3 — среда механизма выполнения, Selenium — инструмент веб-автоматизации, Chrome Google Chrome ChromeDriver Драйвер Google Chrome

  • Используется для запуска фоновых служб Java + внешнего интерфейса.
  • Nginx для перенаправления прокси
  • MySQL — это база данных внутреннего хранилища.

192.168.1.131, Windows10Git JDK8 Мавен редактор ИДЕИ Персональный офисный компьютер NodeJS с ОС Windows 10:

  • Git используется для клонирования кода внешнего, внутреннего интерфейса и движка в локальный
  • Редактор IDEA используется для изменения файлов конфигурации.
  • Maven автоматически загружает пакеты зависимостей и упаковывает программы Java.
  • NodeJS компилирует и упаковывает интерфейсные программы.

192.168.1.188, Windows7Python3 Селен Хром ChromeDriver для других хостов Windows в той же интрасети:

  • Python3 — среда механизма выполнения
  • Selenium для инструмента веб-автоматизации тестирования
  • Хром Гугл Хром
  • ChromeDriver Драйвер браузера Google

Что касается механизма выполнения, вы также можете продолжать использовать свой персональный офисный компьютер в качестве механизма выполнения. Учитывая, что персональные компьютеры часто выключаются и перезагружаются, им необходимо запускать механизм выполнения взад и вперед, что хлопотно, поэтому я выбрал локальный. Хост Windows. Конечно, его также можно развернуть в системе Linux, но для автоматизированного тестирования пользовательского интерфейса нет визуального отображения интерфейса, что делает отладку относительно затруднительной.

2. Зависимость от среды развертывания

1. Установите Java1.8.

На серверах CentOS и персональных компьютерах Windows необходимо установить JDK соответственно. В CentOS рекомендуемый метод развертывания сценария:

Скачать скрипт установки: https://share.weiyun.com/6JMLvSyK Адрес загрузки пакета JDK: https://share.weiyun.com/mKDxXd1x

Язык кода:javascript
копировать
source jdk_install.sh  # Установите с помощью команды source, устраняя необходимость настройки переменных среды.

2. Установите MySQL

1) Установите MySQL

Установка под CentOS. На этот раз для быстрой установки используется docker. Если mysql уже установлен на сервере или другом компьютере во внутренней сети, просто подключитесь напрямую и можете проигнорировать этот шаг. Обратите внимание, что вам необходимо использовать версию MySQL 8.0+. Я использую версию 5.7.33. При запуске будет сообщено об ошибке, и она не поддерживается.

Язык кода:javascript
копировать
docker run -d --restart always --name mysql -e MYSQL_ROOT_PASSWORD=123456 -p 3307:3306 mysql:8.0.28
2) Войдите в MySQL.

Введите контейнер MySQL

Язык кода:javascript
копировать
docker exec -it mymysql sh

подключить MySQL

Язык кода:javascript
копировать
mysql -uroot -p  # Войдите в MySQL и введите пароль 123456, как будет предложено.
2) Создать базу данных

Введите командную строку MySQL для выполнения:

Язык кода:javascript
копировать
mysql> create database liuma character set utf8 collate utf8_general_ci;

3.Установите nginx

Установка под CentOS, рекомендуемый метод развертывания скриптом

Адрес загрузки скрипта установки nginx: https://share.weiyun.com/HLuVRTO2 Адрес загрузки установочного пакета nginx: https://share.weiyun.com/uhffdijl

Загрузите его, загрузите на сервер и выполните следующую команду для его установки:

Язык кода:javascript
копировать
source nginx_install.sh

4. Установите git

Установка под Windows используется для извлечения кода проекта. После загрузки дважды щелкните мышью и следуйте инструкциям для пошаговой установки.

Адрес загрузки: https://share.weiyun.com/NJBlZGmE

5. Установите node.js.

Установка под Windows используется для установки внешних зависимостей, упаковки и компиляции.

Адрес загрузки: https://share.weiyun.com/2PpWyXkz

После загрузки дважды щелкните, чтобы установить и заменить источник изображения Taobao:

  • временная замена
Язык кода:javascript
копировать
npm --registry https://registry.npm.taobao.org install node-sass (модуль, который необходимо установить)
  • постоянная замена
Язык кода:javascript
копировать
npm config set registry https://registry.npm.taobao.org
npm config get registry  # Проверьте, прошла ли замена успешно
  • Использовать через cnpm
Язык кода:javascript
копировать
npm install -g cnpm --registry=https://registry.npm.taobao.org

6. Установите python3.

Может быть установлен под CentOS или Windows.,Исполнитель будет установлен, под какой системой он выбран. Если это система Linux,Вы можете обратиться к предыдущим статьям《LinuxДалее нажмите установкуPython3&Изменить источник изображения&Навыки управления виртуальной средой》,Если это система Windows,Затем установите python3 в системе Windows.

3. Упаковка кода

1. Клонируйте код проекта

Язык кода:javascript
копировать
git clone https://github.com/Chras-fu/Liuma-platform.git  # Клонировать код платформы
git clone https://github.com/Chras-fu/Liuma-engine.git  # Клонировать код двигателя

Каталог кода платформы:

  • LiuMa-бэкенд: фоновый код
  • LiuMa-frontend: код интерфейса

2. Упакуйте внешний код

Войдите в каталог файлов внешнего интерфейса, установите соответствующие зависимости и выполните сборку.

Язык кода:javascript
копировать
npm install  # Установите связанные зависимости
npm run build  # строить

Появится сообщение «Сборка завершена», указывающее, что сборка прошла успешно:

После успешной сборки в каталоге будет создан каталог dist-файла, который можно будет упаковать в формат .zip и загрузить на сервер, а затем распаковать.

3. Упакуйте серверный код

1) Установите пакеты зависимостей

Используйте IDEA, чтобы открыть liuma-platform/LiuMa-backend, и используйте maven для установки зависимостей.

2) Изменить конфигурацию
① Конфигурация базы данных

Расположение файла: liuma-platform/LiuMa-backend/src/main/resources/application.properties, конфигурация следующая:

  • имя пользователя: имя пользователя базы данных;
  • пароль: пароль базы данных;
  • url: URL-адрес для подключения к базе данных;
Язык кода:javascript
копировать
# database
spring.datasource.password=123456
spring.datasource.username=root
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3307/liuma?serverTimezone=UTC&characterEncoding=utf-8

Что следует отметить:

  • Когда сервер и база данных, развернутые проектом, находятся на одном хосте, вы можете использовать 127.0.0.1. Если они не находятся на одном хосте, вам необходимо изменить IP-адрес хоста;
  • 3307 — это номер порта, отображаемый при развертывании MySQL в Docker. Вы можете настроить его в соответствии с номером порта вашей базы данных;
② Конфигурация электронной почты

Расположение файла: liuma-platform/LiuMa-backend/src/main/resources/application.properties, конфигурация следующая:

Язык кода:javascript
копировать
# aliyun Алибаба Облако
# Алибаба Облакопочтаkey,Измените его на свой
aliyun.email.accessKey = xxxxx
# Алибаба Облакопочтаsecret,Измените его на свой
aliyun.email.accessSecret = xxxxx
# Измените адрес электронной почты отправителя на свой собственный.
aliyun.email.runnerSenderAddress = xxxxx
aliyun.email.runnerSenderName = Запуск бота уведомлений
③ Конфигурация облака Qiniu.

Расположение файла: liuma-platform/LiuMa-backend/src/main/resources/application.properties, конфигурация следующая:

Язык кода:javascript
копировать
# qiniuyun Конфигурация облака Циню, поменяй их всех на свои
# Цинююн ак
qiniu.cloud.ak = xxxx
# Цинююнск
qiniu.cloud.sk = xxxx
# Название пространства Цинюйюнь
qiniu.cloud.bucket = xxxx
# Ускоренное доменное имя Qiniu Cloud
qiniu.cloud.downloadUrl = xxxx
qiniu.cloud.uploadUrl = xxxx
3) упаковка maven

Подсказка «BUILD SUCCESS» означает, что упаковка прошла успешно, и в каталоге будет дополнительный jar-пакет LiuMa-1.0.3.jar (последний код, который я сейчас извлек, упакован в 1.0.3, а также есть LiuMa -1.0.0 Пакет .jar был упакован два месяца назад)

4. Развертывание проекта

1. Развертывание платформы

1) Загрузите упакованные файлы внешнего интерфейса.

Загрузите упакованную папку внешнего интерфейса dist в: каталог установки nginx /usr/local/nginx/html/.

2) Загрузите упакованные серверные файлы.

Вы можете создать новую папку liuma в каталоге /home для хранения ранее упакованного файла пакета jar: LiuMa-1.0.3.jar. Выполните команду, чтобы запустить службу в фоновом режиме:

Язык кода:javascript
копировать
nohup java -jar LiuMa-1.0.3.jar > logs.log 2>&1 &

После запуска вы можете проверить файл журнала logs.log, чтобы увидеть, был ли запуск успешным и успешно ли он подключен к базе данных. После успешного подключения будет автоматически создана соответствующая таблица данных:

3) Настройте Nginx

① Создайте новый nginx_liuma.conf.

Создайте новый файл nginx_liuma.conf в каталоге /usr/local/nginx/conf nginx. nginx используется для настройки перенаправления прокси-сервера. Подробная конфигурация выглядит следующим образом:

Язык кода:javascript
копировать
#user  nobody;
worker_processes  1;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;

    server {
        listen 8888;
        server_name 192.168.1.122;
        location / {
            index index.html index.htm;
            root /usr/local/nginx/html/dist;
        }

        location /autotest {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Origin "";
        }

        location /openapi {
            proxy_pass http://127.0.0.1:8080;
            proxy_http_version 1.1;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_set_header Origin "";
        }

        access_log /usr/local/nginx/html/wwwlogs/access.log;
    }
}

② Тестовая конфигурация

Язык кода:javascript
копировать
nginx -t -c /usr/local/nginx/conf/nginx_liuma.conf

Во время теста может появиться сообщение об ошибке «nginx: [emerg] open() «/usr/local/nginx/html/wwwlogs/access.log» не удалось (2: нет такого файла или каталога)». Причина в том, что. каталог html. Если путь к файлу wwwlogs/access.log отсутствует, просто создайте новый каталог wwwlogs и файл access.log.

③ Укажите файл конфигурации для запуска nginx.

Язык кода:javascript
копировать
nginx -c /usr/local/nginx/conf/nginx_liuma.conf
4) Проверьте статус развертывания.

Посетите интерфейс: http://192.168.1.122:8888/, учетная запись администратора: LMadmin, пароль: Liuma@123456.

Страница после входа в систему выглядит следующим образом:

5) Устранение неполадок

Поскольку Liuma — это проект разделения фронтенда и бэкэнда, тот факт, что фронтенд имеет к нему доступ, не означает, что бекенд тоже нормальный. Если при входе в систему вы видите ошибку 502, это означает, что внутренний сервер не запущен. Вероятно, это проблема с базой данных. Устранить неполадки можно следующими способами:

  • Версия базы данных,Рекомендуется использовать версию 8.x.,Версия 5.7Не поддерживается
  • Проверьте правильность конфигурации данных базы данных в файле конфигурации серверной части application.properties.
  • Вы можете проверить это через журнал logs.log, упомянутый ранее, или проверить, создает ли база данных автоматически связанные таблицы данных.
  • Проверьте, открыты ли порт базы данных и порт обратного прокси-сервера Nginx в брандмауэре.

Кроме того, если доступ к внешней странице невозможен, вероятно, у брандмауэра нет разрешений на открытие. Вам необходимо открыть порт 8888, настроенный в приведенном выше файле конфигурации, в брандмауэре:

Язык кода:javascript
копировать
firewall-cmd --permanent --add-port=8888/tcp
firewall-cmd --reload

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

2. Развертывание тестового модуля

Под механизмом тестирования можно понимать рабочую среду для тестирования интерфейса и тестирования автоматизации пользовательского интерфейса. Механизм тестирования можно развернуть в системе Linux или на персональном компьютере под управлением Windows, желательно в той же локальной сети. Конечно, если сервер развернут в облачной службе и имеет общедоступный IP-адрес, Windows также может быть персональным офисным компьютером, если основной компьютер может подключаться к серверу, на котором развернута серверная служба. Ниже приведен процесс развертывания механизма:

1) Загрузите код

Код движка клонирован через "git clone https://github.com/Chras-fu/Liuma-engine.git" и загружен напрямую на соответствующий сервер. Например, если я выберу в качестве движка Windows, то напрямую Just. скопируйте его в Windows.

2) Установить зависимости

В предыдущем развертывании среды зависимостей был установлен Python3, а также создана и активирована виртуальная среда. Затем перейдите непосредственно в каталог liuma-engine, где находится проект, и установите зависимости.

Язык кода:javascript
копировать
pip install -r requirements.txt
3) Загрузите драйвер Chrome.

Сравните версию движка браузера Chrome, загрузите соответствующий драйвер и сохраните его в каталоге /browser.

4) Добавить двигатель

① Механизм регистрации

Центр среды платформы Liuma-Управление двигателем-Регистрация двигателя, введите имя двигателя, любое имя, которое вы можете идентифицировать, например: engine-192.168.1.188, после подтверждения появится всплывающее окно с подсказкой, скопируйте код двигателя и секретный код двигателя внутри ключа. , который будет использоваться позже.

② Настройка сервера движка

Отредактируйте файл конфигурации config.ini в каталоге liuma-engine/config и настройте его следующим образом.

  • url: URL-адрес, по которому находится фоновая служба;
  • код двигателя: код двигателя в поле подсказки после успешной предыдущей Зарегистрировать двигатель;
  • engine-secret: Секретный ключ двигателя в поле подсказки после успешной предыдущей Зарегистрировать двигатель;
  • варианты: Если движок представляет собой систему Linux,затем перейди на безголовый,то есть режим заголовка «никто»,Если это Windows, оставьте стандартные настройки по умолчанию;
  • путь: если движком является система Linux, измените его на chromedriver. Если это Windows, сохраните файл chromedriver.exe по умолчанию;
  • токен: он будет сгенерирован автоматически после успешной регистрации, поэтому вам не нужно об этом беспокоиться;
Язык кода:javascript
копировать
[Platform]
url = http://192.168.1.122:8888
enable-proxy = false
enable-stderr = true

[Engine]
engine-code = 9d4358f0c8a34a2ab7e4c297949149fa
engine-secret = 86a2f8f8bd654e03a60da9f19cdec017

[Header]
content-type = application/json;charset=utf-8
token = eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2NjI2Mjk4OTQsImVuZ2luZVNlY3JldCI6IjVhM2ZhYzdlYzJiODQ4NDlhYzJhNjY4ZGRlNjRhMDk0IiwiaWF0IjoxNjYyMDI1MDk0LCJlbmdpbmVJZCI6ImU3ZWMzOTllZDdkZDRkMmFiZWIxNGNiNTE2NGNiNGVkIn0._LVsCKIauFxV4IKAUNgYS1lVbD5twO_2E39QCOufKH8

[WebDriver]
options = normal
path = chromedriver.exe

[PlatformProxy]
url = http://0.0.0.0:80
username = ****
password = ****
5) Запустите двигатель
Язык кода:javascript
копировать
python startup.py
6) Проверьте, успешно ли добавлен движок.

После успешного запуска двигателя вы можете проверить его онлайн-статус в Центре среды платформы Liuma — Управление двигателем. Сервер может запускать несколько ядер. Обычно по умолчанию существует четыре системных ядра, которые не влияют друг на друга после запуска.

【Использование】

1. Тестирование интерфейса

1. Подготовка

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

Зарегистрировать аккаунт

Страница входа для регистрации новой учетной записи

После завершения регистрации войдите в учетную запись администратора и вы сможете увидеть зарегистрированных пользователей в [Управление системой - Управление пользователями]:

Создать проект

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

2. Создать интерфейс

Самая большая функция этой платформы — автоматическое тестирование, и наша цель на этот раз — проверить, просты ли в использовании функции этой платформы, связанные с автоматизацией, поэтому основное внимание будет уделено автоматизированному тестированию интерфейса и автоматизированному тестированию пользовательского интерфейса. Что касается других сопутствующих функций, то в официальном руководстве пользователя написано очень подробно, поэтому я не буду здесь вдаваться в подробности.

При тестировании интерфейса необходимо сначала создать интерфейс. Перед созданием интерфейса необходимо создать среду выполнения каждого интерфейса, то есть имя домена или URL-адрес:

Добавить среду

① Добавьте новый идентификатор доменного имени.

Прежде чем добавить среду, вам необходимо сначала добавить идентификатор доменного имени, в противном случае при добавлении среды никто «идентификатор доменного имени» будет доступен для выбора.

В правом верхнем углу центра конфигурации - Идентификация доменного имени - добавьте новую идентификацию, заполните идентификационное имя и описание идентификации и подтвердите.

② Добавить среду

Добавьте логотип доменного имени, и вы сможете Добавить среду Понятно,Целью добавления среды является главным образом определение того, какую среду использовать при последующем запуске тестовых случаев.,Например, тот же проект,Может быть среда разработки, тестовая среда、Предварительная версия среды и т. д.:

Экологический Центр-Экологический менеджмент-Добавить среду,Введите имя среды и описание среды.,подтверждать.

③ Добавьте новое доменное имя.

Добавьте новое доменное имя во вновь созданную среду, выберите «Идентификатор доменного имени» в качестве типа соответствия, выберите имя идентификатора доменного имени, созданного на первом этапе, в качестве соответствующего идентификатора и введите URL-адрес, запрошенный интерфейсом. для доменного имени. Подобно управлению средой Metersphere, после того, как среда создана здесь, запрос на тестирование интерфейса, инициированный позже, инициируется на основе URL-адреса этой среды.

Добавьте и заполните информацию об интерфейсе

① Создать модуль

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

② Новый интерфейс

Вы можете добавить новый интерфейс вручную или импортировать его. Метод импорта поддерживает импорт файлов, импорт почтальона и Swagger. Здесь я решил добавить его вручную. В качестве примера возьмем интерфейс входа в систему:

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

Добавление общедоступных параметров и ссылка на них

① Различия в дизайне общедоступных параметров между Liuma и Metersphere.

Целью добавления новых общедоступных параметров является, главным образом, их дальнейшее использование в интерфейсе, аналогично глобальным переменным. И Metersphere, и Liuma управляют своими средами и переменными на основе проектов, причем проект находится наверху. Публичные параметры Metersphere управляются в среде. Это концепция размещения нескольких переменных в одной среде. В Liuma среда отделена от переменных. Один проект может добавить несколько сред, а один проект может добавить несколько общедоступных параметров. параметры среды и общества не мешают друг другу.

общедоступные компоненты-общедоступные параметры-Пользовательские параметры-Добавить пользовательские параметры,Введите имя параметра、тип、Значения параметров и т. д.。Уведомление:Имена переменных не могут повторяться в одном проекте.Например,Добавьте новое имя пользователя для входаобщедоступные параметры:

②Справочник по общедоступным параметрам Liuma

Metersphereдляобщедоступные Ссылка параметров соответствует Jmeter.,Все принятыВ форме {name}, в Люме, это через {{username}}цитата в форме,Похоже на: почтальон,Но есть больше, чем почтальон

встроенные функции

Подобно Jmeter, Liuma имеет встроенный помощник по функциям и предоставляет множество функций на выбор.

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

Добавляйте пользовательские функции и ссылайтесь на них

В некоторых случаях встроенные Если функция не может удовлетворить потребности в генерации параметров, то вы можете создать некоторые собственные функции. Согласно официальной документации сайта, платформа поддерживает Python. Метод библиотеки Faker (ведь механизм исполнения — Python),Затем мы можем создать метод Python для настройки некоторых параметров. Но есть одна вещь, которую следует отметить,Возвращаемое значение функции должно быть возвращено с использованием sys_return(value)

① Создайте пользовательскую функцию

Например, если я хочу сгенерировать случайный номер мобильного телефона, я могу сделать это следующим образом: Публичные компоненты-Управление функциями-Добавить функцию, содержимое будет следующим:

Видно, что синтаксис на самом деле является синтаксисом Python, за исключением того, что окончательное возвращаемое значение заменяется на sys_return.

② Ссылка на пользовательские функции

После добавления пользовательской функции вы можете ссылаться на нее в параметрах интерфейса: {{@function()}}

Фактически, я сгенерировал три вышеуказанных параметра: имя, номер мобильного телефона и идентификационный номер с помощью пользовательских функций. Когда запрос наконец сделан, вы можете увидеть сгенерированные значения параметров через журнал:

особое внимание

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

Кавычки необходимы при ссылке на общедоступные параметры строкового типа при передаче параметров интерфейса.

При определении параметров, если это переменная строкового типа:

  • Значение параметра не заключено в кавычки и не будет автоматически заключаться в кавычки при передаче параметров.
  • Также нельзя заключать в кавычки значения параметров при определении переменных.
  • Вы можете использовать только двойные кавычки на внешнем слое при ссылке на переменные в интерфейсе.

Пример может сделать это более простым:

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

Если значение не заключено в двойные кавычки, кавычки не будут автоматически включаться при передаче параметров (что можно увидеть, выполнив результат печати, даже если при определении выбран тип строки, под которым находится сервер интерфейса). test подумает, что это не строковый тип.

Если мы вручную добавим двойные кавычки к общедоступному параметру, механизм выполнения Python сообщит об ошибке JSONDecodeError:

Решение состоит в том, чтобы определить общедоступные параметры без кавычек, а при цитировании параметров в интерфейсе добавлять кавычки.

На этом этапе оно будет распознано как допустимое значение строкового типа:

3. Тестовые случаи

Создавайте варианты использования и добавляйте интерфейсы

Добавьте модуль и создайте новую страницу варианта использования:

Вариант использования состоит из одного или нескольких интерфейсов для формирования бизнес-потоков в различных сценариях. После создания нового интерфейса в предыдущем управлении интерфейсом вы можете добавить интерфейс в вариант использования. Вы можете выбрать один или несколько интерфейсов одновременно.

Добавить утверждение

Существует много типов утверждений. Например, для интерфейса, который добавляет пользователя, возвращаемое значение после успешного добавления равно {"a":"200","d":"30200"}, где a фиксировано, что равно значению. код ответа интерфейса. Значение d, идентификатор пользователя, не фиксировано, поэтому здесь вы можете сначала извлечь значение узла d через экстрактор jsonpath и использовать «целое число» для создания утверждения:

Импортировать информацию о конфигурации

Если некоторые интерфейсы используют пользовательские функции (встроенные функция Нет необходимости импортировать)、общедоступные параметры、общественныйheaderждать,Затем вам нужно выбрать и импортировать их один за другим в варианте использования.,В противном случае ссылка в интерфейсе не вступит в силу. много раз,Выполнение варианта использования отличается, поскольку эти элементы не импортируются:

Связанные параметры

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

① Извлечение возвращаемого значения

Как и Jmeter и Metersphere, извлечение возвращаемых значений поддерживает методы извлечения как регулярных выражений, так и jsonpath. В отличие от Jmeter и Metersphere, когда Flow Horse извлекает возвращаемые значения, к выражению не требуется добавлять знак $:

② Возвращаемое опорное значение

В отличие от предыдущей ссылки на общедоступные параметры, нет необходимости добавлять символ $ в {{}} возвращаемого значения ссылки, просто введите имя переменной напрямую:

особое внимание

Информация об интерфейсе в управлении интерфейсами и управлении вариантами использования не синхронизирована.

Если к варианту использования добавляется интерфейс A, то:

  • После редактирования сведений об интерфейсе А отредактированное содержимое не будет синхронизировано с интерфейсом А в управлении интерфейсом;
  • Редактирование интерфейса A в управлении интерфейсами не будет синхронизировано с интерфейсом A в варианте использования;

Например, мы создали вариант использования, в котором был добавлен интерфейс A, а в этом варианте использования к интерфейсу A был добавлен параметр заголовка запроса. В настоящее время, если вы просматриваете интерфейс A в управлении интерфейсом, параметр заголовка запроса не будет. синхронизировано; во время управления интерфейсом Добавленные параметры заголовка запроса не будут синхронизированы с вариантом использования, что эквивалентно изоляции управления вариантами использования и управления интерфейсом. В это время обеим сторонам необходимо один раз изменить интерфейс A или изменить его в управлении интерфейсом, а затем снова добавить в вариант использования.

Честно говоря, я думаю, что этот дизайн очень сложен в использовании, потому что в реальном использовании будет много тест-кейсов, использующих один и тот же интерфейс. Например, если я добавляю или изменяю заголовок запроса определенного интерфейса только в тестовом примере A, то остальные тестовые сценарии B, C и D необходимо изменить один за другим.

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

4.Практика тестирования бизнес-процессов

В качестве примера приведен общий сценарий бизнес-процесса при тестировании.,Чтобы объединить ранее упомянутые общедоступные параметры, пользовательские функции, Связанные параметры и т. д.,Процесс заключается в следующем:Вход пользователя->Добавить продукт->Получить подробную информацию о продукте->Удалить продукт,От добавления до удаления,Это образует небольшой замкнутый цикл бизнес-процессов.,Это также не позволяет нам вручную удалять данные в базе данных позже.,Сейчас это также обычная практика при тестировании процессов интерфейса.

Улучшите информацию о вариантах использования

Полный тестовый пример бизнес-процесса обычно требует следующей работы:

  • Заполните основную информацию;
  • Импортировать информацию о конфигурации:Пользовательская функция、общедоступные параметры、Общий заголовок;
  • Добавляйте интерфейсы и регулируйте порядок интерфейсов;
  • Добавьте соответствующие утверждения для каждого интерфейса;
  • Настроить значения ассоциации между интерфейсами;
Выполнить вариант использования

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

① Интерфейс входа в систему

Вход в учетную запись успешен, и получено возвращаемое значение, которое возвращает идентификатор пользователя и информацию токена учетной записи.

② Добавить новые продукты

Если продукт добавлен успешно, возвращаемый узел d является идентификатором продукта.

интерфейсутверждениевозвращаемое значениеdУзел является целым числом,Утверждение имеет успех. Связанные параметры извлекут значение узла d.,В качестве входного параметра для последующего интерфейса.

③ Получить подробную информацию о продукте

Идентификатор продукта, извлеченный предыдущим интерфейсом, был передан в тело запроса, и были получены сведения о продукте.

Интерфейс утверждает, что узел aa узла d возвращаемого значения численно равен переменной идентификатора продукта, и утверждение успешно.

④ Удалить товар

Передаваемый здесь параметр интерфейса также использует идентификатор продукта, возвращаемый вновь добавленным продуктом, в качестве входного параметра. Если удаление прошло успешно, возвращаемое значение узла d равно 1.

Интерфейс утверждает, что номер узла d возвращаемого значения всегда равен 1, и утверждение успешно.

2. Автоматизированное веб-тестирование

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

  • Инкапсулирует некоторые методы Selenium WebDriver, такие как развертывание и сворачивание окна браузера, как встроенные методы;
  • Управление элементами можно сравнить с управлением интерфейсом, который содержит элементы страницы один за другим;
  • Варианты использования можно сравнить со вариантами использования интерфейса. Варианты использования интерфейса состоят из интерфейсов, а варианты использования пользовательского интерфейса состоят из элементов и операций с элементами.

1. Управление элементами

Добавить элемент

Возьмите домашнюю страницу Baidu в качестве примера и добавьте некоторые элементы домашней страницы Baidu, такие как окно поиска и кнопку нажатия Baidu. Метод позиционирования поддерживает восемь методов позиционирования элементов Selenium.

Выражение напрямую заполняет значение атрибута элемента, например, позиционирование идентификатора. Значение атрибута идентификатора поля поиска — kw.

Если вы выбираете позиционирование имени, введите wd для выражения

список элементов

список элементов Управляйте всеми элементами,Рекомендуется управлять разными страницами с помощью разных модулей.,Это также соответствует очень важному принципу проектирования в шаблоне проектирования PO для автоматизации пользовательского интерфейса: одна и та же страница,Управляйте только объектами элементов страницы на этой странице.

2. Тестовые случаи

Добавить операцию

Добавить операцию в основном охватывает все возможные операции, которые могут использоваться в Автоматизированное тестирование пользовательского интерфейса, такие как: развернуть браузер、утверждение、IF...ELSE、Переключение кадров и т.д.

Добавить элемент

Вот небольшой момент, который вам нужен особенный внимание,Согласно моему первоначальному мнению при написании тестовых сценариев, следующее::Сначала объявите объект элемента>>Добавить действие элемента,Например, щелчок, двойной щелчок, слайд, длительное нажатие и т. д.,Поэтому я принял как должное, что приеду сюда первым.,После долгих поисков я так и не смог найти вход. Но на самом деле сначала нужно выбрать действие,Такие как ввод、щелкнуть>>Затем выберите предварительно введенные элементы, которыми хотите управлять.:

Конечно, после работы со страницей настроек и проверки кнопки позади элемента вы также можете создать новый объект элемента страницы:

3. Практика сценариев тестирования

Разработка сценариев тестирования

Здесь мы используем поиск Baidu в качестве небольшого тестового сценария.,Чтобы подключить ранее упомянутое позиционирование элемента, Добавить элемент и т.д.,Ход сцены следующий:

Открыть браузер>>Открыть домашнюю страницу Baidu>>Развернуть окно браузера>>Ввод поля ввода“бродячая лошадь”>>Отправить поиск>>утверждение В заголовке страницы содержится“бродячая лошадь”>>ждать Подожди три секунды>>Закрыть браузер

Тестовый эффект

3. План испытаний

план Функция испытаний — определить все варианты использования для выполнения теста и управлять ими, используя коллекцию тестов в качестве измерения. Кроме того, план испытания поддерживает запланированные задачи и периодическое выполнение. В то же время план испытания управляются в соответствии с версиями, а также поддерживают интеграцию в конвейер исследований и разработок.

1. Тестовая коллекция

Редактировать коллекцию

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

Добавить тестовый пример

При добавлении тестовых случаев вы можете выбрать каждый ранее созданный тестовый пример. Тестовые сценарии API и тестовые сценарии пользовательского интерфейса могут быть выбраны одновременно и выполняться последовательно.

Созданная коллекция,Можно выполнить вручную,Вы также можете создать план испытания Выполняется регулярно или периодически

план испытаний

Вручную выполнять коллекции тестов и создавать отчеты о тестировании.

2. План испытаний

Изменить план

Введите имя, выберите версию, механизм выполнения и установите время выполнения.

Существует множество способов выбрать частоту выполнения, аналогично запланированным задачам Jenkins или crontab Linux:

Добавить новую коллекцию

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

【Краткое содержание】

1. Краткое описание использования

1. Общие меры предосторожности

  1. Цитирование общедоступных параметров: {{$name}} с символом $.
  2. jsonpath извлекает возвращаемое значение предыдущего интерфейса. Выражение отличается от Jmeter и не имеет внешнего $.
  3. Ссылка на параметры, извлеченные предыдущим интерфейсом: {{name}} без символа $.
  4. Цитироватьвстроенные функции:{{@function_name()}},Обратите внимание на символ @,Параметры в скобках — это параметры функции.
  5. Пользовательские параметры: можно использовать синтаксис Python.,Но возвращаемое значение необходимо использоватьsys_return(значение) для возврата
  6. На общедоступные параметры и извлеченные переменные можно ссылаться в заголовках интерфейса и утверждениях вариантов использования. Однако если значения извлеченных переменных имеют разные типы при передаче параметров, типы необходимо преобразовать заранее.
  7. В случае использования, если используются некоторые пользовательские общедоступные параметры или пользовательские функции, их необходимо проверить и импортировать один за другим, чтобы вариант использования вступил в силу.
  8. В сценариях использования пользовательского интерфейса сначала выберите действие, которое необходимо выполнить, прежде чем вы сможете выбрать элемент для выполнения.
  9. Для бродячих лошадей,Самое главное — это проект,Проект может содержать несколько планов испытаний.,План испытаний может содержать несколько наборов тестов.,Набор тестов может содержать несколько тестовых случаев.,Тестовый пример может содержать несколько объектов интерфейса или элементов пользовательского интерфейса.

2. Предложения по оптимизации

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

① Повторное использование интерфейса

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

② Связанные параметры добавляют функцию автоматического преобразования.

Это также проблема, с которой я столкнулся во время использования. Например, я извлек возвращаемое значение user_id из интерфейса A, и мне нужно было передать его в заголовок запроса следующего интерфейса B. Извлеченное значение user_id имеет тип int, и запрос прошел. к интерфейсу B В заголовке требуется строковый тип:

① Если на извлеченное значение переменной ссылаются через {{user_id}}, при запросе интерфейса B будет сообщено об ошибке типа;

② Если на извлеченное значение переменной ссылаются через '{{user_id}}', при запросе интерфейса B будет сообщено об ошибке 502;

Текущее решение, данное автором, — обработать его в предварительном сценарии или написать собственную функцию преобразования.

Было бы здорово, если бы вы могли напрямую выбирать тип при редактировании вариантов использования — добавляя заголовки запросов, аналогично этому при редактировании управления интерфейсом:

③ Переход по гиперссылке заголовка

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

④ Фиксированная боковая панель

В настоящее время после обновления страницы боковая панель автоматически сжимается. Рекомендуется использовать аналогичные методы, такие как окна чата Metersphere и WeChat, и добавить кнопку закрепления для закрепления/открепления боковой панели.

⑤ Установите механизм выполнения по умолчанию.

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

⑥ Классификация модулей автоматического наполнения

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

⑦ Закройте всплывающее окно и подтвердите еще раз.

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

2. Краткое изложение преимуществ и недостатков

Выше приведены краткие сведения о моем личном опыте использования. Как говорится: «Практика — единственный критерий проверки истины». Полезен ли инструмент/платформа или нет, зависит не от того, что говорят другие, а от того, попробуете ли вы его сами.

1. Преимущества

① Продуманный дизайн

Как упоминалось в предыдущем обзоре проекта“Проект разделен на сторону платформы и движка. Он использует распределенное исполнение, а узел выполнения теста (т. е. движок) может быть зарегистрирован на любой машине в любой среде, что позволяет преодолеть ограничения ресурсов и сети. В то же время, запустив движок на локальном ПК, пользователям удобно быстро отлаживать тестовые случаи и просматривать процесс выполнения в режиме реального времени, обеспечивая то же удобство, что и при традиционном написании скриптов.”

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

Еще одна умная вещь: я не думаю, что существует так много процедур. В принципе, вы можете разобраться с правилами, как только начнете. Например, как упоминалось ранее: вариант использования содержит несколько интерфейсов. Соответственно, вы можете придумать планы. содержащие коллекции, коллекции, содержащие варианты использования, и варианты использования, содержащие объект интерфейса или элемента.

② Мощная функция

Поддерживает тестирование интерфейса, веб-тестирование, тестирование приложений, а также запланированные задачи, периодическое выполнение и одновременное выполнение.

③ Гибкость в использовании

Стек технологий платформы: интерфейсная часть VUE+ElementUI, серверная часть Java+SpringBoot, механизм тестирования Python, поддерживает пользовательские функции Python, относительно удобен для инженеров по тестированию, которые понимают кодирование Python, и будет более гибким в использовании.

2. Недостатки

① Некоторые детали и функции несовершенны.

Некоторые детали неполны или сложны в использовании. Например, предложения по оптимизации, упомянутые ранее, а также некоторые меры предосторожности я встречаю и суммирую во время использования.

② Стоимость начала работы немного выше

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

③ Руководство пользователя недостаточно подробное.

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

3. Суммарный балл

Из-за ограничений места, личного времени и возможностей перечислены только ограниченные функции и подробности использования, упомянутые выше. Более интересные функции необходимо развернуть и испытать лично. Как обычно, я просто приведу краткий обзор рейтингов Люмы. Процесс рейтингования может быть немного субъективным. В конце концов, я тоже пользователь, но постараюсь быть объективным и публичным. Оценка по-прежнему основывается на размерах из предыдущего трейлера.

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

Размеры оценки

подробныйиллюстрировать

Рейтинг (чем выше звездный рейтинг, тем выше оценка)

Настройка среды

1. Зависимая среда: больше, поддерживает контейнерное развертывание, традиционное развертывание относительно громоздко. 2. Сложность сборки (чем выше сложность, тем ниже звездный рейтинг): новичкам будет сложнее, поскольку используемые инструменты и сервисы относительно невелики. . много

☆☆☆

Управление вариантами использования

1. Поддерживать ли импорт вариантов использования: поддерживается импорт с нескольких платформ и форматов. 2. Порядок последовательности выполнения вариантов использования: поддерживается, можно перетаскивать.

☆☆☆☆☆

Тестирование интерфейса

1.один Тестирование Интерфейс: поддерживается, но я не видел запись импорта в формате CSV. Параметризация и поддержка на основе данных неизвестна. 2. Тестирование процесса интерфейса: поддерживается, несколько методов извлечения параметров, поддержка сбора тестов, план. испытаний,Может выполняться регулярно или периодически. 3. Автоматическое создание отчетов об испытаниях: поддержка.,краткий

☆☆☆☆☆

Автоматизированное тестирование пользовательского интерфейса

1. Приложение: Поддержка 2. Интернет: Поддержка

☆☆☆☆☆

Тестирование производительности

Не поддерживается

никто

Расширенные функции

1. Поддерживать ли двойное открытие: Да 2. Поддерживать ли запланированные задачи: Поддержка 3. Поддерживать ли доступ к CICD: Поддержка 4. Поддерживать ли измерение результатов теста: Поддержка 5. Конфигурация разрешений пользователя: Поддержка, разные пользователи имеют разные разрешения 6. Управление тестированием :Не нарушения, неправильное позиционирование платформы 7. Отслеживание дефектов: Нет почему-то расположение платформы не такое

☆☆☆☆☆

другой

1. Документационная поддержка (руководство по развертыванию, руководство по эксплуатации): недостаточно подробно 2. Частота обновления кода и обслуживания: долгосрочное обслуживание 3. Активность сообщества: средняя 4. Простота использования: стоимость начала работы немного выше 5. Стабильность : Ошибок пока не обнаружено

☆☆☆☆

Итоговое резюме: Liuma обладает мощными функциями, поддерживает несколько типов автоматизированного тестирования и может удовлетворить различные потребности в автоматизированном тестировании; платформа позиционируется как простая в использовании и может помочь инженерам по тестированию, не имеющим навыков программирования, быстро проводить автоматическое тестирование. Однако использование платформы. Этот процесс требует определенных затрат на обучение и исследование, а некоторые подробные функции все еще необходимо оптимизировать и улучшать. Как потоковая платформа, разработанная отдельным разработчиком, она действительно очень эффективна для достижения текущих результатов. Она заслуживает похвалы и обучения! Любой проект с открытым исходным кодом должен принимать критику, сомнения, мнения и предложения со стороны пользователей, но также нуждается в терпимости, поощрении и поддержке со стороны пользователей. При наличии определенной базы пользователей и совместной работе всех проект будет становиться все лучше и лучше и приносить больше пользы. !

boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose