Санкт Петербургский государственный университет информационных технологий механики и оптики
Реферат
По истории информатики на тему
“История развития методологии тестирования при разработке программного обеспечения”
Аспирант: | Иванова В. О. |
Кафедра: | ИПМ |
Специальность: | 05.13.12 |
Санкт-Петербург
2009 г
Оглавление
Виды тестирование, используемые в настоящее время. 8
Автоматизированное тестирование. 12
Перспективы развития тестирования. 16
За последние десятилетия компьютерные системы и выполняемое на них программное обеспечение проникло во все области человеческой деятельности. Распространение программных систем достигло такой стадии, когда мы впадаем во все большую зависимость от успешной разработки и доставки программного обеспечения.
По мере возрастания ставок на рынке программного обеспечения, все отчетливей вырисовывается потребность разработки большего числа программных продуктов за меньшие промежутки времени. Это обстоятельство предъявляет повышенные требования к разработчикам и тестировщикам программного обеспечения не только в плане ускоренного производства программных продуктов, но и в плане обеспечения должного уровня их качества.
Тестировать можно все:
· работу программы
· качество ее кода и понятность комментариев
· быстродействие
· устойчивость под большой нагрузкой
· расход ресурсов (памяти, диска, потери этих ресурсов)
· взаимодействие с другими программами
· стабильность работы
· возможность работы на других платформах
· удобство интерфейса
· документацию к программе (смысловые и грамматические ошибки, понятность и полноту)
· работу через сеть, работу аппаратного обеспечения и т.п.
Тестирование – процесс выявления фактов расхождений с требованиями (ошибок). Этот процесс заключается в проверке соответствия программного продукта или сайта заявленным характеристикам и требованиям, требованиям эксплуатации в различных окружениях, с различными нагрузками, требованиям по безопасности, требованиям по эргономике и удобству использования. В зависимости от направленности тестирования, проверяется та или иная особенность приложения или веб-сайта. Как правило, процесс тестирования документируется в виде тестового плана и тест-кейсов. Тестовый план описывает стратегию тестирования, методы и средства тестирования, порядок тестирования и другие его особенности. Тест-кейсы описывают последовательные пошаговые операции проверки функционала программы или веб-сайта. Это минимальные элементарные операции сверки для каждой функции или элемента приложения.
Как правило, на фазе тестирования осуществляется и исправление идентифицированных ошибок, включающее:
• локализацию ошибок
• нахождение причин ошибок
• корректировку программы.
Тестирование разделяют на статическое и динамическое:
· Статическое тестирование выявляет неверные конструкции или неверные отношения объектов программы (ошибки формального задания) формальными методами анализа без выполнения тестируемой программы.
· Динамическое тестирование осуществляет выявление ошибок на выполняющейся программе.
Тестирование заканчивается, когда выполнилось или "прошло" успешно достаточное количество тестов в соответствии с выбранным критерием тестирования.
Тестирование решает несколько основных задач:
· Дает уверенность в качестве конечного продукта, подтверждает что все заявленные функциональные требования реализованы, приложение им соответствует и не имеет ошибок в программном коде;
· Подтверждает, что приложение способно выполняться во всех заявленных режимах и на всех поддерживаемых ОС или Web-браузерах корректно;
· Гарантирует, что хранимые и обрабатываемые данные надежно защищены от постороннего доступа и "взлома";
· Определяет, какая максимальная нагрузка на сервер, локальную сеть, БД может быть корректно обработана приложением;
· Позволяет убедиться в том, что пользователь может "интуитивно" использовать ваш продукт или услугу не путаясь в сложных переплетениях интерфейсов.
На сегодняшний день тестирование оставило позади два этапа своего развития. На первом этапе тестирование представляло собой малопонятную область. Оно являлось лишь малооплачиваемым дополнением к процессу разработки, стартовой точкой для новичков, стремящихся повысить уровень своих знаний и достичь звания разработчика. Существующие инструменты и методы тестирования предоставляли возможность для приобретения навыков автоматизации, однако они были дорогостоящими, сложными и неэффективными для достижения этих потребностей. На этом этапе исполнительное руководство не обращало внимания на существование тестирования – предполагалось, что этот процесс будет происходить сам собой.
На втором этапе пришло понимание сути и важности тестирования как отдельной части процесса разработки – и все дружно ринулись тестировать. Но вместе с пониманием назначения тестирования всеми заинтересованными, возникли и проблемы: как организовать и финансировать тестирование, как определить его правильное направление. Началось исследование существующих инструментов. Их изучение часто вредило тестированию: оно подменялось бессистемным перебором инструментов без четкого понимания, какие задачи они помогут решить. На этом этапе понимание необходимости тестирования высшими руководящими органами по-прежнему оставалось на низком уровне.
Среди ключевых моментов этих этапов можно выделить несколько наиболее весомых. Первый – это нехватка участия со стороны руководства: без четкого понимания необходимости тестирования, его места в процессе разработки и важности результата, которое дает тестирование, его развитие обречено. Вторым важным моментом является концепция «тестирование ради тестирования» и выбор инструмента без руководящей стратегии выбора. Это подобно стройке дороги без направления: дорога-то будет построена, но шансы того, что будет использована – минимальны. То есть, тестирование и выбор инструмента для него без определенной стратегии выбора и использования приведет к тому, что все усилия для достижения заявленных целей процесса будут сведены на нет.
Результат первых двух этапов – разработка таких программ тестирования, которые будут соответствовать требованиям организации к разработке лучшего программного обеспечения более быстрым и дешевым методом.
Виды тестирование, используемые в настоящее время
Уровни тестирования
· Модульное тестирование.
· Интеграционное тестирование.
· Системное тестирование.
Модульное тестирование
· Модульное тестирование - это тестирование программы на уровне отдельно взятых модулей, функций или классов.
· Цель модульного тестирования состоит в выявлении локализованных в модуле ошибок в реализации алгоритмов, а также в определении степени готовности системы к переходу на следующий уровень разработки и тестирования.
· Модульное тестирование проводится по принципу "белого ящика“
· Модульное тестирование обычно подразумевает создание вокруг каждого модуля определенной среды
Обнаруживаемые ошибки
· На уровне модульного тестирования проще всего обнаружить дефекты, связанные с алгоритмическими ошибками и ошибками кодирования алгоритмов.
· Ошибки, связанные с неверной трактовкой данных, некорректной реализацией интерфейсов, совместимостью, производительностью и т.п. обычно выявляются на более поздних стадиях тестирования.
Интеграционное тестирование
Системное тестирование
· неверное использование ресурсов системы
· непредусмотренные комбинации данных пользовательского уровня
· несовместимость с окружением
· непредусмотренные сценарии использования
· отсутствующая или неверная функциональность
· неудобство в применении и тому подобное.
«Тестирование белого ящика» и «тестирование черного ящика» относятся к тому, имеет ли разработчик тестов доступ к исходному коду тестируемого ПО, или же тестирование выполняется через пользовательский интерфейс либо прикладной программный интерфейс, предоставленный тестируемым модулем.