💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №1
  • Регрессионное тестирование
  • Тестирование «белым ящиком»
  • Как делать оценку сложности?
  • Алгоритмы и сложность
  • Тестирование "белым ящиком" №2
  • Сложность алгоритмов
  • Тестирование "белым ящиком" №3
  • Тестирование "Чёрным ящиком»" №1
  • Тестирование "Черным ящиком" №2
  • Оценка сложности эвристических алгоритмов
  • Принципы ООП
  • Тестирование "Черным ящиком" №3
  • КТ - В3
  • Модульное тестирование
    • С кодами
  • Модульное тестирование
  • Абстрактные классы и интерфейсы в Python
  • Структуры в Python по аналогии с C++
    • Диалоги гениев
  • Делегаты в Python
    • Ещё более не смешные диалоги
  • Регулярные выражения в Python от простого к сложному
  • Python: Коллекции
  • Параметризованные классы (шаблоны)
  • Указатели и операции со списками в Python
  • Интеграционное тестирование
  • Работа с классами. Перегрузка методов
  • Определение операций в классе.
  • Создание наследованных классов
  • Интеграционное тестирование
  • Работа с объектами через интерфейсы
  • Использование стандартных интерфейсов
  • Работа с типом данных "Структура"
  • Коллекции. Параметризованные классы
  • Использование регулярных выражений
  • Операции со списками
  • Что такое паттерны проектирования?
  • Шпаргалка по шаблонам проектирования
    • [Habr] Шпаргалка
  • UML-диаграммы проектирования
  • Использование основных шаблонов.
  • Использование каких то там шаблонов
  • 15-я Практическая
  • 16-я Практическая
  • Graphviz Online
  • 17-я Практическая
  • Введение в теорию программирования: Объектно-ориентированный подход
  • Документирование софта и стандарты
  • C# Ввод и вывод
  • Оптимизация кода: просто о главном
  • Автоматизация разработки технической документации
  • Автоматизированное документирование и первичные данные
  • ADO.NET что это?
Powered by GitBook
On this page
  • Пример 1: Работа с магазином товаров
  • Код
  • Тестирование
  • Пример 2: Учет студентов
  • Код
  • Тестирование
  • Пример 3: Калькулятор с журналом операций
  • Код
  • Тестирование
  • Ожидаемый вывод
  • Итог

Интеграционное тестирование

27.01.2025 - Практическая работа №30 Интеграционное тестирование

Пример 1: Работа с магазином товаров

Код

# Модуль хранения данных
class Storage:
    def __init__(self):
        self.items = {}  # Храним товары

    def add_item(self, name, count):
        self.items[name] = self.items.get(name, 0) + count

    def get_item(self, name):
        return self.items.get(name, 0)

# Модуль магазина
class Shop:
    def __init__(self, storage):
        self.storage = storage

    def buy_item(self, name, count):
        if self.storage.get_item(name) >= count:
            self.storage.items[name] -= count
            return f"Куплено: {count} {name}."
        return f"{name} недостаточно."

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

s = Storage()
s.add_item("яблоки", 10)  # Добавляем в хранилище 10 яблок

shop = Shop(s)
print(shop.buy_item("яблоки", 5))  # Ожидаем: "Куплено: 5 яблоки."
print(shop.buy_item("яблоки", 10))  # Ожидаем: "яблоки недостаточно."

Пример 2: Учет студентов

Код

# Модуль для хранения студентов
class StudentDatabase:
    def __init__(self):
        self.students = {}  # Храним ID студентов и их имена

    def add_student(self, id, name):
        self.students[id] = name

    def get_student(self, id):
        return self.students.get(id, None)

# Модуль обработки студентов
class StudentManager:
    def __init__(self, db):
        self.db = db

    def register_student(self, id, name):
        if id in self.db.students:
            return f"Студент с ID {id} уже существует."
        self.db.add_student(id, name)
        return f"Студент {name} зарегистрирован."

    def find_student(self, id):
        student = self.db.get_student(id)
        return student if student else f"Студент с ID {id} не найден."

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

db = StudentDatabase()
manager = StudentManager(db)

print(manager.register_student(1, "Иван"))  # Ожидаем: "Студент Иван зарегистрирован."
print(manager.register_student(1, "Анна"))  # Ожидаем: "Студент с ID 1 уже существует."
print(manager.find_student(1))  # Ожидаем: "Иван"
print(manager.find_student(2))  # Ожидаем: "Студент с ID 2 не найден."

Пример 3: Калькулятор с журналом операций

Код

# Модуль калькулятора
class Calculator:
    def add(self, a, b):
        return a + b

    def subtract(self, a, b):
        return a - b

# Модуль для ведения журнала
class Logger:
    def __init__(self):
        self.logs = []  # Список для хранения операций

    def log(self, operation):
        self.logs.append(operation)

    def get_logs(self):
        return self.logs

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

calc = Calculator()
logger = Logger()

result1 = calc.add(3, 5)
logger.log(f"3 + 5 = {result1}")

result2 = calc.subtract(10, 4)
logger.log(f"10 - 4 = {result2}")

print("Результаты операций:")
for log in logger.get_logs():
    print(log)

Ожидаемый вывод

Результаты операций:
3 + 5 = 8
10 - 4 = 6

Итог

  1. Пример 1: Проверяет взаимодействие склада и магазина.

  2. Пример 2: Показывает регистрацию и поиск студентов.

  3. Пример 3: Демонстрирует ведение журнала операций калькулятора.

PreviousСоздание наследованных классовNextРабота с объектами через интерфейсы

Last updated 4 months ago