як створити тестовий випадок

Це може бути досить наївним питанням для більшості з вас, але я маю якусь думку про це.

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

0

3 Відповіді

Якщо для розрахунку це занадто складно, щоб розібрати його на папері за допомогою калькулятора, то як ви могли б навіть програмувати його? Навіть якщо розрахунок потрібно виконати на невеликих етапах, ви можете написати декілька різних тестів на папері та перевірити цей крок розрахунку в програмі та прокласти його через нього. Комп'ютер може робити лише те, що робить людина.

2
додано
@Bilal Ви можете вирішити це вручну, це займе деякий час. Але як ще ви будете робити це? Коли ви робите, і ви пишете тести, вам потрібно виконати ті самі кроки, що і ваша програма, і писати нові значення для всіх тверджень присвоєння та переконатися, що вони є такими, що ви очікуєте від них.
додано Автор Nick Rolando, джерело
Я не дуже слідував за вами, якщо програма реалізує алгоритм, як наш тестовий випадок перевіряє, чи правильно програма реалізувала алгоритм? це може здатися дуже базовим питанням, але я є новим для тестування.
додано Автор comatose, джерело
Наприклад, в даний час я працюю над проблемою, яка є чимось нагадує проблему "ранкою", тепер, якщо я хочу написати тестовий приклад для цієї програми, яку я виконував, як мені продовжити? Я можу написати кілька випадків для невеликих входів (де я можу вирішити це з допомогою олівця/паперу), але якщо я хочу перевірити програму для великих входів, я не можу вирішити це вручну, так як я можу це перевірити?
додано Автор comatose, джерело
Я теж не міг придумати жодної іншої альтернативи, але думав, що, можливо, існує якийсь "магічний" спосіб, у всякому разі, я зараз це отримую, дякую
додано Автор comatose, джерело

Ваше запитання не має сенсу.

Тестування - це діяльність системи, яка не піддається тестуванню, як чорний ящик. Те, що ви запитуєте в системі (у вашому випадку: розрахунок), це в основному це: Добре, коли я подаю метод з цими значеннями, то я хочу, щоб він повернув це значення .

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

1
додано

Ваше запитання стає найважчою проблемою при тестуванні програмного забезпечення, відома як проблема "оракула".

Щоб підтримати тестування, ми хочемо мати довірче джерело очікуваних результатів для будь-якого вхідного тесту. У більшості сценаріїв тестування це, по суті, означає, що ми маємо еквівалент ідеальної, безпомилкової реалізації випробуваної системи. Звичайно, якщо б ми мали це, ми, можливо, могли б пропустити розвиток SUT та його тестування.

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

Глава 18 моєї книги, Тестування об'єктно-орієнтованих систем , надає 16 моделей тестів для оракулів, більшість з яких можна автоматизувати.

This page gives a summary of the book and links to Amazon http://www.robertvbinder.com/home/thought-leadership/books/

Боб

1
додано