Навыки тестирования с помощью моделей МВТ
Автор: houz • Май 4, 2023 • Контрольная работа • 878 Слов (4 Страниц) • 201 Просмотры
СОДЕРЖАНИЕ
Цель работы 3
Ход работы 3
Выводы 9
Цель работы
Получить первоначальные навыки тестирования с помощью моделей МВТ.
Постановка задачи
- Выбрать поведенческую систему (это может быть приложение с логикой в виде состояний, взаимодействующие системы, диалоговые системы с несколькими режимами работы). Нельзя использовать стек и дек (примеры из Интернета).
- Создать модель в виде упрощенной реализации на Python.
- Сгенерировать тесты по модели.
- Добавить функционал и проверить, что тесты проходят корректно.
Ход работы
Модель – это упрощённое представление чего-либо (а нашем случае – работы программы). В качестве поведенческой системы был выбран цифровой автомат. Необходимо реализовать конечный автомат Мили в виде класса. Начальным состоянием автомата является A. Методы возвращают числовые значения. Если вызываемый метод не реализован для некоторого состояния, необходимо вызвать исключение KeyError.
Модель реализуемого автомата в виде графа (рисунок 1).
[pic 1]
Рисунок 1 – Модель реализуемого автомата в виде графа У представленного цифрового автомата есть 3 метода: etch(), debug(), model(). Реализация класса цифрового автомата представлена на листинге 1.
Листинг 1. Реализация конечного автомата
class main(): now_letter = 'A'
blame_dir = { 'A': '0B', 'B': '3E', 'E': '6F', } view_dir = { 'A': '1C', 'B': '2C', 'C': '4D', 'D': '5E', 'E': '7C' } drag_dir = { 'F': '8A', } def blame(self): tmp_blame = self.now_letter if self.blame_dir.get(tmp_blame, "KeyError")[1] != "e": self.now_letter = self.blame_dir.get(tmp_blame, "KeyError")[1] return int((self.blame_dir.get(tmp_blame)[0])) else: return KeyError def view(self): tmp_view = self.now_letter if self.view_dir.get(tmp_view, "KeyError")[1] != "e": self.now_letter = self.view_dir.get(tmp_view, "KeyError")[1] return int((self.view_dir.get(tmp_view)[0])) else: return KeyError def drag(self): |
tmp_drag = self.now_letter if self.drag_dir.get(tmp_drag, "KeyError")[1] != "e": self.now_letter = self.drag_dir.get(tmp_drag, "KeyError")[1] return int((self.drag_dir.get(tmp_drag)[0])) else: return KeyError |
...