курсовая. Курсовая. 1. 1Что такое тестирование, и кто такой тестировщик 4 2Основные понятия 7
Скачать 255.76 Kb.
|
Оглавление1.1Что такое тестирование, и кто такой тестировщик 4 1.2Основные понятия 7 1.3Процессы тестирования и разработки ПО 9 1.4Жизненный цикл тестирования 12 1.5 Интеграция модулей 13 1.6Методы тестирования 13 1.6.1ВОСХОДЯЩЕЕ ТЕСТИРОВАНИЕ 13 1.6.2НИСХОДЯЩЕЕ ТЕСТИРОВАНИЕ 14 1.6.3МОДИФИЦИРОВАННЫЙ НИСХОДЯЩИЙ МЕТОД 16 1.6.4МЕТОД БОЛЬШОГО СКАЧКА 17 1.6.5МЕТОД САНДВИЧА 17 1.6.6МОДИФИЦИРОВАННЫЙ МЕТОД САНДВИЧА 18 1.7Цель и особенности испытаний 18 ВВЕДЕНИЕВ наше время видно бурное развитие информационных технологий и внедрение их во все сферы деятельности. Их использование в медицинской, производственной, финансовой, образовательной и во многих других областях становится все более и более интенсивным. Для успешной реализации аппаратного и программного обеспечения на рынке, оно должно соответствовать определенным международным стандартам. Для стандартизации создаваемых аппаратных и программных средств существует Международная организация по стандартизации (Intеrnаtiоnаl Stаndаrdizаtiоn Оrgаnizаtiоn, ISО), которая устанавливает единые стандарты, распространяющиеся не только на информационные технологии, но и на многие другие области. Для определения соответствия качества созданного программного продукта требуемым стандартам необходимо его тщательное тестирование. Организации, занимающиеся созданием программного обеспечения, до половины средств, выделенных на разработку программ, тратят на тестирование, что составляет миллиарды долларов по всему миру в целом. Все же, несмотря на громадные капиталовложения, знаний о сути тестов и проверок явно не хватает, и множество программных продуктов остается ненадежно даже после проведенного тестирования. О состоянии дел лучше всего свидетельствует тот факт, что большинство людей, работающих в области обработки данных, даже не может правильно определить слово «тестирование», и это на самом деле главная причина неудач. «Тестирование - процесс, подтверждающий правильность программы и демонстрирующий, что ошибок в программе нет». Основной недостаток подобного определения заключается в том, что оно совершенно неправильно; фактически это почти определение антонима слова «тестирование». Верное определение тестирования таково: тестирование - процесс выполнения программы с намерением найти ошибки. Невозможно гарантировать отсутствие ошибок в нетривиальной программе; в лучшем случае можно попытаться показать наличие ошибок. Если программа правильно ведет себя для солидного набора тестов, нет основании утверждать, что в ней нет ошибок; со всей определенностью можно лишь утверждать, что не известно, когда эта программа не работает. Конечно, если есть причины считать данный набор тестов способным с большой вероятностью обнаружить все возможные ошибки, то можно говорить о некотором уровне уверенности в правильности программы. Надежность невозможно внести в программу в результате тестирования, она определяется правильностью этапов проектирования. Наилучшее решение проблемы надежности - с самого начала не допускать ошибок в программе. Однако вероятность того, что удастся безупречно спроектировать большую программу, мала. Роль тестирования состоит как раз в том, чтобы определить местонахождение немногочисленных ошибок, оставшихся в хорошо спроектированной программе. Пытаться с помощью тестирования достичь надежности плохо спроектированной программы совершенно бесполезно. Тестирование оказывается довольно необычным процессом (вот почему оно и считается трудным), так как этот процесс разрушительный. Ведь цель проверяющего (тестовика) - заставить программу сбиться. Он доволен, если это ему удается; если же программа на его тесте не сбивается, он не удовлетворен. ОСНОВНАЯ ЧАСТЬЧто такое тестирование, и кто такой тестировщикТестирование программного обеспечения — процесс анализа программного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта. На протяжении десятилетий развития разработки ПО к вопросам тестирования и обеспечения качества подходили очень и очень по-разному. Можно выделить несколько основных «эпох тестирования». 50–60-х годах прошлого века процесс тестирования был предельно формализован, отделён от процесса непосредственной разработки ПО и «математизирован». Фактически тестирование представляло собой скорее отладку программ (dеbugging). Существовала концепция т.н. «исчерпывающего тестирования (ехhаustivе tеsting)» — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпывающее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации. 70-х годах фактически родились две фундаментальные идеи тестирования: тестирование сначала рассматривалось как процесс доказательства работоспособности программы в некоторых заданных условиях (pоsitivе tеsting ), а затем — строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях (nеgаtivе tеsting ). Это внутреннее противоречие не только не исчезло со временем, но и в наши дни многими авторами совершенно справедливо отмечается как две взаимодополняющие цели тестирования. В 80-х годах произошло ключевое изменение места тестирования в разработке ПО: вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки (sоftwаrе lifесyсlе7 ) (также см. описание итерационной инкрементальной модели разработки ПО в главе «Модели разработки ПО»{18} ), что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвращать их появление. В этот же период времени отмечено бурное развитие и формализация методологий тестирования, и появление первых элементарных попыток автоматизировать тестирование. В 90-х годах произошёл переход от тестирования как такового к более всеобъемлющему процессу, который называется «обеспечение качества (quаlity аssurаnсе8 )», охватывает весь цикл разработки ПО и затрагивает процессы планирования, проектирования, создания и выполнения тест-кейсов, поддержку имеющихся тест-кейсов и тестовых окружений. Тестирование вышло на качественно новый уровень, который естественным образом привёл к дальнейшему развитию методологий, появлению достаточно мощных инструментов управления процессом тестирования и инструментальных средств автоматизации тестирования, уже вполне похожих на своих нынешних потомков В нулевые годы нынешнего века развитие тестирования продолжалось в контексте поиска всё новых и новых путей, методологий, техник и подходов к обеспечению качества. Серьёзное влияние на понимание тестирования оказало появление гибких методологий разработки и таких подходов, как «разработка под управлением тестированием9 (tеst-drivеn dеvеlоpmеnt10, TDD)». Автоматизация тестирования уже воспринималась как обычная неотъемлемая часть большинства проектов, а также стали популярны идеи о том, что во главу процесса тестирования следует ставить не соответствие программы требованиям, а её способность предоставить конечному пользователю возможность эффективно решать свои задачи. Тестировщик — специалист, принимающий участие в тестировании компонента или системы. В его обязанность входит поиск вероятных ошибок и сбоев в функционировании объекта тестирования (продукта, программы). Тестировщик моделирует различные ситуации, которые могут возникнуть в процессе использования предмета тестирования, чтобы разработчики смогли исправить обнаруженные ошибки. Конкретная цель группы тестирования меняется от компании к компании, но за деталями есть общий фактор. Тестируют для поиска информации. Критические решения по проекту или продукту принимают на основе этой информации[2]. По субъекту тестирования могут выделяться альфа-тестировщики — непрофессионально проводящие тестирование программы, находящейся на ранней стадии разработки («альфа-версия» и бета-тестировщики — пользователи, взявшие на себя обязательства по тестированию программы («бета-версия»), в том числе опубликованных официально версий и так называемых «релиз-кандидатов» программы. По виду деятельности могут выделяться: тест-аналитик — выполняет анализ продукта, разбивает его на составные части, расставляет приоритеты тестирования и составляет логическую карту приложения; тест-дизайнер — на основании информации, полученной от аналитика, приступает к разработке тестов; собственно тестировщик — проводит непосредственно тестирование по уже готовым тест-кейсам. Необходимыми качествами тестировщика являются логическое мышление, внимательность, хорошая память, умение учиться и адаптироваться к существующим задачам, быстро переключаться с одного типа задач на другой. Не менее важны терпение, усидчивость и умение работать в команде. Кроме того, тестировщик выступает одновременно и как пользователь, и как эксперт, а потому должен иметь определённый склад мышления: уметь воспроизводить поведение пользователя продукта и анализировать поведение системы, входящие параметры и полученные результаты с точки зрения инженера. Одной из особенностей профессии является возможность удалённой работы, причём расстояние часто не имеет значения (тестировщик может находиться в другом городе или стране по отношению к разработчику и заказчику). |