1. В приведенном ниже псевдокоде есть ошибка. Внимательно прочтите этот псевдокод, объясните грамматические особенности псевдокода, найдите и исправьте ошибки в псевдокоде. Псевдокод программы статистики частоты слов выглядит следующим образом:
INITIALIZE the Program
READ the first text record
DO WHILE there are more words in the text record
DO WHILE there are more words in the text record
EXTRACT the next text word
SEARCH the word-table for the extracted word
IF the extracted word is found
INCREMENT the word’s occurrence count
ELSE
INSERT the extracted word into the table
END IF
INCREMENT the words-processed count
END DO at the end of the text record
READ the next text record
END DO when all text records have heen read
PRINT the table and summary information
TERMINATE the program отвечать:INSERT the extracted word into the За этим стоит таблица. Есть ли какое-либо появление/счет этого слова? Присвойте значение 1
2. Изучите приведенную ниже программу псевдокода, требующую: (1) Нарисуйте блок-схему программы. (2) Является ли оно структурированным или неструктурированным? Приведите причины. (3) Если оно неструктурировано, то (а) Преобразовать ее в структурированную программу, используя только 3 управляющие структуры; (б) Напишите псевдокод этого структурированного проекта; © Представьте эту структурированную программу в виде коробчатой диаграммы. (4) Найдите и исправьте ошибки в логике программы. КОММЕНТАРИЙ: ПРОГРАММА ПОИСКА ПО ПЕРВЫМ N ССЫЛКАМ К ТЕМЕ В ИНФОРМАЦИОННОМ ПОИСКЕ СИСТЕМА С T ВСЕГО ЗАПИСИ ВХОД Н ВВЕДИТЕ КЛЮЧЕВЫЕ СЛОВА ДЛЯ ТЕМЫ Я=О СОВПАДЕНИЕ=0 ДЕЛАЙТЕ ПОКА I≤T Я=Я+1 ЕСЛИСЛОВО=КЛЮЧЕВОЕ СЛОВО ТОГДА СООТВЕТСТВИЕ=СООТВЕТСТВИЕ+1 СОХРАНИТЬ В БУФЕРЕ КОНЕЦ ЕСЛИПОИСКПОЗ=Н ТОГДА ПЕРЕХОДИТЕ К ВЫВОДУ КОНЕЦ КОНЕЦ ЕСЛИ N=0 ЗАТЕМ НАпечатайте «НЕТ СОВПАДЕНИЯ» ВЫХОД:ELSE ВЫЗОВ ПОДПРОГРАММЫ ДЛЯ ПЕЧАТИ ИНФОРМАЦИИ БУФЕРА КОНЕЦ отвечать:
(4) Ошибка в программе: переменной «WORD» в операторе «IF WORD=KEYWORD» заранее не присвоено значение. Значение Т заранее не вводится в программу "N=0" должно быть "MATCH=0"
3.существовать Вопрос В конструкции 2, если входное значение N или КЛЮЧЕВОЕ СЛОВО необоснованно, возникнут проблемы. (1) Приведите примеры необоснованных значений этих переменных. (2) Каковы последствия ввода этих необоснованных значений в программу? (3) Как вы можете добавить меры защиты от ошибок в свою программу, чтобы предотвратить эти проблемы? отвечать: (1)N=1,KEYWOED=#。 (2) Невозможно распечатать какую-либо информацию. (3) Добавить в цикл
4. (1) Что такое модульное тестирование и интеграционное тестирование? Каковы особенности каждого из них? (2) Предположим, что программа состоит из 1000 строк операторов FORTRAN (около 5000 машинных инструкций после компиляции), оцените, сколько ошибок будет обнаружено при ее тестировании? Почему? (3) Тестовые случаи покрытия операторов проектирования и покрытия путей для следующих программ псевдокода: START INPUT(A,B,C) IF A>5 THEN X=10 ELSE X=1 END IF IF B>10 THEN X=20 ELSE X=2 END IF IF C>15 THEN X=30 ELSE X=3 END IF PRINT (X,Y,Z) STOP есть: (1) Тестирование модулей проводится для каждого отдельного модуля, с использованием черного ящика и тестирования соответственно. белого технологии ящика, проверяет правильность ее работы, проверяет конкретные пути в структуре управления модулем и находит максимальное количество ошибок. Его характеристики таковы: в основном используется технология тестирования «белого ящика», и тестирование нескольких модулей может выполняться одновременно. Интеграционное тестирование заключается в сборке модулей вместе в полный пакет программного обеспечения и его тестировании во время сборки. Характеристики таковы: могут возникнуть проблемы с интерфейсом. (2) От 25 до 100 ошибок в месяц. Некоторые статистические данные из США говорят нам, что это соотношение обычно находится в пределах 0,005-0,02. То есть до тестирования на 1000 инструкций приходится около 5-20 ошибок. Если допустить 10 ошибок на 1000 инструкций перед тестированием, то расчетное количество ошибок, которые будут обнаружены во время тестирования, составит: 5000×10/1000=50. (3) Тестовые примеры покрытия операторов Поскольку каждое выражение суждения имеет оператор присваивания, когда оно истинно или ложно, для того, чтобы каждое выражение выполнялось хотя бы один раз, необходимо в общей сложности два набора тестовых данных, чтобы каждое выражение суждения оценивалось как истинное или ложное один раз. Ниже приведены типичные тестовые примеры для реализации операторов: ①Сделать все значения трех выражений суждения ложными. Ввод: A=1, B=1, C=1 Ожидаемый результат: X=1, Y=2, Z=3 ② Сделать все значения трех выражений суждения истинными. Ввод:А=20,Б=40,С=60 Ожидаемый результат: X=10, Y=20, Z=30 Тестовые примеры покрытия путей Эта программа имеет в общей сложности 8 возможных путей выполнения, и для достижения покрытия путей требуется в общей сложности 8 наборов тестовых данных. Ниже приведены типичные тестовые примеры для достижения покрытия пути: ①Все значения трех выражений суждения ложны. Ввод: A=1, B=1, C=1 Ожидаемый результат: X=1, Y=2, Z=3 ②Три выражения суждения: ложные, ложные и истинные в указанном порядке. Ввод: A=1, B=1, C=60 Ожидаемый результат: X=1, Y=2, Z=30 ③Три выражения суждения: ложные, истинные и ложные в следующем порядке: Ввод: A=1, B=40, C=1 Ожидаемый результат: X=1, Y=20, Z=3 ④Три выражения суждения являются ложными, истинными и истинными в порядке Ввод: A=1, B=40, C=60 Ожидаемый результат: X=1, Y=20, Z=30 ⑤Три выражения суждения последовательно являются истинными, ложными и ложными. Ввод: A=20, B=1, C=1 Ожидаемый результат: X=10, Y=2, Z=3 ⑥Три выражения суждения являются истинными, ложными и истинными в указанном порядке. Ввод: A=20, B=1, C=60 Ожидаемый результат: X=10, Y=2, Z=30 ⑦Три выражения суждения последовательно являются истинными, истинными и ложными. Ввод: A=20, B=40, C=1 Ожидаемый результат: X=10, Y=20, Z=3 ⑧Все три выражения суждения верны. Ввод:А=20,Б=40,С=60 Ожидаемый результат: X=10, Y=20, Z=30
5. В библиотеке имеется система поиска информации с использованием ЭЛТ-терминала. В системе имеются следующие четыре основные команды поиска:
Требовать:
(1) Разработать тестовые данные для всесторонней проверки нормальной работы системы;
(2) Разработайте тестовые данные для проверки ненормальной работы системы. наличие: (1) Тестовые данные для проверки нормальной работы системы. ①Выполните последовательно следующие 3 команды: b(KEYWORD) s(L) d(N) Среди них KEYWORD — правильное ключевое слово; L — один из примерно 20 номеров строк, отображаемых на экране после выполнения команды b (по крайней мере, L должен быть номером первой, последней и центральной строки соответственно); N — один из перечисленных индексных номеров; после выполнения команды s (должно быть не менее N — это первый, последний и средний индекс соответственно). Повторите приведенную выше последовательность команд для нескольких разных КЛЮЧЕВЫХ СЛОВ. ②Выполните последовательно следующие 2 команды: f(NAME) d(N) Среди них NAME — известное имя автора; N — один из индексных номеров, перечисленных после выполнения команды f (не менее N-). это первый, последний и средний индекс соответственно). Повторите приведенную выше последовательность команд для нескольких разных имен. (2) Данные испытаний для ненормальной работы испытательной системы. ①Используйте слишком длинные ключевые слова в качестве параметров команды b: например, b (надежность software and hardware combined) Ожидаемый результат: система усекает слишком длинные ключевые слова. Например, ключевое слово «возможность» в приведенной выше команде усекается до надежности. software ②Используйте неправильные ключевые слова в качестве параметров команды b: например, b (AARDV ARK) Ожидаемый результат: показывает наиболее близкий результат соответствия, например, после выполнения указанной выше команды может отображаться 1.AARON,JULES(book) ③ Используйте число на 1 больше, чем максимальный номер строки, указанный после выполнения команды b, в качестве параметра команды s. Ожидаемый результат: «Аргументы команды отсутствуют в списке номеров строк» ④Используйте цифры и знаки препинания в качестве параметров команды b и команды f. Ожидаемый результат: «Неправильный тип параметра». ⑤Используйте буквенные символы в качестве параметров команд s и d. Ожидаемый результат: «Неправильный тип параметра». ⑥Используйте 0 и отрицательные числа в качестве параметров команды s и команды d. Ожидаемый результат: «Неверное значение параметра». ⑦Неправильный порядок команд: например, команда s выполняется до выполнения команды b, или команда d выполняется до выполнения команды s. Ожидаемый результат: «Неправильный порядок команд». ⑧ Синтаксическая ошибка команды: например, имя команды b, s, d или f опущено или параметры команды не заключены в круглые скобки; Ожидаемый результат: «Синтаксическая ошибка команды». ⑨Параметр команды пуст: например, b(), s(), d или f(). Ожидаемый результат: система предоставляет параметры по умолчанию или выдает сообщение об ошибке. ⑩Используйте имя автора с ошибкой в качестве параметра f. Ожидаемый результат: «Работ этого автора не найдено».
6. Авиакомпания А заказывает программу для планирования маршрутов полетов у компании-разработчика программного обеспечения Б. Предположим, вы инженер-программист в компании-разработчике программного обеспечения C, а компания A наняла вашу собственную компанию для проведения приемочного тестирования указанной выше программы. Задача состоит в том, чтобы спроектировать входные данные для приемочного испытания на основе следующих фактов и объяснить причины выбора этих данных. Навигатор вводит в программу пункт отправления и назначения, а также ориентировочную высоту полета в зависимости от погоды и типа самолета. Программа считывает такие данные, как направление и сила ветра на пути, и формирует 3 набора планов полета (высота, скорость, направление и 5 контрольных точек положения на пути). План полета должен быть составлен таким образом, чтобы минимизировать расход топлива и время полета. отвечать: Используйте обычные входные данные в качестве тестовых данных ①Введите в программу традиционную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения, высоту и скорость. ②Введите 3–5 наборов отправных точек и пунктов назначения и повторите шаг 1. ③Введите фиксированную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения и высоту, введите 3–5 различных скоростей соответственно и повторите шаг 1. ④Введите фиксированную отправную точку, пункт назначения, модель самолета, 5 контрольных точек положения и скорость, введите 3–5 различных высот соответственно и повторите шаг 1. ⑤ Введите фиксированную отправную точку, пункт назначения, модель самолета, скорость и высоту, введите 3–5 различных наборов контрольных точек местоположения соответственно и повторите шаг 1. ⑥Введите фиксированную отправную точку, пункт назначения, 5 контрольных точек положения и высоту, введите 3–5 различных моделей самолетов соответственно и повторите шаг 1. ⑦ Введите фиксированный пункт назначения, 5 контрольных точек положения и высоту, введите 3–5 различных моделей самолетов соответственно и повторите шаг 1. ⑧Введите фиксированную отправную точку, 5 контрольных точек положения и высоту, введите 3–5 различных пунктов назначения соответственно и повторите шаг 1. (2) Используйте специальные значения данных в качестве тестовых данных. ①Введите тесты комбинации очень высоких и очень низких данных соответственно. ②Тест с отрицательными числами ③Введите число 0 для проверки. ④Введите тест начальной точки и пункта назначения, которые находятся очень далеко и очень близко друг к другу соответственно. да и размер, размер меньше размера массива и дает искомое значение, которое находится в некотором массиве; Ожидаемый результат: возврат -1; ⑤Сначала укажите массив и размер массива, размер больше размера массива, и укажите искомое значение, которого нет в массиве. середина; Ожидаемый результат: возврат -1; ⑥Сначала укажите массив и размер массива, размер больше размера массива, и укажите искомое значение, которое находится в некотором массиве. середина; Ожидаемый результат: возврат -1;
7. Строго говоря, существует два разных теста покрытия путей, а именно покрытие пути программы и покрытие пути графа программы. Эти два типа тестов можно назвать естественным выполнением и принудительным выполнением программы соответственно. Так называемое естественное выполнение означает, что тестер (человек или компьютер) считывает условное выражение в программе, вычисляет значение условного выражения (истина или ложь) на основе текущего значения переменной программы и соответствующим образом разветвляется. Принудительное выполнение — это искусственная концепция, созданная при использовании программных диаграмм в качестве абстрактных моделей программ для упрощения задач тестирования. Смысл принудительного выполнения состоит в том, что при обнаружении условного выражения тестер заставляет программу выполниться в двух ситуациях (значение условного выражения — true или false). Очевидно, что принудительное выполнение будет проходить по всем путям графа программы. Однако из-за взаимозависимости между различными условными выражениями некоторые из этих путей могут никогда не пройти во время естественного выполнения. Чтобы концепция принудительного выполнения была полезной на практике, преимущества от упрощения инструмента тестирования должны перевешивать недостатки использования дополнительных недостижимых тестовых примеров. В большинстве случаев количество принудительно выполняемых тестов ненамного превышает количество тестов, которые выполнялись бы естественным путем. Более того, определение принудительного выполнения фактически включает метод, который сокращает количество запусков, необходимых при тестировании программ, содержащих циклы. время. Большая часть времени выполнения программы обычно тратится на многократное выполнение циклов DO в программе, особенно вложенных циклов. Следовательно, необходимо изобрести технику, чтобы каждый цикл DO выполнялся только один раз. Это не снижает мощности теста, поскольку опыт показывает, что ошибки чаще всего возникают при первом или последнем выполнении цикла. Методика, предложенная профессором Лэммелем для автоматического тестирования каждого пути, заключается в следующем. При написании программы каждый цикл DO должен быть записан в специальной форме, содержащей тестовую переменную T и переменную режима M, поэтому DO I= 1 TO 38 Напряжение становится DO I=1 TO M×38+(1-M)×T Видно, что при М=0 – тестовый режим, а при М=1 – нормальный режим работы. В тестовом режиме, если T=0, цикл будет выполнен не один раз, а если T=1, цикл будет выполнен только один раз. Аналогично операторы IF должны быть переписаны с использованием переменных шаблона и тестовых переменных, например. IF X+Y>0 THEN Z=X ELSE Z=Y Напряжение становится IF M×(X+Y)+T>0 THEN Z=X ELSE Z=Y Установите M=1 и T=0 во время нормальной работы, установите M=0 во время тестирования, установите T=+1 для тестирования части THEN и установите T=+1 для проверки части ELSE. T=-1。Требовать: (1) Выберите цикл и ЕСЛИ Программа заявлений с использованием Laemmel Технически модифицируйте эту программу, фактически протестируйте программу на компьютере и интерпретируйте полученные результаты. (2) Разработайте программу по Леммелю. Технология автоматически модифицирует тестируемую программу. Используйте этот инструмент тестирования для изменения программы, модифицированной вручную в предыдущем вопросе. Согласуются ли результаты, полученные с помощью двух модификаций? (3) Как поставить Леммель Продвижение технологий будет включать ПОКА DO и ПОВТОРИТЬ UNTIL Программа заявления? (4) Попробуйте проанализировать Леммеля преимущества и недостатки технологии и дать предложения по улучшению. отвечать:(1)if (x+y)>2 A=x Else A=y Изменить на: если M×(x+y)+T>2 A=x Else A=y Результаты согласуются. (2) Оба результата согласуются. (3)WHILE DO японский ЕСЛИ ELSE Техники модификации аналогичны. (4) Преимущество состоит в том, что это может сделать результаты более точными. Недостаток в том, что это касается не всех программ, а иногда работа некоторых программ усложняется.
8. После одного месяца интеграционного тестирования программы, содержащей 10 000 машинных инструкций, всего было исправлено 15 ошибок, а MTTF = 10 часов на данный момент. , за два месяца тестирования всего исправлено 25 ошибок (за второй месяц исправлено 10 ошибок), MTTF=15h; 。Требовать: (1) Определите MTTF на основе приведенных выше данных. Нарисуйте MTTF в зависимости от времени тестирования. Кривая зависимости от времени испытания τ. Какие предположения были сделаны при построении этой кривой? (2) Для достижения MTTF=100h , сколько времени должно занять интеграционное тестирование? Сколько ошибок было исправлено к моменту завершения интеграционного теста и сколько ошибок еще скрывается в программе? отвечать:(1)MTTF Кривая зависимости от времени испытания τ выглядит следующим образом:
Предполагается, что во время отладки не возникает новых ошибок. (2) По формуле оценки средней наработки на отказ: 1/К(Эт/10000-100/10000)=10 1/К (Эт/10000-300/10000)=15 Рассчитано: К = 333, Et = 45. Когда MTTF=100h, происходит 1/333(45/10000-Эк/10000)=100 Рассчитано: Ec=42 С учетом хода тестирования и исправления ошибок за первые два месяца потребуется 3 месяца интеграционного тестирования. По окончании теста всего было исправлено 42 ошибки, а 3 ошибки все еще скрывались в программе.
Например, при интеграционном тестировании программы длиной 100 000 инструкций записываются следующие данные: (a ) 1 июля: Начато интеграционное тестирование, ошибок не обнаружено. (b ) 2 августа: всего исправлено 100 ошибок, на данный момент MTTF=0,4 часа. (c ) 1 сентября: Всего исправлено 300 ошибок, на данный момент MTTF=2 часа. Ответьте на следующие вопросы на основе данных, перечисленных выше. (1) Оцените общее количество ошибок в программе. (2) Чтобы сделать MTTF Достичь 10 часов , как долго эту программу нужно тестировать и отлаживать? (3) Нарисуйте MTTF и кривая функциональной зависимости между временем испытания τ. Ответ: (1) По формуле оценки средней наработки на отказ: 1/K(Et/100000-100/100000)=0.4 1/K (Et/100000-300/100000)=2 Рассчитано: К =1000, Et=350, то есть общее количество ошибок в программе равно 350. (2) Когда MTTF =10h иногда есть 1/K (350/100000- Ec/100000)=10 Рассчитано: Ec=340 На основании хода тестирования и исправления ошибок за первые два месяца будут проведены дополнительные 2 месяца интеграционного тестирования. (3)MTTF Кривая функциональной зависимости между ним и временем испытания τ выглядит следующим образом:
10. При тестировании программы длиной 24 000 инструкций два тестировщика А и Б самостоятельно тестируют программу в первый месяц. После месяца тестирования A обнаружил и исправил 20 ошибок, сделав MTTF Достичь 10 часов . При этом Б нашел 24 ошибки, 6 из которых нашел и А. С этого момента А будет продолжать тестировать программу в одиночку. просить: (1) Сколько потенциальных ошибок было в программе при первом запуске тестирования? (2) Чтобы сделать MTTF Достичь 60 часов , сколько еще ошибок надо исправить? Сколько времени занимает тестирование? (3) Нарисуйте MTTF Кривая функциональной зависимости со временем интегрирования τ. Ответ: (1) По формуле: B0=B2B1/bc. , вы можете получить: B0=20×24/6=80, то есть всего в программе на начало теста 80 ошибок. (2) По формуле оценки средней наработки на отказ: 1/K(80/24000-20/24000)=10 1/K(80/24000- Ec/24000)=60 Рассчитано: К=40,Ec=70 Это означает, что осталось еще 50 ошибок, которые необходимо исправить. Согласно прогрессу коррекции А, предполагается, что это займет еще 3 месяца. (3)MTTF Кривая функциональной связи со временем интегрирования τ выглядит следующим образом: