Пример разработки тестового примера метода разделения классов эквивалентности «предлагаемая коллекция»
Пример разработки тестового примера метода разделения классов эквивалентности «предлагаемая коллекция»

1. Основные понятия Класс эквивалентности — это подмножество входной области программы. Разделение классов эквивалентности (Equivalence Partitioning)тестмысли:Разделите входную область программы на несколько областей.(Класс эквивалентности),и в каждом Класс эквивалентности Выберите репрезентативный элемент для созданиятествариант использования。Этот метод представляет собой широко используемый метод «черного ящика».(Blackbox Testing)тествариант использования(Testcase)дизайнметод。 1) Разделить классы эквивалентности 1. Действительные классы эквивалентности и недействительные классы эквивалентности. Разделение классов эквивалентности может иметь две различные ситуации: действительное классы эквивалентностии Неверный класс эквивалентности。действительные классы эквивалентностиозначает, что это разумно для спецификации программы、Коллекция значимых входных данных,он можетПроверьте, может ли программа достичь функциональных требований, указанных в спецификации.Неверный класс эквивалентностиНабор входных данных, для которого спецификация программы необоснованна или бессмысленна.,он можетПроверьте, не возникнет ли отклонений при вводе данных, не соответствующих правилам.;Неверный класс эквивалентности Должен быть хотя бы один,Может быть несколько,Это зависит от конкретной ситуации。Следовательно, при разработке тестовых примеров следует учитывать оба класса эквивалентности одновременно.Потому что программное обеспечение должно не только получать разумные данные,Оно также должно быть способным выдерживать неожиданные тесты, чтобы обеспечить более высокую надежность программного обеспечения. 2. Критерии разделения классов эквивалентности Завершите тестирование и избегайте дублирования., чтобы набор (входная область программы) был разделен на набор непересекающихся подмножеств, а объединение этих подмножеств составляло бы полное множество (вся входная область программы). 3. Принцип разделения классов эквивалентности (1) Если входное условие указывает диапазон значений или количество значений, его можно разделить на один действительный класс эквивалентности и два недопустимых класса эквивалентности; Например, установите индикаторы контроля риска, где диапазон установки веса составляет [-1000,1000].

(2) Если входное условие является логическим выражением, его можно разделить на действительный класс эквивалентности и недопустимый класс эквивалентности, состоящий из одного истинного и одного ложного; Например, установите информацию о продукте, если требуется доля продукта.

(3) Если указаны принципы, которым должны соответствовать входные данные, их можно разделить на действительный класс эквивалентности (соответствующий правилам) и несколько недействительных классов эквивалентности; Например, начальный капитал системы можно вводить только в цифрах.

(4) Если входные данные должны соответствовать только определенным принципам, может быть несколько действительных классов и несколько недействительных эквивалентных классов; Например, в качестве пароля для входа в торговый аккаунт можно вводить только цифры, буквы и некоторые специальные символы. Нельзя вводить одинарные/двойные кавычки, а также китайские символы.

Примечание. Объединение недопустимых классов эквивалентности, соответствующее каждому допустимому классу эквивалентности, представляет собой набор данных, который не соответствует принципу ввода. (5) Если задан набор значений входных данных (при условии, что n) и программа обрабатывает разные входные значения по-разному, его можно разделить на n допустимых классов эквивалентности (каждое разрешенное входное значение является допустимым классом эквивалентности). class) и недопустимый класс эквивалентности (набор всех запрещенных входных значений). Например, при настройке счета операций с капиталом вы должны выбрать, проверять ли самостоятельные транзакции.

Например, входные условия предусматривают, что академическая квалификация может быть одного из четырех типов: степень бакалавра, магистра или доктора.

(6)зная наверняка, что оно разделено Класс эквивалентности Каждый элемент программыОбрабатывается по-другомуслучай,тогда Класс эквивалентностидальшеразделениедляменьше Класс эквивалентности。 2) Этапы разработки тестового примера (1) После разделения классов эквивалентности составьте таблицу классов эквивалентности и укажите уникальный номер для каждого класса эквивалентности; (2) Разработайте тестовый пример, чтобы охватить как можно больше допустимых классов эквивалентности, которые еще не были охвачены, и повторяйте этот шаг до тех пор, пока не будут охвачены все допустимые классы эквивалентности; (3) Разработайте новый тестовый пример так, чтобы он охватывал только один недействительный класс эквивалентности, который еще не был охвачен, и повторяйте этот шаг до тех пор, пока не будут охвачены все недопустимые классы эквивалентности. (Поскольку покрытие недопустимых классов эквивалентности одним тестовым примером связано с тем, что некоторые конкретные ошибки ввода маскируют или заменяют другие проверки ошибок ввода)

2. Упражнения 1) Эквивалентные тестовые примеры для задач о треугольнике [Описание проблемы] Требования к программе: Введите три целых числа. a 、 b 、 c В зависимости от длин трех сторон треугольника тип образуемого треугольника определяется программой; если треугольник представляет собой общий треугольник, равнобедренный треугольник или равносторонний треугольник, то …иметь дело с 。 <Анализ проблемы> (1) Явные/неявные требования к диапазону входных данных: A Целое число, Б Три, С Положительное число, Д Сумма обеих сторон больше третьей стороны, E Все три стороны не равны, F Две стороны равны, но не равны третьей стороне, G Три стороны равны (D~G неявно определяются классом эквивалентности выходного диапазона) (2) Классы эквивалентности диапазона выходных значений: R1={не образует треугольника}, R2={общий треугольник}, R3={равнобедренный треугольник}, R4={равносторонний треугольник}; <Часто задаваемые вопросы> (1) Список и классы нумерации эквивалентности

(2) Разработайте тестовые примеры, охватывающие допустимые классы эквивалентности.

(3) Разработайте тестовые примеры, охватывающие недопустимые классы эквивалентности.

2) Эквивалентные тестовые примеры для функции NextDate [Описание проблемы]Следующая дата Функция содержит три переменные: месяц 、 day и year , выходные данные функции — это дата на следующий день после входной даты. Например, вход март 2006 г. 7 дней, то результат функции будет март 2006 г.8-й . Запросить входные переменные month 、 day и year все являются целочисленными значениями и удовлетворяют следующим условиям: ①1≤month≤12 ②1≤day≤31 ③1912≤year≤2050 <Анализ проблемы>Основная особенность этой функции заключается в том, что логическая связь между входными переменными относительно сложна.,В частности, это отражено в: сложности правил ввода високосного года; нравиться,Когда переменная год и переменная рот принимают разные значения,Соответствующий переменный день будет иметь разные диапазоны значений.,Или 1~30, или 1~31, или 1~28, или 1~29. <Часто задаваемые вопросы> (1) Первый метод деления (1.1) Разобьем классы эквивалентности A. действительные классы эквивалентности M1={mouth:1≤mouth≤12}; D1={day:1≤day≤31};Y1={year:1912≤year≤2050} B. Неверный класс эквивалентности M2={mouth:mouth<1}、M2={mouth:mouth>12}; D2={day:day<1}、D3={day:day>31}; Y2={year:year<1912}、Y2={year:year>2050}; (1.2) Проверка класса общей эквивалентности потому чтоКоличество допустимых классов равно количеству независимых переменных.,Поэтому только слабый Проверка класса общей появляется вариант использования эквивалентности, и с сильной проверкой класса общей эквивалентностивариант использованиятакой же。

[Примечание] «Слабый» относится к предположению об одном дефекте (отказ редко вызван двумя или более дефектами одновременно), а «сильный» относится к гипотезе о множественных дефектах (отказ вызван двумя или более дефектами). ), вызванные дефектами одновременно); «вообще» означает, что недопустимые значения не учитываются. Слабая проверка класса общей вариант использования эквивалентности путем использования одного тестового варианта использования для каждого факта классы Репрезентативные значения эквивалентности (интервалов) часто используются для симметричной идентификации этих вариантов использования тестов и обращают внимание на роль односторонних предположений; класса общей Вариант использования эквивалентности, действительный для каждой независимой переменной классы эквивалентность реализуется декартовым произведением. (1.3) Надежное тестирование класса эквивалентности (1.3.1) слабый Надежное тестирование класса эквивалентности слабый Надежное тестирование класса Недопустимый вариант использования теста в эквивалентности содержит только одно недопустимое значение, а остальные являются допустимыми значениями, то есть он содержит одно предположение о дефекте. [Примечание: «слабый» относится к предположению об одном дефекте, «сильный» относится к предположению о множественных дефектах; «надежный» относится к рассмотрению недопустимых значений]

(1.3.2) мощный Надежное тестирование класса эквивалентности мощный Надежное тестирование класса эквивалентность учитывает больше случаев недопустимых значений. Сильное Надежное тестирование класса Неверный вариант использования теста эквивалентности может содержать несколько недопустимых значений, то есть содержать несколько ошибочных предположений. Функция NextDate имеет три переменные, поэтому она соответственно сильна. тестирование класса Вариант использования может содержать одно недопустимое значение, два недопустимых значения или три недопустимых значения. [Примечание: «Сильная» относится к гипотезе, содержащей множественные дефекты; «сильная» относится к гипотезе, содержащей множественные дефекты; «надежная» относится к рассмотрению недопустимых значений]

(2) Второй метод разделения Очевидно, что при тестировании функции NextDate с использованием метода деления 1 не учитывались ни количество дней в феврале, ни проблема високосного года. Поэтому необходимо вносить дальнейшие улучшения. (2.1) Разобьем классы эквивалентности Ключевым моментом отношения эквивалентности является то, что элементы класса эквивалентности должны «обрабатываться одинаково», то есть либо на допустимом, либо на недопустимом уровне. Поэтому более подробно действительное классы эквивалентностидля: √Переменный рот: M1={рот: у рта 30 дней}, M2={рот: Во рту 31 день, исключая декабрь}, M3={mouth: рот — февраль}, M4={рот: рот — декабрь}; √Переменный день: D1={day: 1≤day≤28}、D2={day: day=29}、D3={day: day=30}、D4={day: day=31}; √Переменная дата: Y1={год: год високосный},Y2={год: год — обычный год}; (2.2) Проверка класса общей эквивалентности A. слабый Проверка класса общей эквивалентности Принимая во внимание одностороннее предположение, допустимые входы для соответствующего класса выбираются механически симметричным образом:

B. мощный Проверка класса общей эквивалентности От тестирования классов слабой эквивалентности до тестирования классов сильной эквивалентности, будь то общий класс или надежный класс, необходимо делать предположения о независимости, и они должны быть представлены декартовым произведением классов эквивалентности. В этой задаче число классов эквивалентности для переменной рта равно 4, количество классов эквивалентности для переменной дня равно 4, а количество классов эквивалентности для переменной года равно 2, поэтому проверка является сильной. класса общей Количество вариантов использования — 4*4*2=32.

(2.3) Надежное тестирование класса эквивалентности A. слабый Надежное тестирование класса эквивалентности

Язык кода:javascript
копировать
     B. мощный Надежное тестирование класса эквивалентности

    **3) Эквивалентный вариант использования теста для проблемы комиссии** 

Будет обновлено...

Заявление об авторских правах: Содержание этой статьи добровольно предоставлено пользователями Интернета, а мнения, выраженные в этой статье, представляют собой только точку зрения автора. Этот сайт предоставляет только услуги по хранению информации, не имеет никаких прав собственности и не принимает на себя соответствующие юридические обязательства. Если вы обнаружите на этом сайте какое-либо подозрительное нарушение авторских прав/незаконный контент, отправьте электронное письмо, чтобы сообщить. После проверки этот сайт будет немедленно удален.

Издатель: Лидер стека программистов полного стека, укажите источник для перепечатки: https://javaforall.cn/180618.html Исходная ссылка: https://javaforall.cn

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