maran program engineering (Маран Программная инженерия), страница 26
Описание файла
PDF-файл из архива "Маран Программная инженерия", который расположен в категории "". Всё это находится в предмете "программная инженерия" из 4 семестр, которые можно найти в файловом архиве НИУ «МЭИ» . Не смотря на прямую связь этого архива с НИУ «МЭИ» , его также можно найти и в других разделах. .
Просмотр PDF-файла онлайн
Текст 26 страницы из PDF
Такимже образом можно удалить элементы (Delete) и изменять их значения.1596. Тестирование программного обеспечения6.1. Методы проверки программного обеспеченияЛюбая составленная программа и программный комплекс должны бытьвсесторонне проверены, чтобы убедиться в их работоспособности. К сожалению, никому еще не удавалась разработка программ без ошибок! Методы проверки программного обеспечения делятся на статические и динамические.Суть статических методов заключается в анализе текста программы с цельювыявления ошибок. Наиболее известным методом статического контроля является синтаксический анализ, выполняемый любым транслятором.
Цель синтаксического анализа: определить, соблюдены ли формальные критерии написания текста программы, не нарушен ли синтаксис языка программирования.Имеются и другие методы статического контроля: от систем для выявлениячастей текста программы, которые заведомо ошибочны, до доказательства корректности программ. Статические методы могут выполняться и на компьютере,но их суть именно в анализе текста, без запуска программы на выполнение.Среди статических методов особое место занимают методы просмотра ианализа текста программ человеком, без применения компьютера.
В свое время,когда программы сначала писались на бумаге, затем переносились на машинные носители (например, перфокарты) и передавались на выполнение, значимость предварительного анализа текста программы была огромной, чтобы экономить время на тестирование и отладку. При возможности постоянного запуска программ на выполнение в ходе их разработки значимость такого анализаснизилась, но не исчезла.
Рассмотрим коротко основные методы такого анализа, подробно они изложены в [5].Инспекция кода. Написанный код просматривается маленькой группойспециалистов при участии автора. Члены группы имеют возможность предварительного ознакомления с текстом программы. На заседании группы авторрасскажет идеи своего алгоритма, члены группы постараются определить, незабыл ли автор учесть некоторые «тонкие моменты», редко встречающие случаи в решаемой задаче, а также выявить ошибки в программе на основе контрольных списков возможных ошибок. Длинный перечень таких вопросовможно найти в упомянутой монографии.Сквозной просмотр кода.
Члены группы перед заседанием готовят тестыдля проверки программы и попытаются их выполнять вручную, чтобы установить ее работоспособность.Рецензирование кода. Просмотр текста программы опытным программистом для оценки стиля программирования и подготовки рекомендации начинающему.При использовании динамических методов программу запускают в разных условиях и анализируют результаты ее работы. Наиболее распространенным динамическим методом контроля является тестирование. Тестирование —160Powered by TCPDF (www.tcpdf.org)это запуск программы на разных наборах исходных данных — тестах и анализполученных результатов с целью обнаружения ошибок. С тестированием тесносвязано понятие отладка.
Отладка — это выявление и устранение причин ошибок в работе программ. Необходимость в отладке, очевидно, возникает при обнаружении ошибок при тестировании.В классическом жизненном цикле тестирование проводится после завершения разработки. При XP-программировании рекомендуется тесты разработать до написания кода. Очень хорошей можно считать практику, при которойна этапах анализа думают и о тестах. Помните, мы при рассмотрении анализаговорили о выявлении альтернативных путей выполнения вариантов использования, более подробно об этом говорилось при разработке диаграмм деятельности и последовательностей. Это все является основой для будущих тестов, и совсем неплохо думать о тестах уже на этих этапах жизненного цикла.Искусство тестирования заключается в составлении набора тестов, минимальных по количеству, но обеспечивающих максимально возможнуювероятность обнаружения ошибок.
Теоретически можно с помощью тестирования доказать правильность программы: для этого ее работу необходимо проверить на ВСЕХ возможных значениях исходных данных. Это называется полное тестирование. К сожалению, такое тестирование на практике невозможноиз-за колоссальной трудоемкости. Можно говорить и так: тестирование проверяет, выполнены ли все функциональные требования к программе. Существуютразновидности тестирования, называемые иногда испытаниями, целью которыхявляется проверка соблюдения нефункциональных требований. Такие испытания можно проводить лишь после достижения программой работоспособности.Тестирование, кроме поверки того, что программа делает, должно проверить и то, чтобы программа НЕ делала ничего недопустимого.
Например,функция может испортить передаваемые по ссылке данные, которые она должна была использовать лишь как исходные.Начальное тестирование проводит автор программы, но для обеспечениядолжного уровня проверки заключительное тестирование должен проводитьНЕ автор. Это имеет как объективные, так и субъективные причины. Объективная причина заключается в том, что если программист в свое творение «вложилдушу», то он часто действительно не может видеть в нем недостатки. Субъективный фактор заключается в том, что обнаружить ошибку в программе — значит признаться в своей ошибке (я что-то не учел, не увидел…). Кроме того,может случиться так, что сроки поджимают, работу надо сдать, но еще не все впорядке. Отладку в любом случае должен выполнять автор — кто же, кроме него, знает, где искать ошибки…Говорят об альфа- и бета-тестировании.
Альфа-тестирование — этопроверка программного обеспечения в стенах фирмы-разработчика, но специалистами, не принявшими участия в его разработке (группа тестировщиков,группа качества). После завершения альфа-тестирования проводится бетатестирование. О бета-тестировании говорят обычно при разработке программного обеспечения для выхода на рынок. Разработчик передает бесплатно бета161версию программы потенциальным пользователям, с которыми у него сложились хорошие партнерские отношения.
Те используют новое программноеобеспечение в своей работе и сообщают авторам о выявленных ошибках и вносят предложения по усовершенствованию. Ошибки придется исправить, предложения обсудить. При большом количестве пользователей могут быть и противоречивые предложения! Если разрабатывается что-то совсем новое, то проводят несколько итераций бета-тестирования. Целью первых таких итерацийявляется выявление необходимости в таком продукте и уточнение принциповего построения. При разработке программного обеспечения конкретному заказчику вместо бета-тестирования обычно говорят об опытной эксплуатации. Ноцели одинаковые: ошибки должны быть устранены, предложения приняты вовнимание!Рассмотрим процесс тестирования в этой главе в следующей последовательности:1.
Тестирование примитивных программ. Программу называем примитивной, если она не содержит вызовов функций (независимо от сложности ее логики!).2. Тестирование программных комплексов, построенных методом функциональной декомпозиции.3. Тестирование программных комплексов, построенных по объектноориентированной методике.4. Средства тестирования Microsoft Visual Studio.6.2. Тестирование примитивных программПримитивными считаем программы, не содержащие вызовов функций.Рекомендуется, чтобы объем такой программы не превышал 1–2 экрана. Существуют два подхода их тестирования:• Тестирование «черного ящика», равнозначные термины: функциональноетестирование, тестирование по данным.• Тестирование «белого ящика», равнозначные термины: тестирование поуправлению, структурное тестирование.Некоторые авторы говорят еще о тестировании «серого ящика», подразумевая под этим совместное применение обоих подходов.• Метод функциональных диаграмм.• Предположение об ошибке.6.2.1. Тестирование «черного ящика»При таком тестировании структура программы неизвестна или не используется при составлении тестов (рис.
6.1).Исходные данныеПрограммаРис. 6.1162РезультатМетоды тестирования «черного ящика»:• Метод эквивалентного разбиения.• Метол граничных значений.• Метод функциональных диаграмм.Рассмотрим их по очереди.Метод эквивалентного разбиения. Множество значений исходных данных разделяют на непересекающиеся подмножества таким образом, чтобывнутри каждого подмножества все значения были равносильны в качестве теста, но значения из разных подмножеств — нет. Простой пример: в математикемодуль |x| числа определяется по правилу |x|=x при x>=0 и |x|=-x при x<0. Получили два класса эквивалентности.
Разделяют правильные и неправильныеклассы эквивалентности. Правильный класс эквивалентности — это допустимые значения исходных данных, неправильный класс эквивалентности — недопустимые значения. Например, для функции у = ln(x) допустимым классомэквивалентности является x>0, недопустимым x<=0. Программа должна бытьпротестирована как на правильных, так и на неправильных классах эквивалентности. В первом случае она должна дать правильный ответ, во втором случаесообщить о невозможности получения ответа с указанием причины.
Конечно,множество недопустимых значений эквивалентности может быть очень большим, поэтому на практике ограничиваются наиболее вероятными случаями. Непроверять же случай, когда аргументом математической функции является символьная строка! При решении реальных задач надо учитывать и то, что любоезначение всегда находится в «разумных пределах» и значения за этими пределами следует признать неправильными классами эквивалентности даже тогда, когда выполнение вычислении над ними вполне возможно.
Не может же рост человека быть 5 см или 5 м; в системе продажи билетов в театр правильными можносчитать лишь даты, когда состоится спектакль и нельзя продавать билеты навчера.Рекомендуют определить классы эквивалентности и для выходных данных и убедиться в том, что если все входные данные находятся в допустимыхклассах эквивалентности, то ни один результат не выходит за границы допустимых классов для выхода. Если это условие не выполняется, то в программе,скорее всего, серьезная ошибка.Тестирование по этому методу состоит из двух этапов:• Определение классов эквивалентности, как правильных, так и наиболеевероятных неправильных.