💀
Второй курс РПО
Разработка программных модулей
Разработка программных модулей
  • Модели разработки
  • Ошибки и отладка программ
  • Средства разработки алгоритмов
    • Основные принципы и стадии тестирования
  • Сложностные классы
  • Эмуляторы операционных систем
  • Сложность сортировки
  • Уровни тестирования
  • Задание №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
  • Определение
  • Основные этапы тестирования
  • Техники тестирования
  • Пример кода с комментариями
  • Создание тестов
  • Объяснение
  • Пример тестирования цикла
  • Создание тестов
  • Объяснение

Тестирование «белым ящиком»

18.11.2024

PreviousРегрессионное тестированиеNextКак делать оценку сложности?

Last updated 6 months ago

Определение

Тестирование "белым ящиком" (White-box testing) — метод тестирования, при котором тестировщик знает внутреннюю структуру программы. Цель — проверить корректность работы программы на основе анализа её кода.

Линковщик: программа, объединяющая объектный код и зависимости в итоговый исполняемый файл (.EXE).

Тестирование "" проверяет внутреннюю реализацию, но не заменяет тестирование "".


Основные этапы тестирования


Техники тестирования

Техника
Описание

Анализ путей

Проверка всех возможных маршрутов выполнения программы.

Покрытие кода

Гарантия, что все строки кода были выполнены хотя бы раз.

Покрытие ветвей

Проверка всех возможных условий (if/else, switch).

Покрытие условий

Тестирование всех комбинаций логических условий.

Покрытие циклов

Проверка поведения циклов при разном количестве итераций.


Пример кода с комментариями

Рассмотрим функцию, которая вычисляет максимум из двух чисел:

// Функция для нахождения максимального числа
int max(int a, int b) {
    if (a > b) // Проверяем, больше ли a, чем b
        return a; // Если да, возвращаем a
    else
        return b; // Иначе возвращаем b
}

Создание тестов

Для этой функции составим следующие тесты:

#include <cassert> // Для проверки утверждений

int main() {
    // Тест 1: a меньше b
    assert(max(5, 10) == 10); // Ожидаемый результат: 10

    // Тест 2: a больше b
    assert(max(10, 5) == 10); // Ожидаемый результат: 10

    // Тест 3: a равно b
    assert(max(10, 10) == 10); // Ожидаемый результат: 10

    return 0; // Успешное завершение программы
}

Объяснение

  1. assert — проверяет условие. Если оно ложно, программа завершится с ошибкой.

  2. В каждом тесте проверяется выполнение определённой ветви if или else.

  3. Все граничные случаи (a > b, a < b, a == b) протестированы.


Пример тестирования цикла

Функция для подсчёта суммы чисел от 1 до n:

// Функция для подсчёта суммы от 1 до n
int sum(int n) {
    int result = 0; // Инициализация результата
    for (int i = 1; i <= n; i++) { // Цикл от 1 до n
        result += i; // Прибавляем текущее число
    }
    return result; // Возвращаем итоговую сумму
}

Используйте автоматизацию для проверки покрытия кода.

Создание тестов

#include <cassert>

int main() {
    // Тест 1: сумма от 1 до 5
    assert(sum(5) == 15); // Ожидаемый результат: 1+2+3+4+5=15

    // Тест 2: сумма от 1 до 0
    assert(sum(0) == 0); // Ожидаемый результат: 0

    // Тест 3: сумма от 1 до 1
    assert(sum(1) == 1); // Ожидаемый результат: 1

    return 0;
}

Объяснение

  • В тестах проверяются:

    1. Нормальная работа цикла (n > 1).

    2. Граничное значение (n = 0).

    3. Единичный случай (n = 1).