Помощь - Поиск - Пользователи - Календарь
Полная версия: Черный/Белый ящики
Форум «Всё о Паскале» > Разработка ПО, алгоритмы, общие вопросы > Общие вопросы разработки программ
sheka
Подскажите, пожалуйста, что это за принципы. Я таких не нашел.
Понял только, что как бы в Черном - скрыта суть программы, важен только ответ. А как это реализовать?
volvo
Цитата
Подскажите, пожалуйста, что это за принципы.
Это принципы отладки программы.

"Черный ящик":
Программа рассматривается, как ящик с непрозрачными стенками. Тот, кто ведет отладку, ничего не знает о том, что там внутри. Он только задает программе входные данные и проверяет, правильны ли выходные данные программы. Идеальный тест методом "черного ящика" должен проверить программу на всех теоретически возможных комбинациях входных данных, но это по большей части просто технически невозможно. Значит, для тестирования следует подобрать "критические" комбинации входных данных, на которых больше всего возможны ошибки, - а это уже требует некоторых допущений о внутренней структуре программы. К тому же, когда ошибка обнаружена, метод "черного ящика" не дает нам возможности ее локализовать - обнаружить, в каком точно месте программы она находится. Значит, подход "черного ящика" более пригоден не для самой отладки, а для внешнего тестирования программы.

"Белый ящик":
Тот, кто ведет отладку, досконально знает внутреннюю структуру программы и ведет отладку по такому плану, который позволяет проверить функциональность программы на всех ветвях ее алгоритма и на всех граничных значениях ее переменных.
sheka
volvo, не можешь дать ссылочку "на прочитать и пример"? и, если можно, на примере вот этой программы чёрный ящик объясни что к чему.
volvo
Откуда я знаю, что надо в той теме... Поставил бы автор задачу покорректнее - можно было бы что-то сказать, а так "сделайте мне 'черный ящик'" - это несерьезно...

Цитата
ссылочку "на прочитать и пример"
Если тебя интересует тестирование методом черного ящика - начни отсюда: Тестирование по стратегии чёрного ящика.
sheka
Прочитал статью.
Например, есть такая программа:
 
var i:shortint;
begin
readln(i);
writeln(2*i);
end.


т.е. по методу Черного ящика "Анализ граничных значений" будет происходить так:
сначала подставлю 0. получу 0.
потом подставлю 1. получу 2.
2 - 4.
3-6
4-8.
пойму, что скорее всего, мой Черный ящик увеличивает введеное число в 2 раза.
начну брать какие-то макс значения.
50 - 100.
значит 50 - не максимальное.
100- фигня какая-то - Программа не работает.
возьму меньше 75 - тоже не работает.
ну и так буду перебирать, пока не найду, что мин введеное может быть -127, а макс 128.
Правильно ли я понял как тестировать программу?
Если да, то как это оформлять надо? Т.е. еще какую-то дополнительную программу составить, которая бы это делала?
Икак другими способами, не "Анализом граничных значений" ?
volvo
Цитата
ну и так буду перебирать, пока не найду, что мин введеное может быть -127, а макс 128.
Ну, попробуй введи 128. Получишь аварийный вылет. Наоборот, от -128 до +127...

Вот еще хорошая статья: http://www.ibm.com/developerworks/ru/libra...test/index.html (и по ссылкам внизу страницы тоже было бы неплохо пройти)
sheka
Цитата(volvo @ 18.01.2010 23:50) *
Наоборот, от -128 до +127...

Перепутал smile.gif
Цитата
аварийный вылет.

А такое бывает? Завтра специально попробую). По моему, обычно отрицательные значения какие-то пишет.
volvo
Цитата
По моему, обычно отрицательные значения какие-то пишет.
Если программа откомпилирована с ключом {$R-}, то будет неправильное значение. Если с {$R+} - то вылет... Ну, или в IDE заходим в Options -> Compiler и ставим все крестики в поле Runtime Errors. Я о Паскале сейчас говорю, раз уж ты привел пример на Паскале. Запускай и отлаживай программы ВСЕГДА со всеми включенными проверками, узнаешь много интересного, и выявишь те ошибки (если они есть, конечно), которые без этих крестиков замалчиваются, и программа работает "через раз"...
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.