Тестирование потока данных технологии «белого ящика»
Тестирование потока данных технологии «белого ящика»

DAY5

21

2024-01

Нажмите на синий текст выше“один серьезный тест“сосредоточиться най,каждое утро08:30Не торопитесь,Нерегулярно каждый месяцБесплатные технические книги

Ответ серверной части общедоступной учетной записи WeChat“Основы тестирования программного обеспечения”、“Резюме и собеседование”Ожидание коллекциитестресурс,отвечать“Группа общения WeChat”、“внутренняя группа”один Присоединяйтесь к группе и ловите рыбу в воде.。

Пятизвездочный генерал Макартур однажды сказал: «Если вы не умеете писать автоматические тесты, вы плохой разработчик».

один

Давайте расскажем историю

Сегодня я поругался со своей девушкой (при условии, что у тебя есть девушка).

Сегодня вечером я снова сплю один на диване.,этим вечером,ты лежишь на диване,Не могу спать по ночам

Потому что вы не нашли проблему в этом коде

Язык кода:javascript
копировать
def compute_square_root(x):
    x = x ** 0.5 # Вычислите квадратный корень из x и присвойте его значению x.
    return x

x = 9 # Определение переменнаяx
печать (compute_square_root (x)) # На выходе будет 3.0
print(x) # Результат будет 9

Я собираюсь научиться скачивать фильмы ——Тестирование технологии потока данных в «белый ящик»

Предисловие

Что такое тестирование потока данных:

Это один из видов структурных тестов. Это метод поиска пути к программному тесту, основанный на определении переменной в программе и использовании ее местоположения. Это не имеет никакого отношения к диаграмме процесса потока данных. Кроме того, он охватывает:

  • переменнаяполучение ценностизаявление,
  • Заявления, которые используют или ссылаются на эти значения.

Чтобы проиллюстрировать поток Метод данныхтест предполагает, что каждому оператору в программе присвоен уникальный номер оператора. Для заявления №. S-

Язык кода:javascript
копировать
DEF(S) = {X | заявление S Включать X Определение} 
USE(S) = {X | заявление S Включать X Использовать}

Если оператор представляет собой цикл или условие if, его набор DEF пуст, а набор USE основан на условии оператора. Тестирование потока данных использует графы потока управления для обнаружения ситуаций, которые могут прервать выполнение программы. Обнаруживайте ссылки в потоке данных или определяйте исключения при корреляции между значениями и переменными. Эти аномалии следующие:

  • переменная определена, но не используется и не упоминается,
  • переменная используется, но никогда не определяется,
  • переменная определяется дважды перед использованием

Например, давайте рассмотрим простой фрагмент кода Python, чтобы понять этот момент.

Язык кода:javascript
копировать
def example(a):
    b = a + 2 # В этот момент b определяется
    return b*2

x = example(5)
print(x) # x используется в этот момент

В этом коде есть два пакета потока данных:

  • 'a' определяется как параметр функции example,Использование является одной из частей расчета b.
  • Определение 'b' находится в Functionexample, а использование – в возвращаемом значении. Предполагая, что между определением «b» и использованием «b» есть больше кода или логики, нам необходимо убедиться, что значение «b» не изменилось между этими двумя точками. Это поток Важность данныхтест.

Непрерывное тестирование этих путей «определить и использовать» может помочь нам раньше обнаружить возможные логические ошибки, тем самым улучшая качество и надежность программы.

Примеры типов тестов потока данных:

  1. All-Du-Paths тест:фокуссосредоточиться на «Все определения используют путь». All-Du-Paths Это аббревиатура от «все определения используют путь». Используя этот метод, можно протестировать каждый возможный путь от определения переменной до каждой точки использования.
  2. Тест узлов предикатов полного пути. Этот метод фокусируется на узлах предикатов или точках принятия решений в графе потока управления.
  3. Универсальный тестовый тест: этот тип проверяет прикладную программу на предмет каждого места, где используется переменная.
  4. Тест полного определения: этот тип теста проверяет каждую позицию в коде прикладной программы, где указана переменная.
  5. Тест All-P-Uses: All-P-Uses означает «все возможные виды использования». Используя этот метод, можно реализовать любое потенциальное использование переменной теста.
  6. Тест All-C-Uses: означает «все виды использования компьютеров». тест Всевозможный путь использования переменной в расчетах или расчетах – это основная цель этой технологии.
  7. Тест All-I-Uses: All-I-Uses означает «все виды использования входных данных». Используя этот метод, каждый путь переменной можно использовать с использованием внешнего ввода.
  8. All O использует: означает «все выходные использования». Используя этот метод, вы должны использовать переменную для каждого пути, который производит выходные данные.
  9. Пара тестов «Определение-Использование». Он фокусируется на конкретной паре определения и использования переменной.
  10. использование определенного пути: этот тип теста проверяет путь от точки использования переменной до ее определенного пути.

Приведите пример:

Язык кода:javascript
копировать
1. Прочитайте х, у;
2. if(x>y)
 3. a = x+1 
else 
4. a = y-1
 5.Печать a;

Блок-схема выглядит следующим образом:

Определение/использование переменных в приведенном выше примере:

Что делает тестирование потока данных?:

Когда мы пишем или поддерживаем программу,Крайне важно понимать и проверять изменения в переменной в течение ее жизненного цикла.,Причины заключаются в следующем:

  1. Во избежание ошибок: если одинпеременная не инициализирована и не определена должным образом перед использованием.,Тогда программа может дать сбой или вести себя неожиданно. Например,В Python, если вы ссылаетесь на него перед Allocateпеременная,Вызовет ошибку NameError.
  2. точность: Убедитесь, что одинпеременная соответствует ожидаемому потоку. данных Модель,Помогает поддерживать точность программы. Например,Если у вас сложный алгоритм, генерирующий новые значения,и хотите сохранить результаты в однопеременной,Прежде чем определять новое значение, вам необходимо убедиться, что переменная не была ошибочно изменена другими частями кода.
  3. Качество и читаемость кода: отслеживая весь жизненный цикл переменной.,Можете лучше понять, как работает код. Это также помогает поддерживать и оптимизировать код.,Потому что понимание того, когда и как меняется программа, может помочь найти области, которые можно улучшить или реорганизовать.
  4. Оптимизация производительности: Постоянный мониторинг переменной может помочь выявить потенциальные проблемы с производительностью. Например,Если однапеременная постоянно перераспределяется или ее значение часто копируется и передается,Тогда это может быть местом, вызывающим узкие места в производительности.
  5. Безопасность: В сфере безопасности важно знать, когда и как меняется информация, особенно когда речь идет о конфиденциальной информации (например, учетных данных пользователя). Если злоумышленник может манипулировать или предсказывать поведение злоумышленника, он может этим воспользоваться.

Давайте вернемся к примеру, который мы привели вначале, и объясним, почему нам нужно проверять, как изменяются переменные программы в течение ее жизни.

Язык кода:javascript
копировать
def compute_square_root(x):
    x = x ** 0.5 # Вычислите квадратный корень из x и присвойте его значению x.
    return x

x = 9 # Определение переменнаяx
печать (compute_square_root (x)) # На выходе будет 3.0
print(x) # Результат будет 9

В этом примере,У нас есть одна функция с именем Compute_square_root.,Функция принимает один параметр x,и вычислить его квадратный корень,Затем переназначьте результат на x,Наконец верните этот результат. Основная функция середина,Мы устанавливаем значение x равным 9,Затем вызовите функцию Compute_square_root.

Следует отметить, что хотя мы и переназначаем x в функции Compute_square_root, это не повлияет на переменную x в основной функции. Это связано с тем, что переменные внутри функции Python являются локальными; то есть они существуют только на протяжении всего времени существования функции, и изменения в них не влияют на одноимённые переменные вне функции. Это понимание достигается путем изучения изменений переменной в течение ее жизненного цикла.

Предположим, мы ошибочно ожидаем, что функция Compute_square_root изменит значение x в основной функции, тогда мы можем получить неверные результаты и вызвать ошибки программы, что подчеркивает важность понимания и проверки изменений переменных в течение их жизненного цикла.

Подвести итог

Преимущества тестирования потока данных

Тестирование потока данных используется для обнаружения следующих проблем:

  • Чтобы найти использованную, но никогда не определённую переменную,
  • Чтобы найти определенную, но никогда не используемую переменную,
  • Чтобы найти переменную, определенную несколько раз перед использованием,
  • Отпустите его перед использованием переменной.

Недостатки тестирования потока данных

  • Трудоемкий и дорогостоящий процесс
  • Требуется знание языка программирования

Вышеизложенное — это весь контент на сегодня. Надеюсь, он будет полезен всем. Я также надеюсь, что все будут оставлять больше комментариев, ставить лайки, смотреть и пересылать «Четыре любви подряд» для поддержки. Увидимся в следующей статье, пока~👋

boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода