Курсовая: Тестирование - текст курсовой. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Курсовая

Тестирование

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Курсовая работа
Язык курсовой: Русский
Дата добавления:   
 
Скачать
Архив Zip, 96 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникальной курсовой работы

Узнайте стоимость написания уникальной работы

Министерство образования Российской Федерации Государственное образо вательное учреждение среднего профессионального образования Петровский колледж Филиал г . Мурманск Рассмотрено и одобрено цикловой комиссией программирования и ИТ Председатель ________________ « ______» _____________ 2003 г. ЗАДАНИЕ для курсового проекта студенту колледжа Тимониной Зои Викторовне группа № 423 отделение 2203 «Программное обеспечение вычислительной техники и автоматизированных систем» Наименование темы : «Составление прогр аммы и тестирование ее по методу эквивалентных разбиений с указанием возможных ошибок» Задание : Составить программу и оттестировать ее по методу эквивалентных разбиений (указать возможные ошибки ). Тесты составить только для неправильных классов эквивалентн ости . Пусть имеется несколько функций одного аргумента Х . Для каждой из них требуется распечатать таблицу значений на некотором отрезке . Отрезок [ a , b ] для каждой функции свой , также для каждой задан шаг изменения аргумента dX . Функции : F1(X) = X*sin(X) a=0.0 b=1.0 dX=0.1 F2(X) = X*cos(X) a=0.5 b=2.1 dX=0.2 F3(X) = a=2.0 b=4.75 dX=0.25 33 Руководитель работы __________________ _____________________________________ Дата выдачи задания ___________________ Дата сдачи проекта ________ ____________ Содержание : Введение 1. Общая часть 1.1 Теоретические основы тестирования . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 1.2 Обоснование выбора комплекса технических средств , используемых для решения зад ачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.3 Обоснование выбора комплекса программных средств, используемых для решения задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 2. Специальная часть 2.1 Постановка задачи . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .25 2.2 Метод тестирования программы методом эквивалентных разбиений . . . . . . . . 25 2.3 Спецификация програм мы , спецификация переменных . . . . . . . . . . . . . . . . . . . . . .30 2.4 Алгоритм программы и его описание . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .30 2.5 Описание программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 2.6 Тестирование программы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 2.7 Контрольный пример . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .32 2.8 Инструкция пользователю . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34 Заключение Приложение 1 Приложение 2 Список используемой литературы Введение В данном к урсовом проекте рассматривается тестирование программного обеспечения , используемого для решения математической задачи нахождения ………. Тестирование программы является частью предмета «Технология разработки программного продукта» , который рассматривает проц ессы : проектирования , кодирования , тестирования , эксплуатации и сопровождения программного обеспечения . Так как процесс тестирования по разным данным занимает от 20% до 50% ресурсных затрат на создание программного обеспечения , то тестированию уделено осо б ое внимание в курсовом проекте . Тестирование – это один из наиболее трудоемких этапов создания программ (его трудоемкость составляет от 30 до 60% общей трудоемкости ). Кроме того , доля его стоимости в общей стоимости программ имеет тенденцию возрастать при увеличении сложности комплексов программ и повышении требований к их качеству . Тестирование – это процесс исполнения программы с целью обнаружения ошибок . Исходя из термина «тестирование» можно сделать вывод , что программа тестируется не для того , чтобы п о казать , что она работает , а наоборот тестирование начинается с того , что делается предположение , что в программе есть ошибки (это предположение справедливо практически для любой программы ). Существует большое разнообразие методов тестирования . Перечислим н екоторые из них : тестирование восходящее , нисходящее , документации , оборудование регрессионное со случайным входом . 1.Общая часть 1.1 Теоретические основы тестирования Проектирование теста Результаты психологических исследований , показывают , что наибол ьшее внимание при тестировании программ уделяется проектированию или созданию эффективных тестов . Этот связано с невозможностью «полного» тестирования программы , т.е . тест для любой программы будет обязательно неполным (иными словами , тестирование не може т гарантировать отсутствия всех ошибок ). Стратегия проектирования заключается в том , чтобы попытаться уменьшить эту «неполноту» на столько , на столько это возможно. Если ввести ограничения на время , стоимость , машинное время и т.п ., то ключевым вопросом те стирования становится следующий : Какое подмножество всех возможных тестов имеет наивысшую вероятность обнаружения большинства ошибок ? Изучение методологий проектирования тестов дает ответ на этот вопрос. По-видимому , наихудшей из всех методологий являетс я тестирование со случайным входными значениями (стохастическое ) – процесс тестирования программы путем случайного выбора некоторого подмножества из всех возможных входных величин . В терминах вероятности обнаружения большинства ошибок случайно выбранный н а бор тестов имеет малую вероятность быть оптимальным или близким к оптимальному подмножеством . Рассмотрим несколько подходов , которые позволяют более разумно выбирать тестовые данные . Исчерпывающее тестирование по принципу черного или белого ящика в общем с лучае невозможно . Однако при этом отмечалось , что приемлемая стратегия тестирования может обладать элементами обоих подходов . Таковой является стратегия , излагаемая в этой главе . Можно разработать довольно полный тест , используя определенную методологию п р оектирования , основанную на принципе черного ящика , а затем дополнить его проверкой логики программы (т.е . с привлечением методов белого ящика ). Методологии , обсуждаемые в настоящей главе , представлены ниже . Черный ящик Белый ящик Эквивалентное разбиение Покрытие операторов Анализ граничных значений Покрытие решений Применение функциональных Покрытие условий диаг рамм Покрытие решений /условий Предложение об ошибке Комбинаторное покрытие условий Хотя перечисленные методы будут рассматриваться по отдельности , при проек тировании эффективного теста программы рекомендуется использовать если не все эти методы , то по крайне мере большинство из них , так как каждый метод имеет определенные достоинства и недостатки (например , возможность обнаруживать и пропускать различные тип ы ошибок ). Правда , эти методы весьма трудоемки , поэтому некоторые специалисты , ознакомившись с ними , могут не согласиться с данной рекомендацией . Однако следует представлять себе , что тестирование программы – чрезвычайно сложная задача . Для иллюстрации это г о приведем известное изречение : «Если вы думаете , что разработка и кодирование программы – вещь трудная , то вы еще ничего не видели». Рекомендуемая процедура заключается в том , чтобы разрабатывать тесты , используя методы черного ящика , а затем как необход имое условие – дополнительные тесты , используя методы белого ящика , получившие более широкое распространение , обсуждаются первыми. Тестирование путем покрытия логики программы. Тестирование по принципу белого ящика характеризуется степенью , в какой тесты выполняют или покрывают логику (исходный тест ) программы . Исчерпывающие тестирование по принципу белого ящика предполагает выполнение каждого пути обычно нереализуемо , то тестирование всех путей не рассматривается в данной книге как перспективное. Если от казаться полностью от тестирования всех путей , то можно показать , что критерием покрытия является выполнение каждого оператора программы по край не мере один раз . К сожалению , этот слабый критерий , так как выполнение каждого оператора по крайне мере один раз есть необходимое , но недостаточное условие для приемлемого тестирования по принципу белого ящика (см . рис .). Предположим , что на рис . Представлена небольшая программа , которая должна быть протестирована . a Y c N b e Y N d Эквивалентная программа , написанная на языке PL /1, имеет вид : M: PROCEDURE (A,B,X); IF ((A>1) & (B=0)) THEN DO; X=X/A; END; IF ((A=2) | (X>1)) THEN DO; X=X+1; END; END; Можно выполнить каждый оператор , запис ав один – единственный тест , который реализовал бы путь ace . Иными словами , если бы в точке а были установлены значения A =2, B =0 и X =3, каждый оператор выполнялся бы один раз (в действительности Х может принимать любое значение ). К сожалению , этот критери й хуже , чем кажется на первый взгляд . Например , пусть первое решение записано как или , а не как и . При тестировании по данному критерию эта ошибка не будет обнаружена . Пусть второе решение записано в программе как X > 0; эта ошибка также не будет обнаружен а . Кроме того , существует путь , в котором X не изменяется (путь abd ). Если здесь ошибка , то она не будет обнаружена . Таким образом , критерий покрытия операторов является настолько слабым , что его обычно не используют. Более сильный критерий покрытия логик и программы известен как покрытие решений , или покрытие переходов . Согласно данному критерию должно быть записано достаточное число тестов , такое , что каждое решение на этих тестах примет значение истина и ложь по крайне мере один раз . Иными словами , каждо е направление перехода должно быть реализовано по крайне мере один раз . Примерами операторов перехода или решений являются операторы DO (или PERFORM UNTIL в Коболе ), IF , многовыходные операторы GO TO . Можно показать , что покрытие решений обычно удовлетвор яет критерию покрытия операторов . Поскольку каждый оператор лежит на некотором пути , исходящем либо из оператора перехода , либо из точки входа программы , при выполнении каждого направления перехода каждый оператор должен быть выполнен . Однако существует п о крайне мере три исключения . Первое – патологическая ситуация , когда программа не имеет решений . Второе встречается в программах или подпрограммах с несколькими точками входа ; данный оператор может быть выполнен только в том случае , если выполнение програ м мы начинается с соответствующей точки входа . Третье исключение – операторы внутри ON -единиц ; выполнение каждого направления перехода не обязательно будет вызывать выполнение всех ON -единиц . Так как покрытие операторов считается необходимым условием , покрыт ие решений , которое представляется более сильным критерием , должно включать покрытие операторов . Следовательно , покрытие решений требует , чтобы каждое решение имело результатом значения истина и ложь и при этом каждый оператор выполнялся бы по крайней мере один раз . Альтернативный и более легкий способ выражения этого требования состоит в том , чтобы каждое решение имело результатом значения истина и ложь и что каждой точке входа (включая ON -единицы ) должно быть пердано управление при вызове программы по кра йне мере один раз. Изложенное выше предполагает только двузначные решения или переходы и должно быть модифицировано для программ , содержащих многозначные решения . Примерами таких программ являются программы на PL /1, включающие операторы SELECT ( CASE ) или операторы GO TO , использующие метку – переменную , программы на Фортране с арифметическими операторами IF , вычисляемыми операторами GO TO или операторами GO TO по предписанию , и программы на Коболе , содержащие операторы GO TO или операторами GO TO по предп исанию , и программы на Коболе , содержащие операторы GO TO вместе с ALTER или операторы GO – TO – DEPENDING – ON . Критерием для них является выполнение каждого возможного результата всех решений по крайне мере один раз. В программе , представленной на рисун ке выше , покрытие решений может быть выполнено двумя тестами , покрывающими либо пути ace и abd , либо пути acd и abe . Если мы выбираем последнее альтернативное покрытие , то входами двух тестов являются А = 3, В = 0, Х =3 и А = 2, В = 1, Х = 1. Покрытие реш ений – более сильный критерий , чем покрытие операторов , но и он имеет свои недостатки . Например , путь , где Х не изменяется (если выбрано первое альтернативное покрытие ), будет проверен с вероятностью 50%. Если во втором решении существует ошибка (например, Х < 1 вместо Х > 1), то ошибка не будет обнаружена двумя тестами предыдущего примера. Лучшим критерием по сравнению с предыдущим является покрытие условий . В этом случае записывают число тестов , достаточное для того , чтобы все возможные результаты каждог о условия в решении выполнялись по крайне мере один раз . Поскольку , как и при покрытии решений , это покрытие не всегда приводит к выполнению каждого оператора , к критерию требуется дополнение , которое заключается в том , что каждой точке входа в программу и ли подпрограмму , а также ON -единицам должно быть передано управление при вызове по крайней мере один раз . Например , оператор цикла DO K = 0 TO 50 WHILE ( J + K < QUEST ); c одержит два условия : К меньше или равно 50 и J + K меньше , чем QUEST . Следовательно , з десь требуется тесты для ситуаций К 50, К > 50 (т.е . выполнение последней итерации цикла ), J +K 1, B = 0, A = 2 и Х > 1. Следовательно , требуется достаточное число тестов , такое , чтобы реализовать ситуации , где А > 1, A 1, B = 0 и В 0 в точке а и А = 2, А 2, X > 1 и X 1 в точке b . Тесты , удовлетворяющие критерию покрытия условий , и соответствующие им пути : 1. A = 2, B = 0, X = 4 ace. 2. A = 1, B = 1, X =1 abd. Заметим , что , хотя аналогичное число тестов для этого примера уже было создано , покрытие условий обычно лучше покрытия решений , поскольку оно может (но не всегда ) вызвать выполнение решений в условиях , н е реализуемых при покрытии решений . Например оператор DO K=0 TO 50 WHILE (J+K 1, B = 0. 2. A >1, B 0. 3. A 1, B = 0. 4. A 0, B 0. 5. A = 2, X > 1. 6. A = 2, X 1. 7. A 2, X > 1. 8. A 2, X 1. Заметим , что комбинации 5 – 8 представляют собой значения второго оператора IF . Поскольку Х может быть изменено до выполнения этого оператора , значения , необходи мые для его проверки , следует восстановить исходя из логики программы с тем , чтобы найти соответствующие входные значения. Для того чтобы протестировать эти комбинации , необязательно все восемь тестов . Фактически они могут быть покрыты четырьмя тестами . Пр иведем входные значения тестов и комбинации , которые они покрывают : A = 2, B = 0, X = 4 покрывает 1,5 A = 2, B = 1, X = 1 покрывает 2,6 A = 1, B = 0, X = 2 покрывает 3,7 A = 1, B = 1, X = 1 покрывает 4,8 То , что четырем тест ам соответствуют четыре различных пути , является случайным совпадением . На самом деле представленные выше тесты не покрывают всех путей , они пропускают путь acd . Например , требуется восемь тестов для тестирования следующей программы : IF ((X = Y) & (LENGTH( Z) = 0) & END) THEN J = 1; ELSE I = 1; хотя она покрывается лишь двумя путями . В случае циклов число тестов для удовлетворения критерию комбинаторного покрытия условий обычно больше , чем ч исло путей. Таким образом , для программ , содержащих только одно условие на каждое решение , минимальным является критерий , набор тестов которого 1) вызывает выполнение всех результатов каждого решения по крайне мере один раз и 2) передает управление каждой точке входа (например , точке входа , ON -единице ) по крайне мере один раз (чтобы обеспечить выполнение каждого оператора программы по крайне мере один раз ). Для программ , содержащих решения , каждое из которых имеет более одного условия , минимальный критерий состоит из набора тестов , вызывающих выполнение всех возможных комбинаций результатов условий в каждом решении и передающих управление каждой точке входа программы по крайне мере один раз . [Слово «возможных» употреблено здесь потому , что некоторые комбин а ции условий могут быть нереализуемыми ; например , в выражении ( A > 2) & ( A <10) могут быть реализованы только три комбинации условий .] Анализ граничных значений. Как показывает опыт , тесты , исследующие граничные условия , приносят большую пользу , чем тесты , к оторые их не исследуют . Граничные условия – это ситуации , возникающие непосредственно на , выше или ниже границ входных или выходных классов эквивалентности . Анализ граничных значений отличается от эквивалентного разбиения в двух отношениях : 1. Выбор любого элемента в классе эквивалентности в качестве представительного при анализе граничных значений осуществляется таким образом , чтобы проверить тестом каждую границу этого класса. 2. При разработке тестов рассматривают не только входные условия (пространство входов ), но и пространство результатов (т.е . выходные классы эквивалентности ). Трудно описать «кухню» анализа граничных значений , т.к . это требует определенной степени творчества и специализации в рассматриваемой проблеме . Следовательно , анализ граничных значений , как и многие другие аспекты тестирования , в значительной мере основывается на способностях человеческого интеллекта . Тем не менее , приведем несколько общих правил этого метода . 1) Построить тесты для границ области и тесты с неправильными входн ыми данными для ситуаций незначительного выхода за границы области , если входное условие описывает область значений . Например , если правильная область входных значений есть -1,0 - +1,0, то написать тесты для ситуаций -1,0, 1,0, -1,001 и 1,001. 2) Постро ить тесты для минимального и максимального значений условий и тесты , большие и меньшие этих значений , если входное условие удовлетворяет дискретному ряду значений . Например , если входной файл может содержать от 1 до 255 записей , то получить тесты для 0,1, 255 и 256 записей. 3) Использовать правило 1 для каждого выходного условия . Например , если программа вычисляет ежемесячный расход и если минимум расхода составляет 0,00 дол ., а максимум – 1165,25 дол ., то построить тесты , которые вызывают расходы с 0,00 до л . и 1165,25 дол . Кроме того , построить , если это возможно , тесты , которые вызывают отрицательный расход и расход больше 1165,25 дол . Заметим , что важно проверить границы пространства результатов , поскольку не всегда границы входных областей представляют т акой же набор условий , как и границы выходных областей (например , при рассмотрении подпрограммы вычисления синуса ). Не всегда также можно получить результат вне выходной области , но тем не менее стоит рассмотреть эту возможность. 4) Использовать правило 2 для каждого выходного условия . Например , если система информационного поиска отображает на экране терминала наиболее релевантные рефераты зависимости от входного запроса , но никак не более четырех рефератов , то построить тесты , такие . Чтобы программа ото б ражала нуль , один и четыре реферата , и тест , который мог бы вызвать выполнение программы с ошибочным отображением пяти рефератов. 5) Если вход или выход программы есть упорядоченное множество (например , последовательный файл , линейный список , таблица ), то сосредоточить внимание на первом и последнем элементах этого множества. 6) Попробовать свои силы в поиске других граничных условий. Чтобы проиллюстрировать необходимость анализа граничных значений , можно использовать программу анализ треугольника , приведен ную ранее . Для задания треугольника входные значения должны быть целыми положительными числами , и сумма любых двух из них должна быть больше третьего . Если определены эквивалентные разбиения , то целесообразно определить одно разбиение , в котором это услов и е выполняется , и другое , в котором сумма двух целых не больше третьего . Следовательно , двумя возможными тестами являются 3-4-5 и 1-2-4. Тем не менее , здесь есть вероятность пропуска ошибки . Иными словами , если выражение в программе было закодировано как А + В >= C вместо А +В > C , то программа ошибочно сообщила бы нам , что числа 1-2-3 представляют правильный равносторонний треугольник . Таким образом , существенное различие между анализом граничных значений и эквивалентным разбиением заключается в том , что анализ гр аничных значений исследует ситуации , возникающие на и в близи границ эквивалентных разбиений . В качестве примера применения метода анализа граничных значений рассмотрим следующую спецификацию программы. MTEST есть программа , которая сортирует различную информацию об экзаменах . Входом программы является файл , названный OCR , который содержит 80-символьные записи . Первая запись представляет название ; ее содержание используется как заголовок каждого выходного отчета . Следующее множество записей описывает правильные отв еты на экзамене . Каждая запись этого множества содержит « 2» в качестве последнего символа . В первой записи в колонках 1-3 задается число ответов (оно принимает значение от 1 до 999). Колонки 10-59 включают сведения о правильных ответах на вопросы с номера м и 1-50 (любой символ воспринимается как ответ ). Последующие записи содержат в колонках 10-59 сведения о правильных ответах на вопросы с номерами 51-100, 101-150 и т.д . Третье множество записей описывает ответы каждого студента ; любая запись этого набора и м еет число « 3» в восьмидесятой колонке . Для каждого студента первая запись в колонках 1-9 содержит его имя или номер (любые символы ); в колонках 10-59помещены сведения о результатах ответов студентов на вопросы с номерами 1-50. Если в тесте предусмотрено б о лее чем 50 вопросов , то последующие записи для студента описывают ответы 51-100, 101-150 и т.д . в колонках 10-59. Максимальное число студентов – 200. Форматы входных записей показаны на рисунке выше . Выходными записями являются : ь Отчет , упорядоченный в ле ксикографическом порядке идентификаторов студента (процент правильных ответов ) и его ранг ; ь Аналогичный отчет , но упорядоченный по качеству ; ь Отчет , показывающий среднее значение , медиану и среднее квадратическое отклонение качества ответов ; ь Отчет , уп орядоченный по номерам вопросов и показывающий процент студентов , отвечающих правильно на каждый вопрос . (Конец спецификации ). Начнем методичное чтение спецификации , выявляя входные условия . Первое граничное входное условие есть пустой входной файл . Второе входное условие – карта (запись ) названия ; граничными условиями являются отсутствие карты названия , самое короткое и самое длинное названия . Следующими входными условиями служат наличие записей о правильных ответах и наличие поля числа вопросов в первой з аписи ответов . 1-999 не является классом эквивалентности для числа вопросов , так как для каждого подмножества из 50 записей может иметь место что-либо специфическое (т.е . необходимо много записей ). Приемлемое разбиение вопросов на классы эквивалентности п р едставляет разбиение на два подмножества : 1-50 и 51-999. Следовательно , необходимы тесты , где поле числа вопросов принимает значения 0, 1, 50, 51 и 999. Эти тесты покрывают большинство граничных условий для записей о правильных ответах ; однако существует т ри более интересные ситуации – отсутствие записей об ответах , наличие записей об ответах типа «много ответов на один вопрос» и наличие записей об ответах типа «мало ответов на один вопрос» (например , число вопросов – 60, и имеются три записи об ответах в п ервом случае и одна запись об ответах во втором ). Таким образом , определены следующие тесты : 1. Пустой входной файл 2. Отсутствует запись названия 3. Название длиной в один символ 4. Название длиной в 80 символов 5. Экзамен из одного вопроса 6. Экзамен из 50 вопросов 7. Экзамен из 51 вопроса 8. Экзамен из 999 вопросов 9. 0 вопросов на экзамене 10. Поле числа вопросов имеет нечисловые значения 11. После записи названия нет записей о правильных ответах 12. Имеются записи типа «много правильных ответов на один вопрос» 13. Имеются записи типа «мало правильных ответов на один вопрос» Следующие входные условия относятся к ответам студентов . Тестами граничных значений в этом случае , по-видимому , должны быть : 14. 0 студентов 15. 1 студент 16. 200 студентов 17. 201 с тудент 18. Есть одна запись об ответе студента , но существуют две записи о правильных ответах 19. Запись об ответе вышеупомянутого студента первая в файле 20. Запись об ответе вышеупомянутого студента последняя в файле 21. Есть две записи об ответах студен та , но существует только одна запись о правильном ответе 22. Запись об ответе вышеупомянутого студента первая в файле 23. Запись об ответе вышеупомянутого студента последняя в файле Можно также получить набор тестов для проверки выходных границ , хотя некот орые из выходных границ (например , пустой отчет 1) покрываются приведенными тестами . Граничными условиями для отчетов 1 и 2 являются : 0 студентов (так же , как тест 14); 1 студент (так же , как тест 15); 200 студентов (так же , как тест 16). 24. Оценки качест ва ответов всех студентов одинаковы 25. Оценки качества ответов всех студентов различны 26. Оценки качества ответов некоторых , но не всех студентов одинаковы (для проверки правильности вычисления рангов ) 27. Студент получает оценку качества ответа 0 28. Ст удент получает оценку качества ответа 100 29. Студент имеет идентификатор наименьшей возможной длины (для проверки правильности упорядочения ) 30. Студент имеет идентификатор наибольшей возможной длины 31. Число студентов таково , что ответ имеет размер , нес колько больший одной страницы (для того чтобы посмотреть случай печати на другой странице ) 32. Число студентов таково , что отчет располагается на одной странице Граничные условия отчета 3 (среднее значение , медиана , среднее квадратическое отклонение ): 33. Среднее значение максимально (качество ответов всех студентов наивысшее ) 34. Среднее значение равно 0 (качество ответов всех студентов равно 0) 35. Среднее квадратическое отклонение равно своему максимуму (один студент получает оценку 0, а другой 100) 36. Среднее квадратическое отклонение равно 0 (все студенты получают одну и ту же оценку ) Тесты 33 и 34 покрывают и границы медианы . Другой полезный тест описывает ситуацию , где существует 0 студентов (проверка деления на 0 при вычислении математического ожида ния ), но он идентичен тесту 14. Проверка отчета 4 дает следующие тесты граничных значений : 37. Все студенты отвечают правильно на первый вопрос 38. Все студенты неправильно отвечают на первый вопрос 39. Все студенты правильно отвечают на последний вопрос 40. Все студенты отвечают на последний вопрос неправильно 41. Число вопросов таково , что размер отчета несколько больше одной страницы 42. Число вопросов таково , что отчет располагается на одной странице Анализ граничных значений , если он применен правильн о , является одним из наиболее полезных методов проектирования тестов . Однако он часто оказывается неэффективным из-за того , что внешне выглядит простым . Применение функциональных диаграмм. Одним из недостатков анализа граничных значений и эквивалентного разбиения является то , что они не исследуют комбинаций входных условий . Например , пусть программа MTEST не выполняется , если произведение числа вопросов и числа студентов превышает некоторый предел (например , объем памяти ). Такая ошибка не обязательно буд ет обнаружена тестированием граничных значений. Тестирование комбинаций входных условий – непростая задача , поскольку даже при построенном эквивалентном разбиении входных условий число комбинаций обычно астрономически велико . Если нет систематического спос оба выбора подмножества входных условий , то , как правило , выбирается произвольное подмножество , приводящее к неэффективному тесту. Метод функциональных диаграмм или диаграмм причинно-следственных связей помогает систематически выбирать высокорезультативные тесты . Он дает полезный побочный эффект , так как позволяет обнаружить неполноту и неоднозначность исходных спецификаций. Функциональная диаграмма представляет собой формальный язык , на который транслируется спецификация , написанная на естественном языке . Диаграмме можно сопоставить цифровую логическую цепь (комбинаторную логическую сеть ), но для ее описания используется более простая нотация (форма-записи ), чем обычная форма записи , принятая в электронике . Для уяснения метода функциональных диаграмм вовсе не обязательно знание электроники , но желательно понимание булевской логики (т.е . логических операторов и , или и не ). Построение тестов этим методом осуществляется в несколько этапов : 1) Спецификация разбивается на «рабочие» участки . Это связано с тем , чт о функциональные диаграммы становятся слишком громоздкими при применении данного метода к большим спецификациям . Например , когда тестируется система разделения времени , рабочим участком может быть спецификация отдельной команды . При тестировании компилято р а в качестве рабочего участка можно рассматривать отдельный оператор языка программирования. 2) В спецификации определяются причины и следствия . Причина есть отдельное входное условие или класс эквивалентности входных условий . Следствие есть выходное услов ие или преобразование системы (остаточное действие , которое входное условие оказывает на состояние программы или системы ). Например , если сообщение программе приводит к обновлению основного файла , то изменение в нем и является преобразованием системы ; под т верждающее сообщение было бы выходным условием . Причины и следствия определяются путем последовательного (слово за словом ) чтения спецификации . При этом выделяются слова и фразы , которые описывают причины и следствия . Каждым причине и следствию приписывае т ся отдельный номер. 3) Анализируется семантическое содержание спецификации , которая преобразуется в булевский граф , связывающий причины и следствия . Это и есть функциональная диаграмма. 4) Диаграмма снабжается примечаниями , задающими ограничения и описываю щими комбинации причин и (или ) следствий , которые являются невозможными из-за синтаксических или внешних ограничений. 5) Путем методического прослеживания состояний условий диаграммы она преобразуется в таблицу решений с ограниченными входами . Каждый столб ец таблицы решений соответствует тесту. 6) Столбцы таблицы решений преобразуются в тесты. Базовые символы для записи функциональных диаграмм. Каждый узел диаграммы может находиться в двух состояниях : 0 или 1. 0 означает , отсутствует , 1 – присутствует. I. Функция тождества Эта функция устанавливает , что если значение «а» есть 1, то и значение «в» есть 1. В противном случае , если «а» - 0, «в» тоже 0. II. Функция НЕ . Она устанавливает , что если значение «а» есть 1, то «в» есть 0. И , ес ли «а» - 0, то «в» есть 1. III. Функция ИЛИ. Она устанавливает , что если или «а» , или «в» есть 1, то «с» есть 1. В противном случае «с» есть 0. IV. Функция И . Она устанавливает , что если и «а» , и «в» есть 1, то «с» тоже есть 1. В противном случае «с» есть 0. Функции И , ИЛИ разрешают иметь любое число входов. Пример : Спецификация : Символ в колонке 1 должен быть буквой – а или в , а символ в колонке 2 должен быть цифрой , в этом случае файл обновля ется . Если первый символ не правильный , то выводится сообщение с кодом x 12, а если второй символ не правильный , то выводится сообщение с кодом x 13. Причины : 1. Символ а в колонке 1; 2. Символ в в колонке 1; 3. Цифра в колонке 2. Следствие : 70. - Файл обно вляется 71. – Выдается сообщение с кодом x 12 72. – Выдается сообщение с кодом x 13 Функциональная диаграмма : На диаграмме создан промежуточный узел 11. Хотя эта диаграмма отображает спецификацию , она содержит не возможную комбинацию причин – причины 1 и 2 не могут быть установлены в 1 одновременно . В большинстве программ определенные комбинации причин невозможны из-за каких-либо ограничений (например , символ не может принимать значение «а» или «в» одновременно ). В этом случае используется дополнительные логические ограничения. I. II. III. IV. 1) Ограничение Е устанавливает , что Е должно быть истинным , если хотя бы одна из причин а или в принимает значение 1 ( а и в не могут принимать значение 1 одновременно ) 2) Ограничение I устанавливает , что , по крайней мере , одна из величин а или в или с всегда должна быть равной 1 ( а , в и с не могут принимать значение 0 одновременно ) 3) Ограничение О устанавливает , что одна и только одна из величин а или в должна быть равна 1 4) Ограничение R устанавливает , что , если а принимает значение 1, то и в должно принимать значение 1 (т.е . невозможно , чтобы а =1, а в =0) Ограничения для следствий : Огра ничение М устанавливает , что , если следствие а имеет значение 1, то следствие в должно принимать значение 0. Как видно из нашего примера физически невозможно , чтобы причины 1 и 2 присутствовали одновременно , но возможно , чтобы присутствовала одна из них , с ледовательно , они связаны ограничением Е. Функциональная диаграмма с ограничением «исключает» Составим таблицу решений в соответствии с функциональной диаграммой . Причины имеют номера 1-3, следствие – 70-72. № теста 1 2 3 4 5 6 Причины 1 2 3 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 1 1 0 Следствие 70 71 72 1 0 0 1 0 0 0 1 0 0 0 1 0 0 1 0 0 1 Шестой тест можно не составлять , т.к . по входу ограничение Е , когда причины 1 и 2 не могут быть равны 1 одновременно. Выводы : Применение функциональных диаграмм – систематический метод генерации тестов , представляющих комбинации условий . Т.к . составление функциональных диаграмм требует применение булевой логики , то это хороший способ обнаружения неполноты и неоднозначност и в исходных спецификациях . Однако , как и любой другой метод , метод функциональных диаграмм не обеспечивает создание всех полезных тестов , к тому же могут оказаться не исследованы граничные условия или недостаточно исследованы , т.к . в этом случае функцион а льная диаграмма невероятно усложняется . 1.2 Обоснование выбора комплекса технических средств используемых для решения задач Таблица составных частей ЭВМ , необходимых для создания данного курсового проекта. Наименование . Модель . PC AD031001 CASE ATX MB JW 663as – ultra CPU 600 Pentium Memory 192, 133 Dimm HDD 6.200. W. D. FDD 1.44 CD-ROM Asus 8x Video M16 tht 132 Keyboard St ps/2 Mouse Gen G-06 Monitor Samsung SyncMaster 500s 1.3 Обоснование выбора комплекса программны х средств используемых для решения задач. В качестве языка программирования был выбран Turbo Pascal 7.0. Придуманный швейцарским ученым Никласом Виртом как средство обучения студентов программированию , язык Паскаль превратился в мощную профессиональную сис тему программирования , так и не утратив интуитивной простоты конструкций . Именно из этих соображений Turbo Pascal и был выбран в качестве языка программирования для решения поставленной задачи. 2. Специальная часть 2.1 Постановка задачи Составить программу и оттестировать ее по методу эквивалентных разбиений (указать возможные ошибки ). Тесты составить только для неправильных классов эквивалентности . Пусть имеется несколько функций одного аргумента Х . Для каждой из них требуется распечатать таблицу значений на некотором отрезке . Отрезок [ a , b ] для каждой функции свой , также для каждой задан шаг изменения аргумента dX . Функции : F1(X) = X*sin(X) a=0.0 b=1.0 dX=0.1 F2(X) = X*cos(X) a=0.5 b=2.1 dX=0.2 F3(X) = a=2.0 b=4.75 dX=0.25 2.2 Метод тестирования программы Эквивалентное разбиение. Хороший тест имеет приемлемую вероятность обнаружения ошибки и что исчерпывающее входное тестирование программы невозможно . Следовательно , тестирование программы ограничивается использованием небольшого подмножества всех возможных входных данных . Тогда , конечно , хотелось бы выбрать для тестирования самое подходящее подм н ожество (т.е . подмножество с наивысшей вероятностью обнаружения большинства ошибок ). Правильно выбранный тест этого подмножества должен обладать двумя свойствами : 1. уменьшать , причем более чем на единицу , число других тестов , которые должны быть разработ аны для достижения заранее определенной цели «приемлемого» тестирования ; 2. покрывать значительную часть других возможных тестов , что в некоторой степени свидетельствует о наличии или отсутствии ошибок до и после применения этого ограниченного множества зн ачений входных данных. Указанные свойства , несмотря на их кажущееся подобие , описывают два различных положения . Во-первых , каждый тест должен включать столько различных входных условий , сколько это возможно , с тем чтобы минимизировать общее число необходим ых тестов . Во-вторых , необходимо пытаться разбить входную область программы на конечное число классов эквивалентности так , чтобы можно было предположить (конечное , не абсолютное уверенно ), что каждый тест , являющийся представителем некоторого класса . Иными словами , если один тест класса эквивалентности обнаруживает ошибку , то следует ожидать , что и все другие тесты этого класса эквивалентности будут обнаруживать ту же самую ошибку . Наоборот , если тест не обнаруживает ошибки , то следует ожидать , что ни один тест этого класса эквивалентности не будет обнаруживать ошибки (в том случае , когда некоторое подмножество класса эквивалентности не попадает в пределы любого другого класса эквивалентности , так как классы эквивалентности могут пересекаться ). Эти два полож ения составляют основу методологии тестирования по принципу черного ящика , известной как эквивалентное разбиение . Второе положение используется для разработки набора «интересных» условий , которые должны быть протестированы , а первое – для разработки минима льного набора тестов , покрывающих эти условия. Разработка тестов методом эквивалентного разбиения осуществляется в два этапа : 1) выделение классов эквивалентности и 2) построение тестов. Выделение классов эквивалентности. Классы эквивалентности выделяются путем выбора каждого входного условия (обычно это предложение или фраза в спецификации ) и разбиением его на две или более групп . Для проведения этой операции используют таблицу. Входные условия Правильные классы эквивалентности Неправильные классы эквивал ентности Заметим , что различают два типа классов эквивалентности : правильные классы эквивалентности, представляющие правильные входные данные программы , и неправильные классы эквивалентности, представляющие все другие возможные состояния условий (т. е . ошибочные входные значения ). Таким образом , придерживаются одного из принципов о необходимости сосредоточивать внимание на неправильных или неожиданных условиях. Если задаться входными или внешними условиями , то выделение классов эквивалентности предст авляет собой в значительной степени эвристический процесс . При этом существует ряд правил : 1. Если входное условие описывает область значений (например «целое данное может принимать значения от 1 до 999» ), то определяются один правильный класс эквивалентно сти (1 значение целого данного 999) и два неправильных (знач ение целого данного < 1 и значение целого данного > 999). 2. Если входное условие описывает число значений (например , «в автомобиле могут ехать от одного до шести человек» ), то определяются один правильный класс эквивалентности и два неправильных ( ни одно го и более шести человек ). 3. Если входное условие описывает множество входных значений и есть основание полагать , что каждое значение программы трактует особо (например , «известны способы передвижения на АВТОБУСЕ , ГРУЗОВИКЕ , ТАКСИ , ПЕШКОМ или МОТОЦИКЛЕ» ), то определяется правильный класс эквивалентности для каждого значения и один неправильный класс эквивалентности (например , « НА ПРИЦЕПЕ» ). 4. Если входное условие описывает ситуацию «должно быть» (например , «первым символом идентификатора должна быть букв а» ), то определяются один правильный класс эквивалентности (первый символ – буква ) и один неправильный (первый символ – не буква ). 5. Если есть любое основание считать , что различные элементы класса эквивалентности трактуются программой неодинаково , то дан ный класс эквивалентности разбивается на меньшие классы эквивалентности. Построение тестов. Второй шаг заключается в использовании классов эквивалентности для построения тестов . Этот процесс включает в себя : 1. Назначение каждому классу эквивалентности ун икального номера. 2. Проектирование новых тестов , каждый из которых покрывает как можно большее число непокрытых правильных классов эквивалентности , до тех пор пока все правильные классы эквивалентности не будут покрыты (только не общими ) тестами. 3. Запис ь тестов , каждый из которых покрывает один и только один из непокрытых неправильных классов эквивалентности , до тех пор пока все неправильные классы эквивалентности не будут покрыты тестами. Причина покрытия неправильных классов эквивалентности индивидуаль ными тестами состоит в том , что определенные проверки с ошибочными входами скрывают или заменяют другие проверки с ошибочными входами . Например , спецификация устанавливает «тип книги при поиске (ВЫЧИСЛИТЕЛЬНАЯ ТЕХНИКА , ПРОГРАММИРОВАНИЕ или ОБЩИЙ ) и количе с тво (1-9999)» . Тогда тест XYZ 0 отображает два ошибочных условия (неправильный тип книги и количество ) и , вероятно , не будет осуществлять проверку количества , так как и программа может ответить : « XYZ – НЕСУЩЕСТВУЮЩИЙ ТИП КНИГИ» и не проверять остальную ч асть входных данных. Пример : Предположим , что при разработке компилятора для подмножества языка Фортран требуется протестировать синтаксическую проверку оператора DIMENSION . Спецификация приведена ниже . В спецификации элементы , написанные латинскими буквам и , обозначают синтаксические единицы , которые в реальных операторах должны быть заменены соответствующими значениями , в квадратные скобки заключены необязательные элементы , многоточие показывает , что предшествующий ему элемент может быть повторен подряд н е сколько раз. Оператор DIMENSION используется для определения массивов . Форма оператора DIMENSION : DIMENSION ad[,ad]…, где ad есть описатель массива в форме n(d[,d]… ), n – символическое имя массива , а d – индекс массива . Символические имена могут содержать от одного до шести символов – букв или цифр , причем первой должна быть буква . Допускается от одного до семи индексов . Форма индекса : [ lb :] ub , где lb и ub задают нижнюю и верхнюю границы индекса массива . Граница может быть либо константой , принимающей знач ения от – 65534 до 64535, либо целой переменной (без индексов ). Если lb определена , то она может иметь отрицательное , нулевое или положительное значение . Как и все операторы , оператор DIMENSION может быть продолжен на нескольких строках (Конец спецификации ). Первый шаг заключается в том , чтобы идентифицировать входные условия и по ним определить классы эквивалентности . Классы эквивалентности в таблице обозначены числами. Следующий шаг – построение теста , покрывающего один или более правильных классов эквив алентности , Например , тест DIMENSION А (2) Покрывает классы 1,4,7,10,12,15,24,28,29 и 40. Далее определяется один или более тестов , покрывающих оставшиеся правильные классы эквивалентности . Так , тест DIMENSION А 12345 (I,9,J4XXXX,65535,1,KLM, X 100),BBB (-65534 : 100,0 : 1000,10 : 10,I : 65535) покрывает оставшиеся классы . Перечислим неправильные классы эквивалентности и соответствующие им тесты : (3) : DIMENSION (5) : DIMENSION (10) (6) : DIMENSION А 234567 (2) (9) : DIMENSION А .1 (2) (11 ) : DIMENSION IA (10) (13) : DIMENSION B (14) : DIMENSION B (4,4,4,4,4,4,4,4) (17) : DIMENSION B (4,A(2)) (18) : DIMENSION B (4,,7) (21) : DIMENSION C (I.,10) (23) : DIMENSION C (10,1J) (25) : DIMENSION D (-65535:1) (26) : DIMENSION D (65536) (31) : DIMENS ION D (4:3) (37) : DIMENSION D (A(2):4) (38) : DIMENSION D (.:4) Эти классы эквивалентности покрываются 18 тестами . Читатель может при желании сравнить данные тесты с набором тестов , полученным каким-либо специальным методом. Хотя эквивалентное разбиение з начительно лучше случайного выбора тестов , оно все же имеет недостатки (т.е . пропускает определенные типы высокоэффективных тестов ). Анализ граничных значений и использование функциональных диаграмм – свободны от многих недостатков , присущих эквивалентном у разбиению. Входные условия Правильные классы эквивалентности Неправильные классы эквивалентности Число описателей массивов Один (1), > одного (2) Ни одного (3) Длина имени массива 1-6 (4) 0 (5), >6 (6) Имя массива Имеет в своем составе буквы (7) и цифр ы (8) Содержит что-то еще (9) Имя массива начинается с буквы Да (10) Нет (11) Число индексов 1-7 (12) 0 (13), >7 (14) Верхняя граница Константа (15), целая переменная (16) Имя элемента массива (17), что-то иное (18) Имя целой переменной Имеет в своем с оставе буквы (19), и цифры (20) Состоит из чего-то еще (21) Целая переменная начинается с буквы Да (22) Нет (23) Константа -65534-65535 (24) <-65534 (25), >65535 (26) Нижняя граница определена Да (27), нет (28) Верхняя граница по отношению к нижней гр анице Больше (29), равна (30) Меньше (31) Значение нижней границы Отрицательное (32), нуль (33), >0 (34) Нижняя граница Константа (35), целая переменная (36) Имя элемента массива (37), что-то иное (38) Оператор расположен на нескольких строках Да (39), нет (40) 2.3 Спецификация программы . Спецификация переменных. Название задачи : Вычисление ; Название программы : Functions ; Компьютер : IBM PC 286 и выше ; Программное обеспечение : Turbo Pascal 7.0. Идентификатор переменных Назначение Тип данных Диа пазон a,b,dx,x,f1,f2,f3 a – начало диапазона b – конец диапазона dx – шаг x – аргумент функции f 1, f 2, f 3 – значения функций real 2,9*10 -39 … 1,7*10 38 2.4 Алгоритм программы и его описание. Блок – схема алгоритма приведена а Приложении 1 лист 001,002,003. Б лок № 1 – Описание переменных. Блок № 2,8,14 – Присвоение переменным значений. Блок № 3,9,15 – Проверка условия. Блок № 4,10,16 – Расчет функции. Блок № 5,11,17 – Изменение х с шагом. Блок № 6,7,12,13,18,19 – Вывод расчетов на экран. 2.5 Описание программы. Тек ст программы смотри Приложение 2. 1 – Название программы. 2 – Подключение модуля очистки экрана. 3,4,5 – Блок объявления переменных. 6 – Пустая строка. 7 – Объявление процедуры. 8 – Начало процедуры. 9,10 – Присвоение значений переменным. 11 – Проверка усл овия. 12 – Расчет функции. 13 – Вывод на экран. 14 – Изменение шага. 15 – Конец цикла. 16 – Вывод пустой строки на экран. 17 – Конец процедуры. 18 – Пустая строка. 19 – Объявление процедуры. 20 – Начало процедуры. 21,22 – Присвоение значений переменным. 23 – Проверка условия. 24 – Расчет функции. 25 – Вывод на экран. 26 – Изменение шага. 27 – Конец цикла. 28 – Вывод пустой строки на экран. 29 – Конец процедуры. 30 – Пустая строка. 31 – Объявление процедуры. 32 – Начало процедуры. 33,34 – Присвоение значений переменным. 35 – Проверка условия. 36 – Расчет функции. 37 – Вывод на экран. 38 – Изменение шага. 39 – Конец цикла. 40 – Вывод пустой строки на экран. 41 – Конец процедуры. 42 – Пустая строка. 43 – Начало основной программы. 44 – Очистка экрана. 45,46,47 – Запрос процедуры. 48 – Ожидание нажатия клавиши для просмотра результатов. 49 – Конец программы . 2.6 Тестирование программы. Разработанная программа была оттестирована по методу эквивалентных разбиений. Входные условия Правильные классы эквивалентно сти Неправильные классы эквивалентности Границы диапазона 2,9*10 -39 до 1,7*10 38 (1) <2,9*10 -39 (2), >1,7*10 38 (3) Верхняя граница Константа (4), вещественная переменная (5) Что-то иное (6) Имя вещественной переменной начинается с буквы Да (7), Нет (8) Что- то иное (9) Нижняя граница определена Да (10), нет (11) Верхняя граница по отношению к нижней границе Больше (12), равно (13) Меньше (14) Нижняя граница Константа (15), вещественная переменная (16) Что-то иное (17) Шаг изменения диапазона границы Константа (18), единица (19) Что-то иное (20) Неправильные классы эквивалентности и соответствующие им тесты : (2) a= 3,0*10 -39; (3) b= 1,8*10 38; (6) a= t; (9) []x: real; (14) a=2.0; b=1.0; (17) k:integer; (20) dx=p; 2.7 Контрольный пример. Входные данные : a=0.0; b=1.0; dx=0.1 Выходные данные : x=0.00 f1=0.00 x=0.10 f1=0.01 x=0.20 f1=0.04 x=0.30 f1=0.09 x=0.40 f1=0.16 x=0.50 f1=0.24 x=0.60 f1=0.34 x=0.70 f1=0.45 x=0.80 f1=0.57 x=0.90 f1=0.70 Входные данные : a=0.5; b=2.1; dx=0.1 Выходные да нные : x =0.50 f 2=0.44 x=0.70 f2=0.54 x=0.90 f2=0.56 x=1.10 f2=0.50 x=1.30 f2=0.35 x=1.50 f2=0.11 x=1.70 f2=-0.22 x =1.90 f 2=-0.61 Входные данные : a=2.0; b=4.75; dx=0.25 Выходные данные : x =2.00 f 3=1.41 x=2.25 f3=1.50 x=2.50 f3=1.58 x=2.75 f 3=1.66 x=3.00 f3=1.73 x=3.25 f3=1.80 x=3.50 f3=1.87 x=3.75 f3=1.94 x=4.00 f3=2.00 x=4.25 f3=2.06 x=4.50 f3=2.12 x =4.75 f 3=2.18 2.8 Инструкция пользователю. Программа предоставляется в виде исходного текста ( . pas ). Для того чтобы программа работала в среде Паскаль , ее необходимо откомпилировать . Это делается следующим образом : 1. Необходимо нажать следующее сочетание клавиш ALT + F 9, CTRL + F 9 2. После того , как программа выдаст результат , для того чтобы вернуться в режим исходного текста необходимо наж ать любую клавишу. 3. При необходимости рассчитать другой диапазон с другим шагом , необходимо изменить значения переменных a , b , dx в функциях fun 1, fun 2, fun 3. Затем сохранить программу нажав клавишу F 2. Далее смотри пункт 1,2. Приложение 1 Лист 001 Лист 002 001 8 Лист 003 002 14 Приложен ие 2 program Functions; (1) uses crt; (2) var (3) a,b,dx,x:real; (4) f1,f2,f3:real; (5) (6) procedure fun1; (7) begin (8) a:=0.0; b:=1.0; dx:=0.1; (9) x:=a; (10) while (x>=a) and (x<=b) do begin (11) f1:=x*sin(x); (12) writeln(' x=',x, ' f1=' ,f1); (13) x:=x+dx; (14) end; (15) writeln; (16) end; (17) (18) procedure fun2; (19) begin (20) a:=0.5; b:=2.1; dx:=0.2; (21) x:=a; (22) while (x>=a) and (x<=b) do begin (23) f2:=x*cos(x); (24) writeln(' x=' ,x, ' f2=' ,f2); (25) x:=x+dx; (26) end; (27) w riteln; (28) end; (29) (30) procedure fun3; (31) begin (32) a:=2.0; b:=4.75; dx:=0.25; (33) x:=a; (34) while (x>=a) and (x<=b) do begin (35) f3:=sqrt(x); (36) writeln(' x=' ,x, ' f3=' ,f3); (37) x:=x+dx; (38) end; (39) writeln; (40) end; (41) (42) begin (43) clrscr; (44) fun1; (45) fun2; (46) fun3; (47) readkey; (48) end. (49) Заключение. В процессе выполнения этого курсового проекта , я научилась тестировать программу методом эквивалентных разбиений . Как отмечалось выше , при разработке программ и программных комплексов значит ельная часть трудозатрат разработчиков и экономических затрат приходится на отладку и тестирование продукта . В этом можно убедиться , ознакомившись с данным проектом . Для решения математической задачи была разработана и оттестирована методом эквивалентных р азбиений программа Functions . Также был сформирован список возможных ошибок , выявляемых тестами. Список использованной литературы. 1. Г . Майерс «Искусство тестирования программ» 1982 г. 2. Б.В . Архангельский «Поиск устойч ивых ошибок в программах» 1989 г .
1Архитектура и строительство
2Астрономия, авиация, космонавтика
 
3Безопасность жизнедеятельности
4Биология
 
5Военная кафедра, гражданская оборона
 
6География, экономическая география
7Геология и геодезия
8Государственное регулирование и налоги
 
9Естествознание
 
10Журналистика
 
11Законодательство и право
12Адвокатура
13Административное право
14Арбитражное процессуальное право
15Банковское право
16Государство и право
17Гражданское право и процесс
18Жилищное право
19Законодательство зарубежных стран
20Земельное право
21Конституционное право
22Конституционное право зарубежных стран
23Международное право
24Муниципальное право
25Налоговое право
26Римское право
27Семейное право
28Таможенное право
29Трудовое право
30Уголовное право и процесс
31Финансовое право
32Хозяйственное право
33Экологическое право
34Юриспруденция
 
35Иностранные языки
36Информатика, информационные технологии
37Базы данных
38Компьютерные сети
39Программирование
40Искусство и культура
41Краеведение
42Культурология
43Музыка
44История
45Биографии
46Историческая личность
47Литература
 
48Маркетинг и реклама
49Математика
50Медицина и здоровье
51Менеджмент
52Антикризисное управление
53Делопроизводство и документооборот
54Логистика
 
55Педагогика
56Политология
57Правоохранительные органы
58Криминалистика и криминология
59Прочее
60Психология
61Юридическая психология
 
62Радиоэлектроника
63Религия
 
64Сельское хозяйство и землепользование
65Социология
66Страхование
 
67Технологии
68Материаловедение
69Машиностроение
70Металлургия
71Транспорт
72Туризм
 
73Физика
74Физкультура и спорт
75Философия
 
76Химия
 
77Экология, охрана природы
78Экономика и финансы
79Анализ хозяйственной деятельности
80Банковское дело и кредитование
81Биржевое дело
82Бухгалтерский учет и аудит
83История экономических учений
84Международные отношения
85Предпринимательство, бизнес, микроэкономика
86Финансы
87Ценные бумаги и фондовый рынок
88Экономика предприятия
89Экономико-математическое моделирование
90Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
- В каких органах больше всего паразитов?
- В государственных.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, курсовая по программированию "Тестирование", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru