ivanov660 / TestingTool-3

Инструмент автоматизации тестирования ПО
Apache License 2.0
104 stars 24 forks source link

Тестовые случаи (не ошибка) #75

Closed uramalyutin closed 4 years ago

uramalyutin commented 4 years ago

Не ошибка Помогите разобраться для чего и как используются Тестовые случаи? Сейчас у меня в тестах эта команда из списка команд МСТ вообще не используется. И, если я правильно понимаю, это означает, что каждый мой тест содержит по одному тестовому случаю (одноименному с самим тестом). Обработка, показывающая результаты проверок, говорит в каждой проверке, что всего было выполнено 39 тестовых случая (по количеству тестов) image И на диаграмме Продолжительность рисует вот такой красивый "заборчик" :) image Что должна показывать диаграмма тоже не понятно, т.к. насколько я могу судить она показывает сколько тестовых случаев выполнилось за какое-то время. У меня всегда получается, что все тестовые случаи выполняются за различное время (время выполнения для различных тестов не повторяется) и на диаграмме всегда на каждое время по одному тестовому случаю.

ivanov660 commented 4 years ago

I) По МСТ

  1. Да, в МСТ один тест и один тестовый случай - по умолчанию.
  2. В отличии от unit тестов, которые могут выполнятся независимо друг от друга, выполнять несколько независимых сценарных тестов не удобно и не рационально, т.к. они занимают значительно большой интервал времени. А ускорить время выполнения можно только распараллелить, что ведет нас к двум независимым тестам.
  3. Изначально мы пробовали следующую концепцию: Тестовый случай 1 - Создаем сценарий продажи и идем его до конца Тестовый случай 2 - Выполняем печать счета и его проверку () Тестовый случай 3 - Выполняем печать счет-фактуры и его проверку () и т.д. Однако, выполнять юнит тесты проверки ВПФ оказалось эффективнее - по времени выполнения и сложности обновления. Если руки дойдут сделаю публикацию пример.
  4. Сейчас мы используем в процедуре выполнения DDT тестов. Пример проверка открытия форм. Почти написал статью, пример. но не дойдут руки до публикации( Нет времени доделать конструктор запуска WinAutomationUI. Вам предлагаю опробовать механизм проверки открытия форм.

Вот это сам сценарий: ddt-open-forms.zip адаптирован к 8.3.12 и 8.3.14 Вот это макет для режима DDT: Тест_ОткрытиеФормСправочников.zip

Для работы требуется запуск WinAutomationUI. Пример как работать смотрите в видио-уроке: http://testingtool.ru/lesson-2-continue-test-calculator-data-driven-testing/

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

Отпишитесь пжста подойдет вам такой пример. Мы рекомендуем использовать параллельность - несколько тестов: проверка справочников, документов и т.д.

II) Про график. На основании этого графика можно делать оценку времени выполнения тестов и думать над оптимизацией времени выполнения. Т.е. видеть долгие тесты. Более всего подходит для анализа юнит тестов. У вас равномерное распределение. Коллеги по цеху считают что общее суммарное время выполнения более 5 минут - это фейл.

uramalyutin commented 4 years ago

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

  1. Ваш тест с моими изменениями (выделены красным) я сохранил как библиотечный тест. image

  2. Создал сценарный тест и добавил в него готовые блоки шагов: Права и новый тест. image

  3. Оформил тест image

  4. Оформил задание. Для создания задания я выбрал шаблон "Сценарный UI тест (МСТ)". image

  5. Добавил задание в проверку image

До этого я все задания в проверке добавлял с порядком выполнения +1 от предыдущего. В этот раз решил попробовать выполнять это задание параллельно с каким-нибудь другим. Второе и третье задания выполняются под Администратором и поскольку новый тест тоже пока будет выполняться под администратором, я ему установил порядок выполнения вместе с четвертым заданием, которое уже должно запуститься под Кадровиком. При выполнении проверки задание как бы выполнилось. Я специально следил за выполнением проверки в нулевом сеансе и не увидел чтобы этот тест выполнялся. Однако в списке выполненных тестов из этой проверки он появился, но выглядит необычно. image Для первых трёх тестовых случаев детализация шагов выглядит одинаково, а для четвертого ее вообще нет. При этом вроде бы тест считается выполненным успешно.

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

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

У вас равномерное распределение.

Это хорошо или плохо? =)

Коллеги по цеху считают что общее суммарное время выполнения более 5 минут - это фейл.

Стыдно признаться, но вся моя проверка целиком выполняется за 3200+ секунд, а это 50+минут. В таком случае моя проверка не просто фейл, а ФЕЙЛИЩЕ =) Но ручное выполнение всех этих сценариев занимает, конечно, значительно больше времени и поэтому сокращение времени проверки до 50 минут я считал, как это модно сейчас говорить, прорывом) Можете дать какие-то рекомендации, как это оптимизировать? Мне кажется, что надо хотя бы выполнение сценариев под разными пользователями запускать параллельно.

И последний пока вопрос: DDT-тесты всегда используют API AutomationUI? Или можно их делать используя другое API - 1С, например?

ivanov660 commented 4 years ago
  1. Тест использует интерфейс Microsoft Automation UI. Там есть параметры интервал для действий найти окно, найти элемент (2-5 сек). Иногда 1С подвисает и этого интервала может не хватить, поставьте побольше. Однако, если окно не откроется (ошибка), то он будет ждать именно интервал секунд, поэтому тест может выполнятся дольше. А в нем иногда ищутся окна которые могут быть (окно формы) и могут не быть (окно ошибки). Т.е. слишком мало ставить нельзя будет нестабильным (мигать), много тоже будет долго выполняться. Ищите компромисс под себя.

  2. Думаю для вас этот график не является критическим, смотрите другие. Можно посмотреть еще рекомендации от яндекса, как они еще рекомендуют интерпретировать эти данные.

  3. Механизм DDT тестов можете использовать для любого API. Придумайте подходящую свою ситуацию. Основная идея это повторение одного порядка действий с разными данными. -У нас был тест, который проверял расчет данных в строке. Но мы перешли на юнит тесты, т.к. 1С криво получает данные (представление) из ТЧ, если поле в строке ТЧ не находится в режиме редактирования (их косяк).

    • Проверку форм делать нельзя, т.к. при ошибке (вылезает окно 1С с ошибкой) интерфейс зависает до нажатия пользователем кнопки "Ок" - это ужасно.
  4. Почему не запускается.

    • У нас выглядит отчет вот так: image
    • В отчете представления выглядят нормально, кроме детализации шагов.
    • Настройки выглядят вроде нормально.
    • Обратите внимание, что для параллельных заданий не должны пересекаться порты тестирования иначе могут быть проблемы.
    • В нулевом сеансе тест должен запускаться, кроме некорректных данных запуска. Т.е. если в параметрах запуска задания косяк, то будет мигание - старт, стоп, закрытие
    • Может быть ошибка, которая у нас не проявлялась.

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

image

После этого файл отчета должен остаться в каталоге и уже проверить что там написано. б) Проверить корректность строки запуска. Через историю запуска сборок можно получить командную строку для cmd.

uramalyutin commented 4 years ago

Не получается разобраться самостоятельно В нулевом сеансе тест действительно запускается, но он запускается с ошибками. image

Тест не может загрузить готовые блоки шагов. При этом адрес, по которому он пытается загрузить готовые блоки шагов неправильный (на это вы уже обращали внимание в https://github.com/ivanov660/TestingTool-3/issues/70#issuecomment-576399824). В строке запуска также неправильный путь: "C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe" /S "<сервер>/TestingTool" /N"QA-бот" /P"QA-бот" /DasableStartupMessages /DisableStartupDialogs /UseHwLisenses- ¶ /Execute "C:\Малютин\Автотесты на гит-сервере\МенеджерСценарногоТеста.epf" /LogUI /TESTMANAGER ¶ /C"¶ TestUI C:\Малютин\Автотесты на гит-сервере\UITests\ЗУП\DDT\DDT_TEST_Открытие форм справочников.xml ¶ TestLogUI C:\Отчеты_о_тестировании ¶ TestLibDirUI C:\Малютин\Автотесты на гит-сервере\C:\Малютин\Автотесты на гит-сервере\UITestsLib ¶ TestConnectionStringUI <сервер>/HRMS_PRL¶ TestFileBase1CUI Нет ¶ TestUser1CUI МалютинЮН ¶ TestPass1CUI 11 ¶ TestPortUI 1538¶ TestProg1C C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe ¶ TestUrlExternAutomationUI http://localhost:8080¶ TestScreenShotUI Errors¶ TestReportNameUI report-57_DDT_Открытие форм справочников ¶ TestReportFormatUI AllureXML¶ TestDataDrivenUI Да¶ TestDataFileNameUI C:\Малютин\Автотесты на гит-сервере\DDT_DataFiles\ЗУП\Тест_ОткрытиеФормСправочников.mxl ¶ TestID DDT_Открытие_форм_справочников¶"

Насколько я понял, ошибка тянется из команды: image

В шаблоне для этой команды путь до каталога библиотечных тестов задается как: image

В настройках работы пользователя этим настройкам установлены следующие значения: image

Возможно в этом и есть проблема и нужно для настроек "Путь к каталогу библиотеки сценариев" и "Путь к каталогу наборов сценариев" указывать путь относительно настройки "Путь к каталогу GIT"?

P.S. пока не менял настройку, т.к. в остальных сценарных тестах проблем нет, только с тестом DDT (unit-тесты пока не используем совсем).

uramalyutin commented 4 years ago

UPD: Поменял настройки, запустил этот сценарий - ошибка та же, ~хотя путь теперь выглядит правильно~ UPD 14:50 - Только сейчас разглядел, что путь все-таки неправильный. image

С чем может быть связано? Проявляется только на DDT тесте, простые сценарные тесты работают без ошибок.

ivanov660 commented 4 years ago
  1. Предположительно нам удалось определить область возникновения проблемы. Пока еще в процессе моделирования.
  2. Суть проблемы скорее всего заключается в том, что у нас есть два пути к библиотеки сценариев: а) глобальный в РС "Настройки работы пользователя на рабочем месте" (абсолютный путь) б) локальный (переопределяющий) в справочнике Тесты, реквизит "Путь к каталогу библиотеки сценариев" (относительный путь)

При формировании командной строки запуска сценария происходит дублирование каталога git. И вместо данных справочника Тест "%ПутьККаталогуБиблиотекиСценариев% " похоже берется глобальный путь. Можно попробовать в глобальный путь превратить в относительный вручную.

  1. Чтобы проверить, что подставляется не тот путь, попробуйте введите "кракозябру" вместо пути запустите тест и посмотрите строку запуска.
uramalyutin commented 4 years ago

Поменял значение настройки image

В тесте не получилось поменять image

Строка запуска: "C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe" /S "<сервер>/TestingTool" /N"QA-бот" /P"QA-бот" /DasableStartupMessages /DisableStartupDialogs /UseHwLisenses- ¶ /Execute "C:\Малютин\Автотесты на гит-сервере\МенеджерСценарногоТеста.epf" /LogUI /TESTMANAGER ¶ /C"¶ TestUI C:\Малютин\Автотесты на гит-сервере\UITests\ЗУП\DDT\DDT_TEST_Открытие форм справочников.xml ¶ TestLogUI C:\Отчеты_о_тестировании ¶ TestLibDirUI C:\Малютин\Автотесты на гит-сервере\C:\Малютин\Автотесты на гит-сервере\UITestsLib ¶ TestConnectionStringUI <сервер>/HRMS_PRL¶ TestFileBase1CUI Нет ¶ TestUser1CUI МалютинЮН ¶ TestPass1CUI 11 ¶ TestPortUI 1538¶ TestProg1C C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe ¶ TestUrlExternAutomationUI http://localhost:8080¶ TestScreenShotUI Errors¶ TestReportNameUI report-60_DDT_Открытие форм справочников ¶ TestReportFormatUI AllureXML¶ TestDataDrivenUI Да¶ TestDataFileNameUI C:\Малютин\Автотесты на гит-сервере\DDT_DataFiles\ЗУП\Тест_ОткрытиеФормСправочников.mxl ¶ TestID DDT_Открытие_форм_справочников¶"

Во время выполнения текста ошибка не поменялась. image

ivanov660 commented 4 years ago

А под каким пользователем выполняется регламентное задание? image

Судя по картинке перезаписать справочник не удалось, там вроде защита стоит от несовпадения с гит.

uramalyutin commented 4 years ago

Под Администратором image

Поменял настройку каталога для библиотечных тестов для администратора и при выполнении тестов текст ошибки поменялся image

image

Строка запуска "C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe" /S "<сервер>/TestingTool" /N"QA-бот" /P"QA-бот" /DasableStartupMessages /DisableStartupDialogs /UseHwLisenses- ¶ /Execute "C:\Малютин\Автотесты на гит-сервере\МенеджерСценарногоТеста.epf" /LogUI /TESTMANAGER ¶ /C"¶ TestUI C:\Малютин\Автотесты на гит-сервере\UITests\ЗУП\DDT\DDT_TEST_Открытие форм справочников.xml ¶ TestLogUI C:\Отчеты_о_тестировании ¶ TestLibDirUI C:\Малютин\Автотесты на гит-сервере\krakozyabra_administrator ¶ TestConnectionStringUI <сервер>/HRMS_PRL¶ TestFileBase1CUI Нет ¶ TestUser1CUI МалютинЮН ¶ TestPass1CUI 11 ¶ TestPortUI 1538¶ TestProg1C C:\Program Files\1cv8\8.3.12.1790\bin\1cv8c.exe ¶ TestUrlExternAutomationUI http://localhost:8080¶ TestScreenShotUI Errors¶ TestReportNameUI report-61_DDT_Открытие форм справочников ¶ TestReportFormatUI AllureXML¶ TestDataDrivenUI Да¶ TestDataFileNameUI C:\Малютин\Автотесты на гит-сервере\DDT_DataFiles\ЗУП\Тест_ОткрытиеФормСправочников.mxl ¶ TestID DDT_Открытие_форм_справочников¶"

Да, в справочнике настройку пути к библиотеке сценариев "на что попало" не заменишь - новый каталог должен быть в каталоге GIT.

ivanov660 commented 4 years ago
  1. Проверьте для задания выполнения теста в регистре сведений ""Переменные заданий" (e1cib/list/РегистрСведений.ПеременныеЗаданий) наличие строки и именем переменной %ПутьККаталогуБиблиотекиСценариев%. Скорее всего она отсутствует. image Если отсутствует, тогда попробуйте выполнить следующую последовательность действий.

  2. Проверьте, что обработка конструктор сценарных тестов от версии не менее "2019.02.05".

  3. Проверьте, что у теста заполнен реквизит "путь к библиотеке ..."

  4. Откройте конструктором задание выполнения теста и перепройдите все шаги.

  5. По результату у вас в регистре сведений ""Переменные заданий" должна появиться строчка с именем переменной %ПутьККаталогуБиблиотекиСценариев%.

  6. После этого запуск тестов должен происходить корректно и путь должен появится корректный.

uramalyutin commented 4 years ago

Да, действительно такой переменной нет. image

В тесте путь к библиотеке заполнен image

Версия конструктора правильная image

Шаги конструктора прошел заново и переменная появилась image

Тест стал выполняться. image

Странно, что при первом создании задания эта переменная не заполнилась. Понаблюдаю за поведением при создании новых заданий.

ivanov660 commented 4 years ago
  1. В конструкторе стоит условие, логически не совсем корректное. Если при создании задания не указан путь к библиотеке сценария в тесте, то переменная добавляться не будет и будет использоваться типовой путь.
  2. Путь к каталогу библиотеки в тесты мы добавили по причине, что у нас по факту библиотек стало более одной и появились проблемы с запуском.
  3. Мы удалим это условие и, думаю, уберем использование пути к библиотеки из глобальных. Там останется только путь гит, т.к. все пути должны быть относительными.
  4. Мы в ближайшее время внесем исправления по результатам этой задаче об ошибках и сообщим вам.