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

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
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose