Виділення класів еквівалентності

Класи еквівалентності виділяються шляхом вибору кожної вхідної умови (зазвичай це пропозиція або фраза з специфікації) та розбиттям його на дві або більше груп. Для цього використовується таблиця такого виду:

Вхідна умова Правильні класи еквівалентності Неправильні класи еквівалентності
     

Правильні класи включають правильні дані, неправильні класи - неправильні дані.

Виділення класів еквівалентності є евристичним процесом, але при цьому існує ряд правил:

· Якщо вхідні умови описують область значень (наприклад «ціле дане може приймати значення від 1 до 999»), то виділяють один правильний клас 1£X£999 и два неправильних X<1 и X>999.

· Якщо вхідна умова описує число значень (наприклад, «в авто можуть їхати від 1 до 6 чоловік»), то визначається один правильний клас еквівалентності і два неправильних (жодного і більше шести осіб).

· Якщо вхідна умова описує безліч вхідних значень і є підстави вважати, що кожне значення програміст трактує особливо (наприклад, «відомі способи пересування на АВТОБУСІ, ТАКСІ, МОТОЦИКЛІ чи ПІШКИ»), то визначається правильний клас еквівалентності для кожного значення і один неправильний клас (наприклад «на причепі»).

· Якщо вхідна умова описує ситуацію "повинно бути" (наприклад, «першим символом ідентифікатора повинна бути буква»), то визначається один правильний клас еквівалентності (перший символ - буква) і один неправильний (перший символ - не буква).

· Якщо є підстава вважати, що різні елементи класу еквівалентності трактуються програмою неоднаково, то даний клас розбивається на менші класи еквівалентності.

Побудова тестів

Цей крок полягає у використанні класів еквівалентності для побудови тестів. Цей процес включає в себе:

· Призначення кожному класу еквівалентності унікального номера.

· Проектування нових тестів, кожен з яких покриває як можна більше число непокритих класів еквівалентності, до тих пір, поки всі правильні класи не будуть покриті (тільки не загальними) тестами.

· Запис тестів, кожен з яких покриває один і тільки один з непокритих неправильних класів еквівалентності, до тих пір, поки всі неправильні класи не будуть покриті тестами.

Розробка індивідуальних тестів для неправильних класів еквівалентності обумовлена тим, що певні перевірки з помилковими входами приховують або замінюють інші перевірки з помилковими входами.

Недолік методу еквівалентного розбиття в тому, що він не досліджує комбінації вхідних умов.

Аналіз граничних значень.

Граничні умови - це ситуації, що виникають на, вище або нижче меж вхідних класів еквівалентності. Аналіз граничних значень відрізняється від еквівалентного роздроблення наступним:

¨ Вибір будь-якого елементу в класі еквівалентності в якості представного при аналізі граничних умов здійснюється таким чином, щоб перевірити тестом кожний кордон цього класу.

¨ При розробці тестів розглядаються не тільки вхідні умови (простір входів), але і простір результатів.

Застосування методу аналізу граничних умов вимагає певного ступеня творчості і спеціалізації в розглянутій проблемі. Тим не менш, існує кілька загальних правил цього методу:

· Побудувати тести для кордонів області та тести з неправильними вхідними даними для ситуацій незначного виходу за межі області, якщо вхідна умова описує область значень (наприклад, для області вхідних значень від -1.0 до +1.0 необхідно написати тести для ситуацій -1.0, +1.0, -1.001 и +1.001).

· Побудувати тести для мінімального і максимального значень умов і тести, більші і менші цих двох значень, якщо вхідна умова задовольняє дискретному ряду значень. Наприклад, якщо вхідний файл може містити від 1 до 255 записів, то перевірити 0, 1, 255 і 256 записів.

· Використати правило 1 для кожної вихідної умови. Причому, важливо перевірити межі простору результатів, оскільки не завжди кордону вхідних областей представляють такий же набір умов, як і кордони вихідних областей. Не завжди також можна отримати результат поза вихідної області, але, тим не менш, варто розглянути цю можливість.

· Використати правило 2 для кожної вихідної умови.

· Якщо вхід або вихід програми є впорядкована множина (наприклад, послідовний файл, лінійний список, таблиця), то зосередити увагу на першому і останньому елементах цієї множини.

· Спробувати свої сили в пошуку інших граничних умов.

Аналіз граничних умов, якщо він застосований правильно, є одним з найбільш корисних методів проектування тестів. Однак слід пам'ятати, що граничні умови можуть бути ледь вловимі і визначення їх пов'язане з великими труднощами, що є недоліком цього методу. Другий недолік пов'язаний з тим, що метод аналізу граничних умов не дозволяє перевіряти різні поєднання вихідних даних.

Наши рекомендации