Файл: Отладка и тестирование программ: основные подходы и ограничения.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 06.04.2023

Просмотров: 283

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Ведение протокола работы программы

В ряде случаев бывает неудобно или невозможно пользование пошаговой отладкой программ. В таких ситуациях могут помочь контрольные точки, не прерывающие работу программы, а лишь помещающие некоторую информацию в специальный файл трассировки. Для реализации такой точки нужно раскрыть окно Run|Add Breakpoint|Source Breakpoint, убрать флажок в переключателе Break и написать сообщение в строке Log message. Можно также в строке Eval expression указать выражение, которое будет вычислено и вместе с сообщением помещено в протокол работы программы. Возможен просмотр этого протокола в любой момент (в том числе и после завершения прогона программы) с помощью опции View|Debug Windows|Event Log. [19]

Кроме того, при отладке программ можно вставлять печать промежуточных переменных в разных частях программ для того, чтобы определить, какие части программы выполнялись и какие значения принимали переменные. Этим приемом пользуются программисты при отладке программ.

1.3. Тестирование программ

Под тестированием понимают процесс выполнения программного обеспечения с целью обнаружения мест некорректной работы программы. Для достижения наилучшего результата намеренно конструируются трудные и разнообразные наборы входных данных, учитывающих всевозможные случаи. Главная цель проверяющего в создании оптимальных возможностей для отказа программного продукта. Хотя иногда тестирование разработанной программы может быть упрощено до обычной проверки работоспособности и выполнения функций. Это сэкономит время, но ведет к ненадежности программного обеспечения, недовольству пользователей и так далее. [19]

Необходимо, чтобы ошибок в программном обеспечении не было с самого начала. Для этого нужно грамотно проектировать архитектуру, четко составить техническое задание, а также важно не вносить коррективы в связи, когда работа над проектом уже начата.

Чтобы контролировать правильность приложения, составляются тесты. Они состоят из начальных данных и значений, которые должны получиться как результирующие (или промежуточные). Для более успешного выявления проблем и несоответствий, тесты необходимо составлять после того, как был разработан алгоритм, но не началось программирование. Причем желательно использовать несколько подходов при расчете необходимых данных. В таком случае больше вероятность обнаружения ошибки благодаря тому, что можно исследовать код с другой точки зрения. Комплексно тесты должны обеспечивать проверку внешних эффектов готовой программной системы, а также ее алгоритмов работы. [18]


Как правило, тестирование программ происходит в объемах, необходимых для минимальной проверки функциональности в ограниченных пределах. Деятельность ведётся с изменением параметров, а также условий их работы. Процесс тестирования можно разделить на три этапа:

  • Проверка в обычных условиях. В данном случае проводится тестирование основного функционала разработанного программного обеспечения. Полученный результат должен соответствовать ожидаемому. [18]
  • Проверка в чрезвычайных условиях. В этих случаях подразумевается получение граничных данных, могущих негативно повлиять на работоспособность созданного программного обеспечения. В качестве примера можно привести работу с чрезвычайно большими или малыми числами, или вообще, полное отсутствие получаемой информации.
  • Проверка при исключительных ситуациях. Она предполагает использование данных, лежащих за гранью обработки. В таких ситуациях очень плохо, когда программное обеспечение воспринимает их как пригодные к расчету и выдаёт правдоподобный результат. Необходимо позаботиться, чтобы в подобных случаях происходило отвержение любых данных, которые не могут быть корректно обработаны. Также необходимо предусмотреть информирование об этом пользователя. [19]

Выводы по 1 главе

В главе кратко рассмотрены 8 этапов процесса проектирования и разработки программ. Для выявления и устранения программных ошибок производится отладка и тестирование программ. Данные процессы рассмотрены более подробно на примере среды Дельфи.

2. Процесс проектирования и разработки программы на практике, отладка и тестирование программы

2.1. Постановка задачи, ее алгоритмизация

Нужно ввести квадратную матрицу 3х3, состоящую из целых положительных и отрицательных элементов. Посчитать количество отрицательных элементов, определить и вывести наименьшее отрицательное число, т.е. наибольшее по абсолютной величине; сумму и произведение положительных элементов матрицы.


Алгоритмизацию задачи проведем, используя схему структурного программирования «сверху-вниз». Нарисуем укрупненную блок-схему алгоритма (рис. 5). [17]

начало

Ввод массива А[3,3]

Аij>0

нет да

Определение количества K отрицательных чисел и миним. отрицат. числа MO

Определение суммы S и произведения P положительных чисел

Печать S и P

Печать К и МО

конец

Рисунок 5 – Укрупненная блок-схема [9]

По блок-схеме на рис. 5 определим блоки, используя принцип модульного программирования:

  1. Ввод массива А[3,3] – процедура VvodA;
  2. Определение минимального отрицательного (наибольшего по абсолютной величине) числа MO и числа отрицательных элементов массива kk;
  3. Определение суммы и произведения положительных элементов массива.

Представим теперь блок-схемы каждого блока, оформляемого в виде процедуры на рис. 6 - 8. [7]

j=1;

i=1;

начало

Ввод элемента аij

J<5

j=j+1;

да

i<5

i=i+1;

да

конец

Рисунок 6 – Блок-схема алгоритма ввода массива А [9]

начало

k=0; kk=0

i=1;

j=1;

Аi,j<0

да

kk=kk+1;

MО>Аij

k=1

нет да да

j=j+1;

MО=Аij

k=1; MO=Aij

да

j<=5

нет

i=i+1;

i<=5

да

нет

Вывод МО и kk

конец

Рисунок 7 – Блок-схема алгоритма нахождения минимального отрицательного элемента массива [9; 13]

начало

S=0; P=1

i=1;

j=1;

Аi,j>0

да

S=S+aij;

P=P*aij

нет

j=j+1;

да

j<=5

нет

i=i+1;

i<=5

да

нет

Вывод S и P

конец

Рисунок 8 – Блок-схема алгоритма нахождения суммы и произведения положительных элементов массива [7; 9]

Теперь приступим к программированию задачи на языке Delphi 7.

2.2. Составление программы

Программу составим на языке высокого уровня Delphi 7. Для простоты отладки программы возьмем массив 3х3, состоящий из 9 элементов. Программу назовем Primer.pas. В основной программе сначала вызывается процедура VvodA, вводящая элементы матрицы 3х3 по нажатию кнопки Ввод. Затем введенный массив печатается поэлементно. Если элемент массива отрицательный, определяется минимальное отрицательное число и количество отрицательных элементов массива.


Если элемент массива положительный – считается сумма и произведение положительных элементов массива.

// ввод двумерного массива, определение миним. отрицат. числа, количество отрицат. чисел, суммы и произведения положительных чисел массива , вывод результатов

unit Primer;

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;

type

TForm1 = class(TForm)

Memo1: TMemo;

Button1: TButton;

procedure VvodA(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

A: array[0..5,0..5] of integer;

i,j,k,k1,MO,m,l: Integer;

S,P: Integer;

str1: string; [1]

implementation

{$R *.dfm}

procedure TForm1.VvodA(Sender: TObject);

// ввод массива чисел

var

A: array[0..5,0..5] of integer;

i,j,k,k1,S,P: integer;

str1: string; [15; 16]

begin

k:=1;

for i:=1 to 3 do

for j:=1 to 3 do

begin

str1:=Memo1.Lines[k-1];

A[i,j]:=StrToInt(str1);

k:=k+1;

end; [4; 3; 2]

S:=0; P:=1;

k1:=0; l:=0;

for i:=1 to 3 do

for j:=1 to 3 do begin

if A[i,j]>=0 then begin

S:=S+A[i,j]; //подсчет суммы положительных элементов

P:=P*A[i,j]; //подсчет произведения положительных элементов

end

else begin //отрицательные элементы

if k1=1 then if MO>A[i,j] then MO:=A[i,j]

else

else begin k1:=1; MO:=A[i,j]; end;

str1:='MO='+IntToStr(MO);

ShowMessage(str1);

l:=l+1;

end;

end; [1; 2; 3]

str1:='Количество отрицательных элементов='+IntToStr(l);

ShowMessage(str1);

str1:='Минимальный отрицательный элемент='+IntToStr(MO);

ShowMessage(str1);

str1:='Сумма положительных элементов='+IntToStr(S);

ShowMessage(str1);

str1:='Произведение положитeльных элементов='+IntToStr(P);

ShowMessage(str1);

end; [10; 11; 12; 14]

END.

2.3. Отладка и тестирование программы

При отладке программы были установлены точки останова и окно наблюдения за переменными str1 и A[I,j], что облегчило отладку и позволило обнаружить ошибки в программе. Также для отладки программы была вставлена печать в разные части программы для того, чтобы обнаружить, какие блоки программы были выполнены.

При тестировании программы брался набор чисел:

1, 2, -3, 4, 5, -6, 7, 8, -9.

В конце программы печатается следующая информация:

  • Количество отрицательных элементов, подсчет количества производился в переменной l (рис. 9); [18, 19]
  • Минимальный отрицательный элемент, сохраненный в переменной МО (рис. 10);
  • Сумма положительных элементов S (рис. 11);
  • Произведение положительных элементов Р (рис. 12).

Рисунок 9 – Сообщение о количестве отрицательных элементов


Рисунок 10 – Результат выполнения программы Primer.pas с сообщением о минимальном отрицательном элементе

Рисунок 11 – Результат выполнения программы Primer.pas с сообщением о сумме положительных элементов

Проверим вручную правильность: 1+2+4+5+7+8 = 27. Результат совпадает.

Рисунок 12 – Результат выполнения программы Primer.pas с сообщением о произведении положительных элементов

1*2*4*5*7*8 = 2240. Результат также совпадает, следовательно, алгоритм и программа составлены правильно.

Второй набор чисел при тестировании программы:

-11, 22, -33, 44, 55, -66, 77, 88, -99. [21]

Результат выполнения программы для этого набора приведен на рис. 13-15. [10; 15; 16]

Рисунок 13 – Результат выполнения программы Primer.pas с сообщением о минимальном отрицательном элементе

Рисунок 14 – Результат выполнения программы Primer.pas с сообщением о сумме положительных элементов

22+44+55+77+88 = 286. Результат также совпадает. [18]

Рисунок 12 – Результат выполнения программы Primer.pas с сообщением о произведении положительных элементов [16; 19]

22+44+55+77+88 = 360 754 240. Результат также совпадает, что свидетельствует о правильной работе программы.

Вывод по 2 главе

Во 2-ой главе поставлена задача ввода массива целых чисел 3х3, подсчета количества отрицательных элементов массива, определение наименьшего отрицательного элемента; подсчета суммы и произведения положительных элементов массива и вывод их. При написании программы использованы методы структурного программирования программирование «сверху-вниз», модульное программирование. При отладке программы использовались точки останова, окно наблюдения за переменными, что облегчило отладку и позволило обнаружить ошибки в программе.

При тестировании программы брались разные наборы данных, результаты работы программы сравнивались с подсчитанными вручную результатами. Результаты совпали, что свидетельствует о правильности составления алгоритма и корректности работы программы.

ЗАКЛЮЧЕНИЕ

Проектирование и разработка программ состоит из следующих последовательных этапов: