Я сейчас тестирую HW & SW. Чтобы следовать нашему процессу, мне нужно подготовить «спецификацию тестового сценария» и «документы спецификации тестового набора» и на основе «спецификации тестового примера» подготовить сценарий / код тестирования для проверки HW и SW.
Пример спецификации тестового сценария:
Пример спецификации тестового примера:
Во время кодирования / тестирования я выяснил, что нам нужно обновить спецификации «тестового сценария» и «тестового случая». Это подвержено ошибкам. Другой момент заключается в том, что после обновления одного документа вы вынуждены обновить остальные документы.
Поэтому у меня возникла идея создать фреймворк, чтобы упростить мою жизнь и написать все на Python. В любом случае мне нужно комментировать свой код, поэтому я буду использовать исходный код, его комментарии, описание и т. Д. Для генерации документации.
Краткое описание архитектуры:
Класс Test Framework - содержит 0 - x тестовых сценариев
Класс сценария тестирования - содержит 0 - x контрольных примеров
Класс Test Case - содержит 0 - x шагов теста
Класс Test Step - этот класс представляет один шаг, который должен быть выполнен, как описано в спецификации тестового примера.
Я решил использовать класс для шага, так как мне нужно хранить информацию об ожидаемом результате + Мне нужно сохранять фактический результат после выполнения теста, и мне нужно иметь доступ к этим переменным для каждого шага.
Все элементы (Framework, сценарий, тестовый набор) должны быть неизменными и общими для каждого тестирования, однако «шаги теста», выполняемые для каждого тестового примера, различаются и добавляются в зависимости от потребностей и т. Д. Таким образом, этот код может быть рассматривается как код третьего лица / человека или около того, который не является частью структуры.
Вопрос в том, как спроектировать такую вещь? Код, который необходимо добавить.
Я придумал следующую архитектуру:
1) Используя construtor, создайте тестовый сценарий * 1037
2) вызвать метод добавления тестового примера
- этот метод требует / ожидает имя модуля
- пользователь создает новый модуль (новый file.py) для каждого теста
3) метод append с данным модулем импортирует модуль и считывает / сохраняет его внутренние компоненты - имя, описание, шаги.
4) Пользователь создает экземпляр Framework, который содержит методы для перебора всех зарегистрированных сценариев и тестовых случаев и автоматически запускает все тесты и т. Д.
5) Пользователь должен зарегистрировать сценарий.
Структура модуля:
name = "Undervoltage simulation during stop mode"
description = "This test verifies undervoltage during stop mode..."
#The user defines a single method for every step:
def step1(*args, **kwargs):
...
def step2(*args, **kwargs):
...
Фрагмент кода:
import tfw
import tscenario
import tcase
import tstep
test_setup = tfw.TestFramework()
ts1 = tscenario.TScenario('TS0003', 'Requirement1', 'WPT undervoltage simulation')
ts1.append_test_case('test_case_module_1')
ts2 = tscenario.TScenario('TS0004', 'Requirement2', 'WPT overvoltage simulation')
ts2.append_test_case('test_case_module_2')
test_setup.register_scenarios([ts1, ts2])
test_setup.generate_scenario_spec('C:/Test/wch65w_test_scenario_spec.xlsx')
test_setup.generate_test_case_spec('C:/Test/wch65w_test_case_spec.xlsx')
test_setup.execute()
Все работает, как и ожидалось, однако у меня нет хорошего представления о дизайне - это правильный способ сделать это.
Я не буду беспокоить пользователя такими вещами, как создание объекта «Шаг теста» для каждого шага, который вы хотите выполнить, помещение его в список, это ваш ввод в метод append_test_case () и т. Д. Я хотел бы отвлечь пользователя от этих вещей.
Однако это единственное, что я придумал. Я также новичок в Python, поэтому у меня мало опыта работы со всеми концепциями, которые предлагает Python.
Спасибо за ваши подсказки и идеи.