- •Государственный комитет рф по высшему образованию
- •Содержание
- •Введение
- •Введение Дистанционное обучение
- •Задачи дистанционного обучения
- •Цели дистанционного обучения
- •Особенности дистанционного обучения
- •Виды обеспечения дистанционного обучения
- •Проблемы дистанционного обучения
- •Тьюторное обучение
- •Преподаватель - организатор тьюторного обучения
- •Технологии и носители тьюторного обучения
- •Раздел I
- •Выбор и обоснование программных средств Современные интернет-технологии
- •Программное обеспечение серверов
- •Корневой каталог
- •Индексные файлы
- •Заголовки отклика http
- •Сценарии cgi
- •Использование ssi
- •Богатство возможностей языка Perl
- •Использование языка Perl как шлюза безопасности
- •Frontend-программы для связи с базой данных
- •Использование языка Perl для написания cgi-скриптов
- •Особенности sql
- •Клиентская часть
- •Браузеры Netscape Navigator и Microsoft Internet Explorer
- •Язык разметки гипертекстовых страниц html
- •Особенности html
- •Инструментарий редактирования html
- •Средства проверки html
- •Проверка с использованием редакторов html
- •Особенности Homesite
- •Средства css
- •Интерфейс пользователя
- •Дизайн сайта Выбор структуры web-страницы Создание фиксированных и гибких Web-страниц
- •Система меню
- •Работа администратора в системе
- •Интерфейс пользователя
- •Отладка процедур и функций интеллектуальной системы Особенности тестирования и отладки программ
- •Общая структура отладки программ
- •Пример отладки скриптов на основе общей структуры отладки программ
- •4 'Эх, хорошо в стране советской жить!!!'
- •4 'И чего хорошего???'
- •Раздел II Технологическая часть
- •Технологическая часть Общие принципы тестирования программ
- •Тестирование модулей
- •Тестирование и отладка сайта
- •Нисходящее тестирование
- •Восходящее тестирование
- •Подготовка к тестированию
- •Тестирование модуля common.Cgi
- •Тестирование скрипта login_st.Cgi
- •Тестирование остальных скриптов
- •Раздел III
- •Оценка конкурентоспособности программного продукта
- •Оценка конкурентоспособности тьюторного обучения
- •Психофизиологические опасные и вредные производственные факторы
- •Планирование и размещение оборудования
- •Организация рабочего места
- •Рациональный режим труда и отдыха при работе с персональным компьютером
- •Микроклимат
- •Излучения монитора
- •Защита от статического электричества
- •Электробезопасность
- •Противопожарная безопасность
- •Освещение
- •Шумы и вибрация
- •Санитарно - профилактические мероприятия и расчет воздухообмена
- •Заключение
- •Заключение
- •Список используемой литературы
Общая структура отладки программ
Процесс отладки программ включает:
создание совокупности тестовых эталонных значений и правил, которым должна соответствовать программа по выполняемым функциям, структуре, правилам описания, значениям исходных и результирующих данных,
тестирование программ,
диагностику и локализацию причин отклонения результатов тестирования от заданных эталонных значений и правил,
разработку применения программы с целью исключения причин отклонения результатов от эталонных,
реализацию корректировки программы, обеспечивающую соответствие программы заданному эталону.
Основным методом обнаружения ошибок при отладке программ является их тестирование. При этом затраты на тестирование достигают 3040% общих затрат на разработку программ и в значительной степени определяют качество созданного программного продукта.
Высокая доля затрат на тестирование приводит к необходимости создания методов и средств, позволяющих достигать максимального качества программ при реальных ограничениях на длительность тестирования и является важнейшим фактором, определяющим стоимость и длительность разработки сложных программных комплексов с заданным качеством. Вследствие этого создаются различные методы систематического и регламентированного тестирования, обеспечивающие наилучшее использование ресурсов проектирования с учетом особенностей создаваемых программ.
Для определения задач тестирования целесообразно выделить три стадии:
тестирование для обнаружения ошибок в программе,
тестирование для диагностики и локализации причин обнаруженных искажений результатов,
тестирование для контроля выполненных корректировок программ и данных.
Основной целью тестирования для обнаружения ошибок является выявление всех отклонений результатов от заданных эталонных значений. На этой стадии успешным является тестирование, которое приводит к обнаружению ошибок. Если в результате тестирования ошибки не выявлены, то проведенные операции не дали сведений, позволяющих повысить качество программ, и тем самым не оправдали затрат.
После тестирования для обнаружения ошибок применяется тестирование для их диагностики и локализации. На этой стадии важнейшая задача – точно установить место искажения программы или данных, являющихся причиной отклонения результатов от эталонов. Тем самым определяется часть программы, подлежащая корректировке.
На этой стадии затраты оправданы, и тестирование можно считать успешным, если оно приводит к полной локализации ошибки, подлежащей исправлению.
После локализации и устранения обнаруженных ошибок применяется контрольное тестирование, задача которого состоит в подтверждении правильности выполненной корректировки и в отсутствии проявления ранее обнаруженных ошибок. В этом случае успешность тестирования определяется отсутствием вторичных ошибок, которые могут появиться при корректировке.
Пример отладки скриптов на основе общей структуры отладки программ
Пример отладки скрипта, с помощью которого осуществляется проверка работы функции печати форума студента с тьютором.
Для отладки скрипта открываем окно терминала и с помощью командного интерпретатора запускаем скрипт в отладочном режиме:
egosteva@zeta:~/lena.tvc.ru/cgi-bin$ perl -d test.pl
Default die handler restored.
Loading DB routines from perl5db.pl version 1.07
Editor support available.
Enter h or `h h' for help, or `man perldebug' for more help.
main::(test.pl:7): my $dbh = DBI->connect('dbi:mysql:lena','egosteva','password') or die;
Окно терминала с запущенной сессией отладки скрипта
С помощью команд «n» (next, выполнение до следующей конструкции текущей программы, без выполнения отладки вызовов подпрограмм), «s» (step into, выполнение до следующей конструкции языка, с заходом в подпрограммы) трассируем выполнение скрипта до интересующего нас места. Ввод пустой строки означает повторение предыдущей команды «n» или «s».
DB<1> n
main::(test.pl:8): printTalks($dbh,1);
DB<1> s
main::printTalks(common.cgi:154): my ( $dbh, $student) = @_;
DB<1> n
main::printTalks(common.cgi:156): my $sth = $dbh->prepare(
main::printTalks(common.cgi:157): 'select id,upper_id,creator_type,creator_id,descr,add_date from talks where student_id='.$student.' order by add_date'
main::printTalks(common.cgi:158): );
DB<1>
main::printTalks(common.cgi:159): unless( $sth && $sth->execute ) {
DB<1>
main::printTalks(common.cgi:164): my @talks=();
DB<1>
main::printTalks(common.cgi:165): my %admins=();
DB<1>
main::printTalks(common.cgi:166): my %studs=();
DB<1>
main::printTalks(common.cgi:167): while( my @arr=$sth->fetchrow_array ) {
DB<1>
main::printTalks(common.cgi:168): $arr[3] = int($arr[3]);
DB<1>
main::printTalks(common.cgi:169): push @talks, [ @arr ];
DB<1>
main::printTalks(common.cgi:170): if( $arr[2] eq 'S' ) {
DB<1>
main::printTalks(common.cgi:174): $admins{$arr[3]} = 1;
DB<1>
main::printTalks(common.cgi:167): while( my @arr=$sth->fetchrow_array ) {
DB<1> n
main::printTalks(common.cgi:168): $arr[3] = int($arr[3]);
DB<1>
main::printTalks(common.cgi:169): push @talks, [ @arr ];
DB<1>
main::printTalks(common.cgi:170): if( $arr[2] eq 'S' ) {
С помощью встроенной команды «x» печатаем содержимое интересующих нас переменных вместе с их типами. Нас интересует правильно ли заполнен массив @talks.
DB<1> x @talks
0 ARRAY(0x83ced88)
0 1
1 0
2 'A'
3 1