Тестирование программного средства (ПС) — это процесс выполнения программ на некотором наборе данных, для которого заранее известен результат применения или известны правила поведения этих программ. Указанный набор данных называется тестовым или просто тестом. Тестирование программ является одной из составных частей более общего понятия — «отладка программ». Под отладкой понимается процесс, позволяющий получить программу, функционирующую с требующимися характеристиками в заданной области изменения входных данных.
Процесс отладки включает:
действия, направленные на выявление ошибок (тестирование);
диагностику и локализацию ошибок (определение характера ошибок и их местонахождение);
внесение исправлений в программу с целью устранения ошибок.
Из трех перечисленных видов работ самым трудоемким и дорогим является тестирование, затраты на которое приближаются к 45 % общих затрат на разработку ПС.
Надежность невозможно внести в программу в результате тестирования, она определяется правильностью этапов проектирования. Наилучшее решение проблемы надежности — с самого начала не допускать ошибок в программе.
Когда тренер — твой друг
Роль тестирования состоит в том, чтобы определить местонахождение немногочисленных ошибок, оставшихся в хорошо спроектированной программе.
Тестирование оказывается довольно необычным процессом (поэтому и считается трудным), так как этот процесс разрушительный. Ведь цель проверяющего (тестовика) — заставить программу сбиться.
Программы, как объекты тестирования, имеют ряд особенностей, которые отличают процесс их тестирования от общепринятого, применяемого при разработке аппаратуры и других технических изделий. Особенностями тестирования ПС являются:
отсутствие эталона (программы), которому должна соответствовать тестируемая программа;
высокая сложность программ и принципиальная невозможность исчерпывающего тестирования;
практическая невозможность создания единой методики тестирования (формализация процесса тестирования) в силу большого разнообразия программных изделий (ПИ) по их сложности, функциональному назначению, области использования и т.д.
Тестирование — это процесс многократного выполнения программы с целью выявления ошибок. Целью тестирования является обнаружение максимального числа ошибок. Поэтому тестовый прогон, в результате которого не выявлено ошибок, считается неудачным (неэффективным).
Существуют несколько эмпирических правил проведения тестирования программ, обобщающих опыт тестировщиков.
1. Процесс тестирования более эффективен, если проводится не автором программы.
2. Необходимой частью тестового набора данных должно быть описание предполагаемых значений результатов тестовых прогонов. Тестирование как процесс многократного выполнения программы проводится на многочисленных входных наборах данных. Чтобы определить правильность полученных в результате очередного тестового прогона данных, необходимо знать ожидаемый результат. Таким образом, тестовый набор данных должен включать в себя два компонента: описание входных данных, описание точного и корректного результата, соответствующего набору входных данных.
Тупит компьютер? Есть решение!
3.Необходимо изучить результаты каждого теста. Из практики следует, что значительная часть обнаруженных ошибок могла быть выявлена в результате первых тестовых прогонов, но они были пропущены вследствие недостаточно тщательного анализа их результатов.
4. Тесты для неправильных и непредусмотренных входных данных должны разрабатываться также тщательно, как для правильных и предусмотренных. Согласно этому принципу при обработке данных, выходящих за область допустимых значений, в тестируемой программе должна быть предусмотрена диагностика в виде сообщений. Если сообщение о причине невозможности обработки по предложенному алгоритму отсутствует, и программа завершается аварийно или ведет себя непредсказуемо, то такая программа не может считаться работоспособной и требует существенной доработки. Тестовые наборы данных из области недопустимых входных значений обладают большей обнаруживающей способностью, чем тесты, соответствующие корректным входным данным.
5. Необходимо проверять не только, делает ли программа то, для чего она предназначена, но и не делает ли она того, чего не должна делать. Это утверждение логически вытекает из предыдущего. Необходимо любую программу проверить на нежелательные побочные эффекты.
6. Следует тщательнее проверять те участки программ, где обнаруживается больше ошибок. Утверждается, что вероятность наличия необнаруженных ошибок в какой-либо части программы пропорциональна числу ошибок, уже обнаруженных в этой части. Возможно, что те части программы, где при тестировании обнаружено большее число ошибок, либо были слабо проработаны с точки зрения системного анализа, либо разрабатывались программистами более низкой квалификации.
Тестирование (testing) — процесс выполнения программы или ее части с целью найти ошибки.
Доказательство (proof) — попытка найти ошибки в программе безотносительно к внешней для программы среде. Большинство методов доказательства предполагает формулировку утверждений о поведении программы и доказательство математических теорем о правильности программы. Доказательства могут рассматриваться как форма тестирования, хотя они и не предполагают прямого выполнения программы.
Контроль (verification) — попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.
Испытание (validation) — попытка найти ошибки, выполняя программу в заданной реальной среде.
Аттестация (certification) — авторитетное подтверждение правильности программы. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом.
Отладка (debugging) не является разновидностью тестирования. Хотя слова «отладка» и «тестирование» часто используются как синонимы, но под ними подразумеваются разные виды деятельности.
Тестирование — это деятельность, направленная на обнаружение ошибок.
Отладка направлена на установление точной природы известной ошибки, а затем на исправление этой ошибки. Эти два вида деятельности связаны, т.к. результаты тестирования являются исходными данными для отладки.
Тестирование модуля, или автономное тестирование (module testing, unit testing) — контроль отдельного программного модуля, обычно в изолированной среде (изолированно от всех остальных модулей).
Тестирование модуля иногда включает математическое доказательство.
Тестирование сопряжений (integration testing) — контроль сопряжений между частями системы (модулями, компонентами, подсистемами).
Тестирование внешних функций (external function testing) — контроль внешнего поведения, определенного внешними спецификациями.
Комплексное тестирование (system testing) — контроль и/или испытание системы по отношению к исходным целям.
Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в реальной среде.
Тестирование приемлемости (acceptance testing) — проверка соответствия программы требованиям пользователя.
Тестирование настройки (installation testing) — проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы.
Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:
Источник: studopedia.ru
Попытка найти ошибки при выполнении программы в реальной среде
91. Ошибки программного обеспечения являются функцией
• ПО и действий пользователей
92. Параметрами модели Вейбулла являются:
• время и интенсивность отказов
93. Параметрами модели Миллса являются:
• только количество ошибок
94. Параметрами модели частоты появления ошибок в программном обеспечении являются:
• время и количество ошибок
95. Параметрами статистической модели являются:
• только количество ошибок
96. Параметрами экспоненциальной модели надежности программного обеспечения являются:
• время и количество ошибок
97. Переход объекта из неработоспособного состояния в работоспособное называется:
• восстановление
98. Переход объекта из работоспособного состояния в неработоспособное называется:
• отказ
99. Подтверждение правильности программы, выданное авторитетной организацией, называется:
• сертификацией
100. Показатель, характеризующий вероятность застать в заданный момент времени восстанавливаемую систему в работоспособном состоянии, называется:
• коэффициент готовности
101. Показатель, характеризующий плотность распределения времени работы до первого отказа, называется:
• частотой отказов
102. Пользовательский интерфейс проектируют:
• итерационно
103. Попытка найти ошибки в программе безотносительно к внешней для программы среде называется:
• доказательством
104. Попытка найти ошибки, выполняя программу в заданной реальной среде, называется:
• валидацией
105. Попытка найти ошибки, выполняя программу в тестовой, или моделируемой среде, называется:
• верификацией
Источник: oltest.ru
28. Проверка правильности программ.
Программу нельзя использовать до тех пор, пока не будет уверенности в ее надежности. Надежность — это свойство программы, более строгое, чем корректность, поскольку программа может быть корректной, но не быть надежной. Программа является корректной, если удовлетворяет внешним спецификациям, т.е. выдает ожидаемые ответы на определенные комбинации значений входных данных. Программа является надежной, если она корректна, приемлемо реагирует на неточные входные данные и удовлетворительно функционирует в необычных условиях.
В процессе создания программы программист старается предвидеть все возможные ситуации и написать программу так, чтобы она реагировала на них вполне удовлетворительно. Этап тестирования является последней попыткой определить надежность и корректность программы. Проверка надежности включает в себя просмотр проектной документации и текста программы, анализ текста программы, тестирование и, наконец, демонстрацию заказчику того, что программа работает надежно.
Все принципы и методы разработки надежного программного обеспечения можно разбить на четыре группы:
1. Предупреждение ошибок.
2. Обнаружение ошибок.
3. Исправление ошибок.
4. Обеспечение устойчивости к ошибкам.
Предупреждение ошибок. К этой группе относятся принципы и методы, цель которых — не допустить появление ошибок в готовой программе. Большинство методов концентрируется на отдельных процессах перевода и направлено на предупреждение ошибок в этих процессах (упрощение программ, достижение большей точности при переводе, немедленное обнаружение и устранение ошибок).
Обнаружение ошибок. Если предполагать, что в программном обеспечении какие-то ошибки все же будут, то лучшая стратегия в этом случае — включить средства обнаружения ошибок в само программное обеспечение. Немедленное обнаружение имеет два преимущества: можно минимизировать как влияние ошибки, так и последующие затруднения для человека, которому придется извлекать информацию об этой ошибке, находить ее место и исправлять.
Исправление ошибок. После того, как ошибка обнаружена, либо она сама, либо ее последствия должны быть исправлены программным обеспечением. Некоторые устройства способны обнаружить неисправные компоненты и перейти к использованию резервных. Другой метод — восстановление информации (например, при сбое питания).
Устойчивость к ошибкам. Методы этой группы ставят своей целью обеспечит функционирование программной системы при наличии в ней ошибок. Они разбиваются на три подгруппы: динамическая избыточность (методы голосования, резервных копий); методы отступления (когда необходимо корректно закончить работу — например, закрыть базу данных); изоляция ошибок (основная идея — не дать последствиям ошибки выйти за пределы как можно меньшей части системы программного обеспечения, так, чтобы если ошибка возникнет, то не вся система оказалась бы неработоспособной).
29. Тестирование, доказательство, контроль, испытание и др.
Тестирование — процесс выполнения программы с намерением найти ошибки. Если Ваша цель — показать отсутствие ошибок, Вы их найдете не слишком много. Если же Ваша цель — показать наличие ошибок, Вы найдете значительную их часть.
Доказательство — попытка найти ошибки в программе безотносительно к внешней для программы среде. Большинство методов доказательства предполагает формулировку утверждений о поведении программы и затем вывод и доказательство математических теорем о правильности программы. Доказательства могут рассматриваться как форма тестирования, хотя они и не предполагают прямого выполнения программы.
Контроль — попытка найти ошибки, выполняя программу в тестовой, или моделируемой, среде.
Испытание — попытка найти ошибки, выполняя программу в заданной реальной среде.
Аттестация — авторитетное подтверждение правильности программы. При тестировании с целью аттестации выполняется сравнение с некоторым заранее определенным стандартом.
Отладка — не является разновидностью тестирования. Хотя слова «отладка» и «тестирование» часто используются как синонимы, под ними подразумеваются разные виды деятельности. Тестирование — деятельность, направленная на обнаружение ошибок; отладка направлена на установление точной природы известной ошибки, а затем — на исправление этой ошибки. Эти два вида деятельности связаны — результаты тестирования являются исходными данными для отладки.
Тестирование модуля, или автономное тестирование — контроль отдельного программного модуля, обычно в изолированной среде. Тестирование модуля иногда включает также математическое доказательство.
Тестирование сопряжений — контроль сопряжений между частями системы (модулями, компонентами, подсистемами).
Тестирование внешних функций — контроль внешнего поведения системы, определенного внешними спецификациями.
Комплексное тестирование — контроль и испытание системы по отношению к исходным целям. Комплексное тестирование является процессом испытания, если выполняется в среде реальной, жизненной.
Тестирование приемлемости — проверка соответствия программы требованиям пользователя.
Тестирование настройки — проверка соответствия каждого конкретного варианта установки системы с целью выявить любые ошибки, возникшие в процессе настройки системы.
Источник: studfile.net