7. Модульное и интеграционное тестирование - pipichaan/Financial-accounting GitHub Wiki

Модульное тестирование

В данном проекте в качестве модульного тестирования используется специальные блоки и кода и вывод сообщения об ошибке. Для примера разбор блок кода private void LoginBtn_Click(object sender, EventArgs e).

Код:

     if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
         throw new FormatException();
           
     User user = User.GetUser(username, password);
            
     if (user == null)
         MessageBox.Show("Неверный ввод! Попробуйте еще раз!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Error);
            
     else
     {
         MessageBox.Show($"Добро пожаловать! {user.FirstName} {user.LastName}!", "ЭЭЭЭЭЭЭ о да", MessageBoxButtons.OK, MessageBoxIcon.Information);
         this.Hide();
         Homepage homepage = new Homepage(user);
         homepage.ShowDialog();
         homepage = null;
         this.Show();
                
         usernameTxt.Clear();
         passwordTxt.Clear();
     }
 }
 catch (FormatException)
 {
     MessageBox.Show("Все поля ввода не могут быть пустыми! Попробуйте еще раз!", "Ошибка ввода", MessageBoxButtons.OK, MessageBoxIcon.Error);
 }

Блок try-catch в методе LoginBtn_Click используется для отлова и обработки исключений, которые могут возникнуть при выполнении кода. В данном случае он перехватывает ошибки, связанные с некорректным вводом данных, и выводит пользователю понятные сообщения об ошибках.

  • try — блок, в котором выполняется основной код. Если здесь происходит ошибка, управление передается в catch.
  • catch (FormatException) — перехватывает только исключение типа FormatException (которое было выброшено при пустых полях ввода).

Когда возникает?

  • Если username или password пустые (string.IsNullOrWhiteSpace вернул true).
  • Выбрасывается явно через throw new FormatException().

Как обрабатывается?

  • Показывается сообщение: "Все поля ввода не могут быть пустыми! Попробуйте еще раз!"

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

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

Чтобы последовательно и безошибочно тестировать программу, необходимо составить тестовый граф.

граф программы

Вершины тестового графа:

  • 1: Окно авторизации
  • 2: Окно регистрации
  • 3: Окно подтверждения почты
  • 4: Окно "Бюджет"
  • 5: Окно диаграммы "Доход-Расход-Остаток"
  • 6: Окно диаграммы "Траты по категориям"
  • 7: Окно добавления транзакции
  • 8: Окно редактирования/удаления транзакции
  • 9: Выход из программы

Тестовые пути

  • 1: 1-2-3-4-5-4-9
  • 2: 1-2-3-4-6-4-9
  • 3: 1-2-3-4-7-8-4-9
  • 4: 1-4-7-4-8-4-9
  • 5: 1-4-5-4-9
  • 6: 1-4-6-4-9

Таблица тестовых путей

ID Тестовый путь Цель Результат
1 T1 Тестирование регистрации нового пользователяТестирование взаимодействия модулей перехода форм Успешная регистрацияУспешный переход на другую форму
2 T2 Тестирование регистрации нового пользователяТестирование взаимодействия модулей перехода форм Успешная регистрацияУспешный переход на другую форму
3 T3 Тестирование регистрации нового пользователяТестирование взаимодействия модулей перехода формТестирование добавления данных в базу данныхТестирование редактирования данных в базе данных Успешная регистрацияУспешный переход на другую формуУспешное сохранение данных в базу данных
4 T4 Тестирование авторизации пользователяТестирование взаимодействия модулей перехода формТестирование добавления данных в базу данныхТестирование редактирования данных в базе данных Успешная авторизацияУспешный переход на другую формуУспешное сохранение данных в базу данных
5 T5 Тестирование авторизации пользователяТестирование взаимодействия модулей перехода форм Успешная авторизацияУспешный переход на другую форму
6 T6 Тестирование авторизации пользователяТестирование взаимодействия модулей перехода форм Успешная авторизацияУспешный переход на другую форму

Таблица 1 - тест-кейсы окна авторизации*

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Войти» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «У вас нет аккаунта?» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
3 Ввод данных:Логин: PipichanПароль: 00000000 Тестирование проверки корректности данных Тестирование модуля проверки корректности Успешный ввод, вывод сообщения об успехе Успешный ввод, вывод сообщения об успехе
4 Ввод данных:Логин: pipichanПароль: пустой ввод Тестирование проверки корректности данных Тестирование модуля проверки корректности Вывод сообщения об ошибке Вывод сообщения об ошибке
5 Ввод данных:Логин: пустой вводПароль: 00000000 Тестирование проверки корректности данных Тестирование модуля проверки корректности Вывод сообщения об ошибке Вывод сообщения об ошибке
6 Ввод данных:Пустой ввод Тестирование проверки корректности данных Тестирование модуля проверки корректности Вывод сообщения об ошибке Вывод сообщения об ошибке

Успешный вход:

image

Ввод логина без пароля:

image

Ввод пароля без логина:

image

Пустой ввод:

image

Таблица 2 - тест-кейсы для окна регистрации

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Зарегистрироваться» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «У вас уже есть аккаунта?» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
3 Ввод данных:Логин: PipichanПочта: [email protected]Пароль: 00000000Имя: АлинаФамилия: Широкова Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Успешный ввод, вывод сообщения об успехе, переход Успешный ввод, вывод сообщения об успехе, переход
4 Ввод данных:Логин: PipichanПочта: [email protected]Пароль: 00000000Имя: АлинаФамилия: Пустой ввод Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
5 Ввод данных:Логин: PipichanПочта: Пустой вводПароль: 00000000Имя: АлинаФамилия: Широкова Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
6 Ввод данных:Логин: PipichanПочта: [email protected]Пароль: пустой вводИмя: АлинаФамилия: Широкова Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
7 Ввод данных:Логин: Пустой вводПочта: [email protected]Пароль: 00000000Имя: АлинаФамилия: Широкова Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
8 Ввод данных:Логин: pipichanПочта: [email protected]Пароль: 00000000Имя: Пустой вводФамилия: Широкова Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
9 Ввод данных:Логин: userПочта: [email protected] (для нового аккаунта вводится одна и та же почта)Пароль: userИмя: userФамилия: user Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке
10 Ввод данных:Логин: userПочта: [email protected]Пароль: user (пароль должен быть более 8 символов)Имя: userФамилия: user Тестирование проверки корректности данных.Тестирование открытия страницы Тестирование модуля проверки корректности.Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке

Корректный ввод данных:

image

Ввод данных без фамилии:

image

Ввод всех данных без почты:

image

Ввод всех данных без пароля:

image

Ввод всех данных без логина:

image

Ввод всех данных без имени:

image

Ввод почты несколько раз:

image

Ввод пароля, который состоит менее чем из 8 символов:

image

Таблица 3 - тест-кейсы окна подтверждения почты

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Зарегистрироваться» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «Отправить код еще раз?» Тестирование повторения операции отправки кода Тестирование модуля отправки кода Код отправлен на почту повторно Код отправлен на почту повторно
3 Нажатие кнопки «У вас нет аккаунта?» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
4 Ввод данных: 1 3 6 4 (правильный код) Тестирование проверки корректности данных Тестирование модуля проверки корректности Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
5 Ввод данных: 1 7 6 4 (неправильный код) Тестирование проверки корректности данных. Тестирование открытия страницы Тестирование модуля проверки корректности. Тестирование модуля открытия страницы Вывод сообщения об ошибке Вывод сообщения об ошибке

Ввод правильного кода:

image

Ввод неправильного кода:

image

Таблица 4 - тест-кейсы для окна "Бюджет"

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Добавить» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «Доход-Расход-Остаток» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
3 Нажатие кнопки «Траты по категориям» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
4 Нажатие на запись Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
5 Нажатие на календарь Тестирование открытия окна Тестирование модуля открытия окна Открытие окна календаря Открытие окна календаря

Появление окна календаря:

image

Таблица 5 - тест-кейсы для окна добавления транзакций

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Отмена» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «Сохранить» Тестирование открытия страницы, сохранения данных в базу данных Тестирование модуля открытия страницы, сохранения данных в базу данных Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу
3 Ввод данных:Номинал: 100Тип транзакции: ДоходКатегория: пустой вводДата: 04.06.2025Заметки: ляляля Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
4 Ввод данных:Номинал: 100Тип транзакции: ДоходКатегория: пустой вводДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
5 Ввод данных:Номинал: 100Тип транзакции: РасходКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
6 Ввод данных:Номинал: 100Тип транзакции: РасходКатегория: Пустой вводДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
7 Ввод данных:Номинал: пустой вводТип транзакции: РасходКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
8 Ввод данных:Номинал: 100Тип транзакции: Пустой вводКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
9 Ввод данных:Пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке

Корректный ввод данных:

image

Корректный ввод данных:

image

Ввод всех данных без категории:

image

Ввод всех данных без номинала:

image

Ввод всех данных без типа транзакций:

image

Пустой ввод данных:

image

Таблица 6 - тест-кейсы для редактирования/удаления транзакций

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие кнопки «Отмена» Тестирование открытия страницы Тестирование модуля открытия страницы Переход на другую страницу Переход на другую страницу
2 Нажатие кнопки «Сохранить» Тестирование открытия страницы, сохранения данных в базу данных Тестирование модуля открытия страницы, сохранения данных в базу данных Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу
3 Нажатие кнопки «Удалить» Тестирование открытия страницы, сохранения данных в базу данных Тестирование модуля открытия страницы, сохранения данных в базу данных Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу Успешное сохранение данных в БД, вывод сообщения об успехе, переход на другую страницу
4 Ввод данных:Номинал: 100Тип транзакции: ДоходКатегория: пустой вводДата: 04.06.2025Заметки: ляляля Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
5 Ввод данных:Номинал: 100Тип транзакции: ДоходКатегория: пустой вводДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
6 Ввод данных:Номинал: 100Тип транзакции: РасходКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Успешный ввод, вывод сообщения об успехе, переход на другую страницу Успешный ввод, вывод сообщения об успехе, переход на другую страницу
7 Ввод данных:Номинал: 100Тип транзакции: РасходКатегория: Пустой вводДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
8 Ввод данных:Номинал: пустой вводТип транзакции: РасходКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
9 Ввод данных:Номинал: 100Тип транзакции: Пустой вводКатегория: ЗдоровьеДата: 04.06.2025Заметки: пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке
10 Ввод данных:Пустой ввод Тестирование проверки корректности данных, сохранения данных в базу данных Тестирование модуля проверки корректности, сохранения данных в базу данных Вывод сообщения об ошибке Вывод сообщения об ошибке

Удаление транзакции:

image

Ввод данных без категории и типа транзакций:

image

Корректный ввод данных:

image

Ввод данных без номинала:

image

Пустой ввод:

image

Таблица 7 - тест-кейсы для окна "Доходы-Расходы-Остаток"

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие на календарь Тестирование открытия окна Тестирование модуля открытия окна Открытие окна календаря Открытие окна календаря

Появление окна календаря:

image

**Таблица 8 - тест-кейсы для окна "Траты по категориям"

ID Исходные данные Цель Описание Ожидаемый результат Результат
1 Нажатие на календарь Тестирование открытия окна Тестирование модуля открытия окна Открытие окна календаря Открытие окна календаря

image