Виділення класів еквівалентності
Класи еквівалентності виділяються шляхом вибору кожної вхідної умови (зазвичай це пропозиція або фраза з специфікації) та розбиттям його на дві або більше груп. Для цього використовується таблиця такого виду:
Вхідна умова | Правильні класи еквівалентності | Неправильні класи еквівалентності |
Правильні класи включають правильні дані, неправильні класи - неправильні дані.
Виділення класів еквівалентності є евристичним процесом, але при цьому існує ряд правил:
· Якщо вхідні умови описують область значень (наприклад «ціле дане може приймати значення від 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 для кожної вихідної умови.
· Якщо вхід або вихід програми є впорядкована множина (наприклад, послідовний файл, лінійний список, таблиця), то зосередити увагу на першому і останньому елементах цієї множини.
· Спробувати свої сили в пошуку інших граничних умов.
Аналіз граничних умов, якщо він застосований правильно, є одним з найбільш корисних методів проектування тестів. Однак слід пам'ятати, що граничні умови можуть бути ледь вловимі і визначення їх пов'язане з великими труднощами, що є недоліком цього методу. Другий недолік пов'язаний з тим, що метод аналізу граничних умов не дозволяє перевіряти різні поєднання вихідних даних.