рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Оценочное тестирование

Оценочное тестирование - раздел Философия, Автономное тестирование компонентов программного обеспечения После Завершения Комплексного Тестирования Приступают К Оценочному Тестирован...

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

Оценочное тестирование, которое также называют «тестированием системы в целом», включает следующие виды:

• тестирование удобства использования - последовательная проверка соответствия программного продукта и документации на него основным положениям технического задания;

• тестирование на предельных объемах - проверка работоспособности программы на максимально больших объемах данных, например, объемах текстов, таблиц, большом количестве файлов и т. п.;

• тестирование на предельных нагрузках - проверка выполнения программы на возможность обработки большого объема данных, поступивших в течение короткого времени;

• тестирование удобства эксплуатации - анализ психологических факторов, возникающих при работе с программным обеспечением; это тестирование позволяет определить, удобен ли интерфейс, не раздражает ли цветовое или звуковое сопровождение и т. п.;

• тестирование защиты - проверка защиты, например, от несанкционированного доступа к информации;

• тестирование производительности - определение пропускной способности при заданной конфигурации и нагрузке;

• тестирование требований к памяти - определение реальных потребностей в оперативной и внешней памяти;

• тестирование конфигурации оборудования - проверка работоспособности программного обеспечения на разном оборудовании;

• тестирование совместимости - проверка преемственности версий: в тех случаях, если очередная версия системы меняет форматы данных, она должна предусматривать специальные конвекторы, обеспечивающие возможность работы с файлами, созданными предыдущей версией системы;

• тестирование удобства установки - проверка удобства установки;

• тестирование надежности - проверка надежности с использованием математических моделей;

• тестирование восстановления - проверка восстановления программного обеспечения, например системы, включающей базу данных, после сбоев оборудования и программы;

• тестирование удобства обслуживания - проверка средств обслуживания, включенных в программное обеспечение;

• тестирование документации - тщательная проверка документации, например, если документация содержит примеры, то их все необходимо попробовать;

• тестирование процедуры - проверка ручных процессов, предполагаемых в системе.

Естественно, целью всех этих проверок является поиск несоответствий техническому заданию. Считают, что только после выполнения всех видов тестирования программный продукт может быть представлен пользователю или к реализации. Однако на практике обычно выполняют не все виды оценочного тестирования, так как это очень дорого и трудоемко. Как правило, для каждого типа программного обеспечения выполняют те виды тестирования, которые являются для него наиболее важными. Так базы данных обязательно тестируют на предельных объемах, а системы реального времени - на предельных нагрузках.

14. Отладка ПО – классификация ошибок: ошибки компиляции, компоновки, выполнения; причины ошибок выполнения.

Отладка-это процесс локализации и исправления ошибок, обнаруженных при тестировании программного обеспечения. Локализацией называют процесс определения оператора программы, выполнение которого вызвало нарушение нормального вычислительного процесса. До исправления ошибки необходимо определить ее причину, т. е. определить оператор или фрагмент, содержащие ошибку. Причины ошибок могут быть как очевидны, так и очень глубоко скрыты.

В целом сложность отладки обусловлена следующими причинами:

• требует от программиста глубоких знаний специфики управления используемыми техническими средствами, операционной системы, среды и языка программирования, реализуемых процессов, природы и специфики различных ошибок, методик отладки и соответствующих программных средств;

• психологически дискомфортна, так как необходимо искать собственные ошибки и, как правило, в условиях ограниченного времени;

• возможно взаимовлияние ошибок в разных частях программы, например, за счет затирания области памяти одного модуля другим из-за ошибок адресации;

• отсутствуют четко сформулированные методики отладки.

В соответствии с этапом обработки, на котором проявляются ошибки, различаю:

синтаксические ошибки - ошибки, фиксируемые компилятором (транслятором, интерпретатором) при выполнении синтаксического и частично семантического анализа программы;

ошибки компоновки - ошибки, обнаруженные компоновщиком (редактором связей) при объединении модулей программы;

ошибки выполнения - ошибки, обнаруженные операционной системой, аппаратными средствами или пользователем при выполнении программы.

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

Следует иметь в виду, что чем лучше формализованы правила синтаксиса языка, тем больше ошибок из общего количества может обнаружить компилятор и, соответственно, меньше ошибок будет обнаруживаться на следующих этапах. В связи с этим говорят о языках программирования с защищенным синтаксисом и с незащищенным синтаксисом. К первым, безусловно, можно отнести Pascal, имеющий очень простой и четко определенный синтаксис, хорошо проверяемый при компиляции программы, ко вторым - Си со всеми его модификациями. Чего стоит хотя бы возможность выполнения присваивания в условном операторе в Си, например: if (c = n) x = 0; /* в данном случае не проверятся равенство с и n, а выполняется присваивание с значения n, после чего результат операции сравнивается с нулем, если программист хотел выполнить не присваивание, а сравнение, то эта ошибка будет обнаружена только на этапе выполнения при получении результатов, отличающихся от ожидаемых */

Ошибки компоновки.Ошибки компоновки, как следует из названия, связаны с проблемами,

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

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

• появление сообщения об ошибке, зафиксированной схемами контроля выполнения машинных команд, например, переполнении разрядной сетки, ситуации «деление на ноль», нарушении адресации и т. п.;

• появление сообщения об ошибке, обнаруженной операционной системой, например, нарушении защиты памяти, попытке записи на устройства, защищенные от записи, отсутствии файла с заданным именем и т. п.;

• «зависание» компьютера, как простое, когда удается завершить программу без перезагрузки операционной системы, так и «тяжелое», когда для продолжения работы необходима перезагрузка;

• несовпадение полученных результатов с ожидаемыми.

Причины ошибок выполнения очень разнообразны, а потому и локализация может оказаться крайне сложной. Все возможные причины ошибок можно разделить на следующие группы:

• неверное определение исходных данных,

• логические ошибки,

• накопление погрешностей результатов вычислений.

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

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

К последней группе относят:

ошибки некорректного использования переменных, например, неудачный выбор типов данных, использование переменных до их инициализации, использование индексов, выходящих за границы определения массивов, нарушения соответствия типов данных при использовании явного или неявного переопределения типа данных, расположенных в памяти при использовании нетипизированных переменных, открытых массивов, объединений, динамической памяти, адресной арифметики и т. п.;

ошибки вычислений, например, некорректные вычисления над неарифметическими переменными, некорректное использование целочисленной арифметики, некорректное преобразование типов данных в процессе вычислений, ошибки, связанные с незнанием приоритетов выполнения операций для арифметических и логических выражений, и т. п.;

ошибки межмодульного интерфейса, например, игнорирование системных соглашений, нарушение типов и последовательности при передачи параметров, несоблюдение единства единиц измерения формальных и фактических параметров, нарушение области действия локальных и глобальных переменных;

• другие ошибки кодирования, например, неправильная реализация логики программы при кодировании, игнорирование особенностей или ограничений конкретного языка программирования.

Накопление погрешностей результатов числовых вычислений возникает, например, при некорректном отбрасывании дробных цифр чисел, некорректном использовании приближенных методов вычислений, игнорировании ограничения разрядной сетки представления вещественных чисел в ЭВМ и т. п.

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

• опосредованного проявления ошибок;

• возможности взаимовлияния ошибок;

• возможности получения внешне одинаковых проявлений разных ошибок;

• отсутствия повторяемости проявлений некоторых ошибок от запуска к запуску – так называемые стохастические ошибки;

• возможности устранения внешних проявлений ошибок в исследуемой ситуации при внесении некоторых изменений в программу, например, при включении в программу диагностических фрагментов может аннулироваться или измениться внешнее проявление ошибок;

• написания отдельных частей программы разными программистами.

15. Методы отладки ПО: ручное тестирование, индукции, дедукция, обратное прослеживание.

Отладка программы в любом случае предполагает обдумывание и логическое осмысление всей имеющейся информации об ошибке. Большинство ошибок можно обнаружить по косвенным признакам посредством тщательного анализа текстов программ и результатов тестирования без получения дополнительной информации. При этом используют различные методы:

• ручного тестирования;

• индукции;

• дедукции;

• обратного прослеживания.

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

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

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


Самый ответственный этап - выявление симптомов ошибки. Организуя данные об ошибке, целесообразно записать все, что известно о ее проявлениях, причем фиксируют, как ситуации, в которых фрагмент с ошибкой выполняется нормально, так и ситуации, в которых ошибка проявляется. Если в результате изучения данных никаких гипотез не появляется, то необходима дополнительная информация об ошибке. Дополнительную информацию можно получить, например, в результате выполнения схожих тестов. В процессе доказательства пытаются выяснить, все ли проявления ошибки объясняет данная гипотеза, если не все, то либо гипотеза не верна, либо ошибок несколько.


Метод дедукции.По методу дедукции вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки. Затем анализируя причины, исключают те, которые противоречат имеющимся данным. Если все причины исключены, то следует выполнить дополнительное тестирование исследуемого фрагмента. В противном случае наиболее вероятную гипотезу пытаются доказать. Если гипотеза объясняет полученные признаки ошибки, то ошибка найдена, иначе - проверяют следующую причину (рис. 10.4).


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

16. Методы и средства получения дополнительной информации об ошибке: отладочный вывод, интегрированные средства отладки, независимые отладчики.

Для получения дополнительной информации об ошибке можно выполнить добавочные тесты или использовать специальные методы и средства:

• отладочный вывод;

• интегрированные средства отладки;

• независимые отладчики.

Отладочный вывод.Метод требует включения в программу дополнительного отладочного вывода в узловых точках. Узловыми считают точки алгоритма, в которых основные переменные программы меняют свои значения. Например, отладочный вывод следует предусмотреть до и после завершения цикла изменения некоторого массива значений. (Если отладочный вывод предусмотреть в цикле, то будет выведено слишком много значений, в которых, как правило, сложно разбираться.) При этом предполагается, что, выполнив анализ выведенных значений, программист уточнит момент, когда были получены неправильные значения, и сможет сделать вывод о причине ошибки. Данный метод не очень эффективен и в настоящее время практически не используется, так как в сложных случаях в процессе отладки может потребоваться вывод большого количества - «трассы» значений многих переменных, которые выводятся при каждом изменении. Кроме того, внесение в программы дополнительных операторов может привести к изменению проявления ошибки, что нежелательно, хотя и позволяет сделать определенный вывод о ее природе.

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

Интегрированные средства отладки.Большинство современных сред программирования (Delphi, Builder C++, Visual Studio и т. д.) включают средства отладки, которые обеспечивают максимально эффективную отладку. Они позволяют:

• выполнять программу по шагам, причем как с заходом в подпрограммы, так и выполняя их

целиком;

• предусматривать точки останова;

• выполнять программу до оператора, указанного курсором;

• отображать содержимое любых переменных при пошаговом выполнении;

• отслеживать поток сообщений и т. п.

Применять интегрированные средства в рамках среды достаточно просто. Используют разные приемы в зависимости от проявлений ошибки. Если получено сообщение об ошибке, то сначала уточняют, при выполнении какого оператора программы оно получено. Для этого устанавливают точку останова в начало фрагмента, в котором проявляется ошибка, и выполняют операторы в пошаговом режиме до проявления ошибки. Аналогично поступают при «зависании» компьютера.

Если получены неправильные результаты, то локализовать ошибку обычно существенно сложнее. В этом случае сначала определяют фрагмент, при выполнении которого получаются неправильные результаты. Для этого последовательно проверяют интересующие значения в узловых точках. Обнаружив значения, отличающиеся от ожидаемых, по шагам трассируют соответствующий фрагмент до выявления оператора, выполнение которого дает неверный результат.

Отладка с использованием независимых отладчиков.При отладке программ иногда используют специальные программы - отладчики, которые позволяют выполнить любой фрагмент программы в пошаговом режиме и проверить содержимое интересующих программиста переменных. Как правило такие отладчики позволяют отлаживать программу только в машинных командах, представленных в 16-ричном коде.

17. Общая методика отладка ПО: изучение проявления ошибки, локализация ошибки, определение причины ошибки, исправление ошибки, повторное тестирование.

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

2 этап - локализация ошибки - определение конкретного фрагмента, при выполнении которого произошло отклонение от предполагаемого вычислительного процесса. Локализация может выполняться:

• путем отсечения частей программы, причем, если при отсечении некоторой части программы ошибка пропадает, то это может означать как то, что ошибка связана с этой частью, так и то, что внесенное изменение изменило проявление ошибки;

• с использованием отладочных средств, позволяющих выполнить интересующих нас фрагмент программы в пошаговом режиме и получить дополнительную информацию о месте проявления и характере ошибки, например, уточнить содержимое указанных переменных.

При этом если были получены неправильные результаты, то в пошаговом режиме проверяют ключевые точки процесса формирования данного результата.Ошибка не обязательно допущена в том месте, где она проявилась. Если в конкретном случае это так, то переходят к следующему этапу.

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

4 этап - исправление ошибки - внесение соответствующих изменений во все операторы, совместное выполнение которых привело к ошибке.

5 этап - повторное тестирование - повторение всех тестов с начала, так как при исправлении обнаруженных ошибок часто вносят в программу новые.

Следует иметь в виду, что процесс отладки можно существенно упростить, если следовать основным рекомендациям структурного подхода к программированию:

• программу наращивать «сверху-вниз», от интерфейса к обрабатывающим подпрограммам, тестируя ее по ходу добавления подпрограмм;

• выводить пользователю вводимые им данные для контроля и проверять их на допустимость сразу после ввода;

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

Кроме того, следует более тщательно проверять фрагменты программного обеспечения, где уже были обнаружены ошибки, так как вероятность ошибок в этих местах по статистике выше. Это вызвано следующими причинами. Во-первых, ошибки чаще допускают в сложных местах или в тех случаях, если спецификации на реализуемые операции недостаточно проработаны. Во-вторых, ошибки могут быть результатом того, что программист устал, отвлекся или плохо себя чувствует. В-третьих, как уже упоминалось выше, ошибки часто появляются в результате исправления уже найденных ошибок.

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

18. Организация испытаний, цель испытаний, предварительные и совместные испытания, виды испытаний в жизненном цикле ПО: опытного образца, рабочей версии, модернизированной версии; категории испытаний: функциональные, стрессовые, использования ресурсов ЭВМ, параллельного решения задач.

Организация испытаний комплексов программ. Используются для программ, создаваемых на уровне продукции производствен­но-технического назначения и отчуждаемых от разработчика. Важная осо­бенность испытаний программы состоит в наличии достаточно полных эталонов, которым должен соответствовать КП, тре­бований технического задания. Цель испытаний — определение степени соответствия созданного комплекса программ техниче­скому заданию, полученному от заказчика.

Испытания сложных КП являются наиболее формализован­ным и регламентированным видом тестирования. Для всесторон­ней проверки опытный образец КП подвергается испытаниями главного конструктора (предварительные испытания) и заказчи­ка-пользователя с участием разработчиков (совместные испыта­ния).

При испытаниях главного конструктора, которые зачастую совмещаются с завершением комплексной отладки, производится, по существу, такое же тестирование, что и на совместных испытаниях, только в меньшем объеме. Эти проверки оформляются документально и являются основанием для предъявления КП за­казчику на совместные испытания. Любые испытания ограничены допустимым объемом проверок и длительностью работы комиссии, поэтому не могут гарантировать всестороннюю проверку изделия. Для повышения достоверности определения и улучшения харак­теристик КП после испытаний главного конструктора программы целесообразно на некоторое время передавать на опытную эксплу­атацию в типовых условиях. Это позволяет более глубоко оце­нить эксплуатационные характеристики созданного комплек­са и устранить некоторые ошибки. Опытная эксплуатация КП проводится разработчиками с участием испытателей и некоторых пользователей, назначаемых заказчиком. Результаты опытной эксплуатации после испытаний главного конструктора могут учитываться при совместных испытаниях для их сокращения.

В жизненном цикле КП можно выделить следующие виды испытаний

-опытного образца на полное соответствие требованиям технического задания,

-рабочей версии КП, адаптированной к условиям конкретного применения,

-версии модернизированного КП при сопровождении.

Функциональное тестирование — наиболее об­ширное и труднее всего систематизируемое. Набор испытатель­ных тестов полностью определяется функциональными задачами и сложностью КП. Эти тесты должны обеспечивать проверку и демонстрацию заказчику или пользователю качества решения функциональных задач, сформулированных в техническом зада­нии и конкретизированных в документации. Поскольку исчерпывающее тестирование для сложных КП невозможно, большое значение имеют уточнение областей варьирования тестовых дан­ных и выделение областей их изменения, наиболее важных для последующего использования программ

Стрессовое тестирование (в критических ситуа­циях) базируется на классификации областей определения ис­ходных данных и использует граничные или экстремальные значения параметров и условий. Комбинация критических зна­чений и условий испытаний в большинстве случаев очень разнообразна, и необходим тщательный анализ для выделения до­статочно представительной выборки. Кроме того, при стрессо­вых испытаниях должно быть показано, что при изменении ис­ходных данных за допустимыми пределами эти ситуации обна­руживаются, селектируются и выдается диагностика о наруше­нии ограничений на условии эксплуатации программ.

Тестирование использования ресурсов ЭВМ комплексом программ в значительной степени является стрессовым тестированием. При этом внимание сосредо­точивается на исследовании зависимости объема памяти и дли­тельности решения задач от характеристик исходной информа­ции. Определяются допустимые размерность задач и интенсив­ности потоков исходных данных, при которых возможно нормальное функционирование КП на данной ЭВМ

Тестирование параллельного решения за­дач в многомашинных или многопроцессорных вычислитель­ных комплексах состоит в испытаниях взаимодействия программ и данных при одновременном исполнений компонент КП. Эти испытания можно разделить на две части при детерминирован­ных запланированных ситуациях и при случайном нормальном функционировании программ. В первом случае основная проб­лема состоит в создании представительного многообразия ситу­аций параллельного функционирования программ. Вторая часть тестирования может совмещаться с остальными видами испытаний и заключается в основном в выделении случайных тестов и условий, при которых проверяется недетерминированное па­раллельное исполнение программ.

19. Испытания программ на надежность: прямые экспериментальные методы определения показателей надежности программ в условиях нормального функционирования, форсированные методы испытаний реальных систем на надежность.

Особенности испытаний на надежность программ. В теории надежности разработан ряд методов, позволяющих определять характеристики надежности сложных систем: прямые экспериментальные методы определения показателей надежности систем в условиях нормального функционирования и форсиро­ванные методы испытаний реальных систем на надежность.

Прямые экспериментальные методы опре­деления показателей надежности программ в нормальных условиях функционирования в ряде случаев весьма трудно использовать при испытаниях из-за большого времени наработки на отказ (десятки и сотни часов). Сложность выяв­ления и регистрации редких отказов, а также высокая стоимость экспериментов при длительном функционировании сложных КП приводят к тому, что на испытаниях получаются малые выборки зарегистрированных отказов. Кроме того, при таких эксперимен­тах трудно гарантировать представительность выборки исход­ных данных, так как режимы эксплуатации определяются кон­кретными условиями использования данного КП на испыта­ниях.

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

На этапе испытаний целесообразно устранять в программах локализованные ошибки. Вследствие этого характеристики на­дежности КП в среднем улучшаются, однако возможны измене­ния программы, которые их ухудшают. Изменения показателей надежности необходимо связывать во времени с моментами кор­ректировки программ. Анализируя связь между значениями на­дежности и процессом изменения программ, можно выявить корректировки, которые содержат ошибки и ухудшают надежность.

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

Форсированные методы испытаний реаль­ных систем на надежность осуществляются путем тестирования КП при повышенной интенсивности искажений ис­ходных данных с широким варьированием их значений, а также специальным увеличением загрузки КП выше нормальной. Планирование форсированных испытаний должно предусматривать последующий пересчет полученных показателей надежности на условия нормального функционирования. Для этого необходимо изучать надежность испытываемых программ в зависимости от интенсивности искажений данных или от характеристик пере­грузки ЭВМ и способы пересчета получаемых показателей на нормальные условия эксплуатации.

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

20. Достоверность испытаний: методическая и статистическая достоверность; документирование результатов испытаний: исходных и отчетные документы при испытаниях программ – техническое задание, государственные и отраслевые стандарты, программа испытаний, методики испытаний, протоколы испытаний, акт испытаний.

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

Методическая достоверность испытаний КП оп­ределяется следующими факторами:

-полнотой программы испытаний, корректностью методик те­стирования, степенью охвата возможных условий функциони­рования и областей изменения исходных данных программ;

-достоверностью и точностью эталонных значений, с которыми сравниваются результаты тестирования испытываемой програм­мы или которые служат опорными при расчете параметров, зафиксированных в техническом задании;

-адекватностью и точностью моделей, используемых для ими­тации внешней среды и их реакции на управляющие воздей­ствия;

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

Статистическая достоверность испытаний в значительной степени ограничена допустимым объемом и продол­жительностью испытаний. Методы теории планирования экспери­ментов позволяют упорядоченно варьировать исходные данные и наиболее эффективно использовать ограниченные ресурсы тести­рования. При планировании испытаний большое значение имеют характеристики средств автоматизации, используемых для ими­тации внешней среды и обработки результатов. Противоречия между необходимой степенью достоверности тестирования и объ­емом анализируемых данных при различных видах испытаний привели к созданию системы автоматизации испытаний различ­ной сложности и глубины проверок.

Документы:

1) ТЗ

Техническое задание представляет собой документ, в котором сформулированы основные цели разработки, требования к программному продукту, определены сроки и этапы разработки и регламентирован процесс приемно-сдаточных испытаний. В разработке технического задания участвуют как представители заказчика, так и представители исполнителя. В основе этого документа лежат исходные требования заказчика, анализ передовых достижений техники, результаты выполнения научно-исследовательских работ, предпроектных исследований, научного прогнозирования и т. п.

2) Государственные и отраслевые стандарты

3) Программа испытаний — это план проведения серии экспери­ментов. Он разрабатывается с позиции минимизации объема тестирования при заданной и согласованной с заказчиком до­стоверности получаемых результатов. Для этого методами фактор­ного анализа и теории планирования экспериментов определяются последовательность и объем каждого тестирования в процессе проведения испытаний для проверки выполнения требований тех­нического задания при минимальных затратах. Особенно сложно выбрать набор стрессовых ситуаций функционирования сис­темы, при которых следует провести испытания. Программа испытаний должна содержать следующие четко сформулирован­ные разделы:

-объект испытаний, его назначение и перечень основных до­кументов, определивших его разработку;

-цель испытаний с указанием основных требований техни­ческого задания, подлежащих проверке, и ограничений на прове­дение испытаний,

-собственно программу испытаний, содержащую проверку комплектности спроектированного КП в соответствии с техни­ческим заданием и план тестирования для проверки функциони­рования программ по всем разделам технического задания и до­полнительным требованиям, формализованным отдельными ре­шениями;

-методики испытаний, однозначно определяющие все понятия проверяемых характеристик, условия тестирования, средства, ис­пользуемые для испытаний, методики обработки и оценки ре­зультатов тестирования по каждому разделу программы испыта­ний.

Результаты испытаний фиксируются в протоколах, которые обычно содержат следующие разделы:

-назначение тестирования и раздел требований технического задания, по которому проводится испытание;

-указание методик, в соответствии с которыми проводились испытания, обработка и оценка результатов;

-условия проведения тестирования и характеристика исходных данных;

-обобщенные результаты испытаний с оценкой их на соответ­ствие требованиям технического задания и другим руководящим документам;

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

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

Однако, как уже отмечалось, для сложных КП трудно на начальных этапах проектирования предусмотреть и корректно сформулировать все требования технического задания. Поэтому при отладке и испытаниях часто выявляется, что некоторые тре­бования технического задания оказываются невыполненными и иногда даже принципиально не могут быть выполнены при самом добросовестном отношении к этому со стороны разработчика. В этом случае необходима совместная работа заказчика и раз­работчика в поисках компромиссного решения при завершении испытаний и составлении заключения. Некоторые недостатки КП в процессе испытаний только регистрируются и фиксируются в плане устранения замечаний комиссии, проводившей испытания. Этот план является приложением к акту о результатах испытаний и позволяет отделять последующие доработки от непосред­ственных испытаний.

21. Виды программной документации: проектная и эксплуатационная документация. Документирование интерактивного ПО. Государственные стандарты в области документирования ПО. Средства автоматизации документирования.

К программным относят документы, содержащие сведения, необходимые для разработки, сопровождения и эксплуатации программного обеспечения. Документирование программного обеспечения осуществляется в соответствии с Единой системой программной документации (ГОСТ 19.XXX). Так ГОСТ 19.101-77 устанавливает виды программных документов для программного обеспечения различных типов. Ниже перечислены основные программные документы по этому стандарту и указано, какую информацию они должны содержать.

Спецификация должна содержать перечень и краткое описание назначения всех файлов программного обеспечения, в том числе и файлов документации на него, и является обязательной для программных систем, а также их компонентов, имеющих самостоятельное применение.

Ведомость держателей подлинников (код вида документа — 05) должна содержать список предприятий, на которых хранятся подлинники программных документов. Необходимость этого документа определяется на этапе разработки и утверждения технического задания только для программного обеспечения со сложной архитектурой.

Текст программы (код вида документа - 12) должен содержать текст программы с необходимыми комментариями. Необходимость этого документа определяется на этапе разработки и утверждения технического задания.

Описание программы (код вида документа - 13) должно содержать сведения о логической структуре и функционировании программы, Необходимость данного документа также определяется на этапе разработки и утверждения технического задания.

Ведомость эксплуатационных документов (код вида документа - 20) должна содержать перечень эксплуатационных документов на программу, к которым относятся документы с кодами: 30, 31, 32, 33, 34, 35, 46. Необходимость этого документа также определяется на этапе разработки и утверждения технического задания.

Формуляр (код вида документа - 30) должен содержать основные характеристики программного обеспечения, комплектность и сведения об эксплуатации программы.

Описание применения (код вида документа - 31) должно содержать сведения о назначении программного обеспечения, области применения, применяемых методах, классе решаемых задач, ограничениях для применения, минимальной конфигурации технических средств.

Руководство системного программиста (код вида документа - 32) должно содержать сведения для проверки, обеспечения функционирования и настройки программы на условия конкретного применения.

Руководство программиста (код вида документа - 33) должно содержать сведения для эксплуатации программного обеспечения.

Руководство оператора (код вида документа - 34) должно содержать сведения для обеспечения процедуры общения оператора с вычислительной системой в процессе выполнения программного обеспечения.

Описание языка (код вида документа - 35) должно содержать описание синтаксиса и семантики языка.

Руководство по техническому обслуживанию (код вида документа - 46) должно содержать сведения для применения тестовых и диагностических программ при обслуживании технических средств.

Программа и методика испытаний (код вида документа - 51) должны содержать требования, подлежащие проверке при испытании программного обеспечения, а также порядок и методы их контроля.

Пояснительная записка (код вида документа -81) должна содержать информацию о структуре и конкретных компонентах программного обеспечения, в том числе схемы алгоритмов, их общее описание, а также обоснование принятых технических и технико-экономических решений. Составляется на стадии эскизного и технического проекта.

Прочие документы (коды вида документа - 90-99) могут составляться на любых стадиях разработки, т. е. на стадиях эскизного, технического и рабочего проектов. Допускается объединять отдельные виды эксплуатационных документов, кроме формуляра и ведомости. Необходимость объединения указывается в техническом задании, а имя берут у одного из объединяемых документов.

22. Планирование и организация разработки программных систем: принципы планирования разработки, принципы организации коллектива программистов и распределения работ по специалистам; методы бригадной организации работ: бригада независимых программистов, демократическая бригада, бригада главного программиста; права и обязанности членов бригад, организация их взаимодействия, управление бригадой на различных этапах проектирования.

На этапе планирования разработки ПО создаются планы и выбираются стандарты, которые направляют этап разработки и интегрированный этап. Егоцелью является определение средств для создания ПО, которое будет удовлетворять требования, предъявляемые к нему и обеспечивать достаточный уровень надежности. На этом этапе производиться:1) определение действий на этапах разработки и интегрированном этапе, которые будут посвящены определению системных требований и уровня ПО;2) определение ЖЦ ПО, включая взаимодействие между этапами, механизм взаимного влияния этапов, критерии оценки ПО при переходе от одного этапа к другому;3)определение среды ЖЦ, т.е. методы и инструментальные средства, используемые на каждом этапе;4) формирование дополнительных замечаний к ПО;5) рассмотрение стандартов разработки ПО, соотношение их с системными целями безопасности, относящиеся к разрабатываемому ПО;6) разработка плана создания ПО;7) доработка и проверка плана создания ПО.

 

Организация коллективов для создания комплексов программ. Никакая, даже очень квалифицированная, небольшая бригада специалистов не может сделать в разумные сроки сложный КП объемом порядка 100 тыс. команд. В такой разработке обяза­тельно принимают участие несколько десятков специалистов раз­личной квалификации и специализации. Отсюда возникает зада­ча организации коллектива, координации его деятельности и объединения индивидуальных усилий для создания очень слож­ного изделия. Организация коллектива и распределение работ по специалистам могут производиться по нескольким принципам:

-на основе распределения системного анализа (алгоритмиза­ции) и разработки программ по разным коллективам;

-по принципу выделения коллективов, создающих всю совокуп­ность программных модулей, и группы специалистов, объединя­ющих программы в единый комплекс;

-по принципу распределения достаточно сложных законченных функциональных задач по группам специалистов, осуществля­ющим их полную разработку, и последующего объединения функциональных задач специальной группой ведущих «комплексников».

Попытки полностью разделить между двумя коллективами специалистов функции непосредственного программирования и функции постановки задач и создания алгоритмов оказались неудачными. При такой организации работ невозможно опре­делить ответственных за законченные компоненты и возникают многочисленные неразрешимые конфликты при создании слож­ных КП. Эти конфликты порождаются объективными труд­ностями точной формализации алгоритмов со стороны алгоритмистов и невозможностью достаточно полной отладки программ программистами без глубокого знания содержания соответству­ющих функциональных задач и алгоритмов. В результате увели­чивается длительность работ и требуется множество документов для взаимодействия алгоритмистов и программистов.

Значительно более продуктивными оказались методы бригад­ной организации работ, когда в бригаду входят и алгоритмисты, и программисты. Такая бригада во главе с алгоритмистом высокой квалификации создает законченное, отлаженное изделие и группу программ, выполняющую достаточно автономные функ­ции в системе. Подобная группа может быть всесторонне про­верена и испытана руководителями проекта и ответственным за нее является руководитель бригады. Декомпозиция КП по­зволяет специализировать бригады и отдельных сотрудников в коллективе на нескольких классах задач и квалифицированно решать эти частные задачи. Тем самым обеспечивается темати­ческая однородность специальных знаний членов бригады, един­ство их обучения и повышения квалификации в области реша­емых функциональных задач. Целесообразно четко определять ответственность каждого руководителя за часть КП и обеспечи­вать его минимально необходимой информацией для управления процессом разработки.

Одним из вариантов организационной структуры коллектива при создании крупных КП является иерархическая структура, базирующаяся на группах специалистов, каждая из которых сос­тавляет специализированную, так называемую «хирургическую бригаду». Такая бригада решает достаточно автономную функци­ональную задачу и должна разработать и отладить группу взаи­модействующих программ с достаточно четкой целью функциони­рования. «Хирургическая бригада» рекомендуется в составе 7...10 специалистов с различными задачами и квалификацией. Во главе бригады стоит «хирург», который разрабатывает функциональ­ные задачи программ, составляет алгоритм, пишет и отлаживает программы, готовит и проверяет документацию. Он должен обла­дать значительным системным опытом, высокой математической и программистской квалификацией и талантом разработки и от­ладки сложных КП. «Второй пилот» является дублером и может выполнить любую часть работы, но менее опытен. Он принимает участие в разработке, обсуждении и оценке компонент, создаваемых бригадой, в качестве оппонента или ответчика по альтернативным решениям, а также несет ответственность за взаимодей­ствие с другими бригадами и с разрабатываемыми ими груп­пами программ.

«Администратор» позволяет избавить «хирурга» от множества технических и административных функций как внутри бригады, так и по взаимодействию с администрацией всей организации. При этом «хирургу» принадлежит определяющее слово по важ­нейшим вопросам организации и проведения работ. «Редактор» критикует документацию, созданную «хирургом», дорабатывает ее, снабжает ссылками и наблюдает за ее публикацией. «Адвокат языка» обеспечивает «хирурга» консультациями по применению языка в трудных или запутанных ситуациях, способствует полу­чению более эффективных программ. «Инструментальщик» — опытный системный программист — является создателем специа­лизированных технологических и служебных программ, каталоги­зированных процедур, библиотек макрокоманд для расширения функций технологического обеспечения по заказу «хирурга». «Наладчик» разрабатывает системные тесты в соответствии с назначением и функциями создаваемой группы программ. Он планирует последовательность тестирования, подготавливает имитаторы исходных данных для комплексной отладки, регистри­рует процесс проведения отладки и ее результаты. Кроме того, в бригаду входят 2...3 технических работника для выполнения секретарских функций и различных вспомогательных техни­ческих работ.

В другом варианте организации бригады основные функции программирования возлагаются на нескольких специалистов средней квалификации, каждый из которых разрабатывает не­сколько программ. Руководитель бригады формулирует функцио­нальные задачи, создает общее техническое задание, контро­лирует и корректирует спецификации требований на программы, определяет состав тестов для проверки программ. Детальную разработку принципов решения задач и алгоритмов каждой программы ведут сами программисты под контролем бригадира. В этом случае руководитель бригады или совершенно не разра­батывает программ, или создает только управляющие и связы­вающие программы для группы, создаваемой бригадой. На него ложится основная «тяжесть» комплексной отладки взаимодей­ствия программ, разработанных различными членами бригады. Один наиболее опытный член бригады должен быть дублером руководителя бригады. Он может быть менее квалифициро­ванным в части методов решения функциональных задач, однако должен обеспечивать возможность замены руководителя при комплексной отладке.

Для сложных ПС, в создании которых участвуют десятки специалистов, необходимо провести четкое различие между архи­тектурой КП и реализацией проекта в целом, а также его состав­ных частей. «Системный архитектор» должен специальными методами обучения коллектива обеспечивать функциональное, структурное и технологическое единство проекта КП. Руководи­тели, ответственные за функциональные группы программ, объединяют усилия бригад и обеспечивают их взаимодействие по функциональному и информационному сопряжению компонент, созданных различными бригадами. Таким образом, иерар­хическая структура коллектива в верхних ярусах должна соот­ветствовать иерархической структуре создаваемого КП, хотя следует учитывать и обратное влияние структуры коллектива на структуру КП.

Индустриальная технология разработки сложных КП позво­ляет снизить требования к творческому уровню и профессио­нальной квалификации основной массы специалистов, тем не менее усложнение программ и увеличение их объема еще больше повышают роль системных программистов высшего класса. Со­здание больших КП невозможно обеспечить специалистами толь­ко высшего класса, поэтому увеличение количества разрабаты­ваемых ПС при одновременном возрастании их сложности не­уклонно повышают значение автоматизированной технологии проектирования программ.

23. Внедрение и эксплуатация ПО, процесс сопровождения: модификация, усовершенствование и коррекция ПО; планирование и организация сопровождения, методы конфигурационного управления; тиражирование и использование версий программ, методы сертификации ПО.

Во время фазы эксплуатации и сопровождения начинается прак­тическое использование программного изделия.

Сопровождение программного обеспечения связано с внесением изменений в течение всего времени использования программного изделия. К причинам, определяющим необходимость внесения из­менений в изделии, относятся:

• наличие ошибок в используемом программном продукте;

• изменение требований пользователя (расширение или модифи­кация);

• появление более совершенных общесистемных программных средств или технических устройств;

• изменение организационной структуры, условий и методов ра­боты пользователя.

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

В первую очередь должны быть определены процедуры для мо­дификации программного изделия, так как основной удельный вес работ по сопровождению обусловлен изменениями, связанными с модернизацией изделия (расширение или улучшение функциональных возможностей) и с адаптацией к условиям конкретного пользо­вателя. Эти изменения требуют порядка восьмидесяти процентов всех усилий, затрачиваемых на сопровождение, и только около двадцати процентов усилий тратится на корректировку программ, выдающих неверные результаты.

В зависимости от сложности программного изделия и числа пользователей, сопровождение может осуществляться в тесной увязке с группой разработки изделия, т.е. сопровождение поручается программистам-разработчикам. В последнее время используется другая схема. После гарантийного периода сопровождение может быть передано от разработчика к организации (или специальному подразделению), которая специально занимается сопровождением, т.е. для каждого программного изделия, находящегося в практичес­ком использовании, имеется организация, ответственная за его со­провождение.

– Конец работы –

Эта тема принадлежит разделу:

Автономное тестирование компонентов программного обеспечения

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

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Оценочное тестирование

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Задачи службы сопровождения программного изделия
В процессе эксплуатации программного изделия пользователи взаимодействуют с организацией (группой), ответственной за со­провождение. Задачами службы сопровождения являются: 1. Сбор и анали

Идентификация интерфейса
У каждого интерфейса СОМ два имени. Простое, символьное имя предназначено для людей, оно не уникально (допускается, чтобы это имя было одинаковым у двух интерфейсов). Другое, сложное имя предназнач

Описание интерфейса
Для определения интерфейсов применяют специальный язык — язык описания интерфейсов (Interface Definition Language — IDL). Например, IDL-описание интерфейса для работы с файлами 1РаботаСФайлами имее

Реализация интерфейса
СОМ задает стандартный двоичный формат, который должен реализовать каждый СОМ-объект и для каждого интерфейса. Стандарт гарантирует, что любой клиент может вызывать операции любого объекта, причем

Серверы СОМ-объектов
Каждый СОМ-объект существует внутри конкретного сервера. Этот сервер содержит программный код реализации операций, а также данные активного СОМ-объекта. Один сервер может обеспечивать несколько объ

Создание СОМ-объектов
Создание СОМ-объекта базируется на использовании функций библиотеки СОМ. Библиотека СОМ: -содержит функции, предлагающие базовые услуги объектам и их клиентам; -предоставляет клие

Повторное использование СОМ-объектов
Известно, что основным средством повторного использования существующего кода является наследование реализации (новый класс наследует реализацию операций существующего класса). СОМ не поддерживает э

Маршалинг
Клиент может содержать прямую ссылку на СОМ-объект только в одном случае — когда СОМ-объект размещен в сервере «в процессе». В случае локального или удаленного сервера, как показано на рис, он ссыл

IDL-описаниеи библиотека типа
Для определения интерфейсов применяют специальный язык — язык описания интерфейсов (Interface Definition Language — IDL).Помимо информации об интерфейсах, IDL-описание может содержать информацию о

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги