Добавлен: 29.06.2023
Просмотров: 74
Скачиваний: 3
СОДЕРЖАНИЕ
1. Основные понятия тестирования и отладки программного обеспечения
1.1. Принципы тестирование и отладка программного обеспечения
1.2. Этапы тестирования программного обеспечения.
1.3. Определение подхода к тестированию
2. Выбор и обоснование стратегии автоматизации.
2.1. Цели и задачи тестирования программного обеспечения
2.2. Методологии тестирования ПО
2.3. Комплексное тестирование программного обеспечения
2.4. Нисходящее и восходящее тестирование
3. Стратегия тестирования и отладки программного обеспечения
Введение
История тестирования программного обеспечения неразрывно связана с самим программным обеспечением. Изначальное разработка уделяла особое внимание крупномасштабным программам, связанным с системами корпоративных баз данных министерства обороны. С их помощью проводилось вычисление сложных алгоритмов и манипулирование данными. Тестирование как правило начиналось уже после завершение кодирования, как правило проводился теми же людьми.
С наступлением эры персональных компьютеров, стало появляться и множество программ, но зачастую тестированию уделяли недостаточное количество внимания. Если раньше ошибки рассматривались как нечто неприятное, но вполне терпимое, то сейчас компании затрачивают около 50% от общего количества работы на тестирование и отладку, особенно когда компьютеры стали эксплуатироваться в производственной, медицинской, финансовой и многих других отраслях. В борьбе за потребителя, немалую роль имеет время разработки программного обеспечения, если процесс тестирования начат вовремя, то продолжительность может быть значительно уменьшена, тем самым удовлетворив заказчика в ожидании готовой продукции.
Стоит также сказать и про людей, занимающихся тестированием. Тестироващик программного обеспечения – это специалист занимающийся тестированием программного обеспечения с целью обнаружить ошибки, дефекты в его работе и их последующего устранением. Из определения можно понять, что задача тестироващика воспроизвести как можно больше багов, это видимый результат, и чем ошибок больше, тем больше цениться специалист.
1. Основные понятия тестирования и отладки программного обеспечения
1.1. Принципы тестирование и отладка программного обеспечения
Тестирование программного обеспечения — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определенным образом.
В различных источниках, тестированию давались разные определения, в том числе:
- процесс выполнения программы с целью нахождения ошибок;
- интеллектуальная дисциплина, имеющая целью получение надежного программного обеспечения без излишних усилий на его проверку;
- техническое исследование программы для получения информации о её качестве с точки зрения определенного круга заинтересованных лиц;
- проверка соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выполненных определенным образом;
- процесс наблюдения за выполнением программы в специальных условиях и вынесения на этой основе оценки каких-либо аспектов её работы;
- процесс, имеющий целью выявление ситуаций, в которых поведение программы является неправильным, нежелательным или не соответствующим спецификации;
- процесс, содержащий в себе все активности жизненного цикла, как динамические, так и статические, касающиеся планирования, подготовки и оценки программного продукта и связанных с этим результатов работ с целью определить, что они соответствуют описанным требованиям, показать, что они подходят для заявленных целей и для определения дефектов;
Тестирование основано на планировании, целенаправленной деятельности. Как не парадоксально, для достижения лучших результатов систематический подход приводит к более продуктивному результату, нежели излишняя спешка, по вине которой есть вероятность проявления ошибок и сбоев в работе программного обеспечения во время эксплуатации реального пользователя. По критерию запуска выделяют два типа тестирования: статическое – процедура без выполнения программного кода, может быть, как ручным, так и автоматизированным. Статическое тестирование начинается на ранних стадиях жизненного цикла, большинство техник может быть использовано для документации, вычитку кода, функциональной спецификации и требований. При автоматизированном тестировании используются средства проверки синтаксиса программного кода.
Второй тип: динамический – предполагает непосредственный запуск программы, для проведения анализа поведения во время работы. Для выполнения динамического тестирования необходимо, чтобы код был записан, скомпилирован и запущен. Статическое и динамическое тестирование прекрасно дополняют друг друга при выявлении дефектов.
Дефект - означает ошибку в программе, из-за которой программа выдает неожиданное поведение и, как следствие, результат. Большинство программных ошибок возникают из-за неверных шагов допущенных разработчиками программы в её исходном коде, либо в её дизайне. Также некоторые ошибки возникают из-за некорректной работы инструментов разработчика, например, из-за компилятора, вырабатывающего некорректный код. Программы, которые содержат большое число ошибок, серьёзно ограничивающие её работоспособность, вредят как с финансовой точки зрения, так и на репутацию, известно очень много случаев, когда фирмы закрывались из-за провального запуска своего продукта в связи с огромным количеством ошибок.
1.2. Этапы тестирования программного обеспечения.
Перед тем как программа попадет в руки конечному пользователю, необходимо провести тестирование на корректную работу всех частей. Тестирование проводиться каждый раз после внесения изменений в исходный код. Чем больше ошибок будет выявлено, тем меньше будет затрачено финансовых и временных ресурсов. Ведь никому не хочется при работе с программой наткнуться на неправильно или совсем неработающую функцию.
Первый этап тестирования предусматривает стратегию, определяется объем тестовых работ, типы и методики, которые должны применяться для обнаружения ошибок и дефектов, процедуры, информирующие об обнаружении недостатков в программном обеспечении. Необходимо точно конкретизировать, какие части будут тестироваться, какие аспекты будут проверяться, какие результаты необходимы на том или ином этапе. Необходимо тесно интегрировать разработку и тестирование программного обеспечения, создание графика разработки, оценка необходимых человеческих, программных и аппаратных ресурсов. Стоить отметить, что расписание тестирования должно быть согласовано с расписанием разработки создаваемого программного обеспечения. При этом должно быть предусмотрено как статическое, так и динамическое тестирование.
При использовании автоматизации тестирования программного обеспечения, оно должна рассматриваться как одни инструмент общей стратегии. Автоматизация может использоваться на этапе контроля качества, чтобы сократить время тестирования и упростить весь процесс, поскольку применяет программные средства. Существует два основных подхода к автоматизации тестирования: тестирование на уровне кода и тестирование пользовательского интерфейса. К первому типу относится, в частности, модульное тестирование. Ко второму — имитация действий пользователя - функциональное тестирование.
Наиболее распространенной формой автоматизации является тестирование приложений через графический пользовательский интерфейс. Популярность такого вида тестирования объясняется двумя факторами: во-первых, приложение тестируется тем же способом, которым его будет использовать человек, во-вторых, можно тестировать приложение, не имея при этом доступа к исходному коду.
Одной из главных проблем автоматизированного тестирования является его трудоемкость: несмотря на пользу в устранении части однообразных, рутинных операций, большие ресурсы могут расходоваться на обновление самих тестов. Это относиться к обоим видам автоматизации.
Часто руководителям групп тестирования приходится разрабатывать документы более высокого уровня, описывающие общие подходы и этапы развития реализуемого проекта. Стратегия тестирования – это план работы, учитывающий специфику функциональности, определяет типы тестов, описание необходимых подходов, разберем следующие подходы более подробно:
Уточнить объем необходимых тестовых работ путем анализа документов содержащих требования к программному продукту. Рассмотреть виды тестирования, такие как последующее улучшение возможностей, удобство обслуживания, а также возможность коммуницировать с другими аппаратных средств заказчика.
Определить подход к тестированию за счет выбора статических и динамических тестов, связанных с каждой стадией разработки. Здесь потребуется включить описания всех рабочих продуктов, которые должна подготовить тестовая группа.
Определить критерии входа и выхода для каждой стадии тестирования, равно как и все точки контроля качества, для чего потребуется участие специалистов по тестированию.
Определить стратегию автоматизации в случае, если планируется использование автоматизации какого-либо вида тестовой деятельности. Автоматизация требует проведения независимых параллельных работ, которые должны тщательно планироваться и выполняться только в тех случаях, когда это не приводит к снижению эффективности.
Отдельные модули тестирования можно разделить на следующие пункты:
- Тестирование функционала – проводиться с целью, проверить работоспособность по задуманным предписанным действиям, в конечном итоге пользователи не получаться желаемого результата.
- Тестирование удобства и простоты – проводиться с намереньями, узнать, удобно ли конечному пользователю пользоваться данным программным обеспечением. На основе полученных результатов проводятся дополнительные процедуры по улучшению.
- Тестирование интерфейса – проводится для выявления дефектов во внешнем виде и их последующего исправления.
- Тестирование совместимости – может ли программа нормально функционировать с другими программами, не вызывая критических сбоев в работе первой или вторых.
- Тестирование производительности – проводиться при высоких нагрузках, с целью выяснить насколько исправно программное обеспечение, как ведут себя внутренние подсистемы при большом количестве подключенных пользователей. При больших нагрузках могут возникнуть сбои в работе функционала, после данного этапа разработчики вносят изменение в те места, которые больше всего подвержены нагрузке.
- Тестирование безопасности – проводиться с целью поиска незащищенных мест, которые могут способствовать проникновению злоумышленников, для хищения или порчи информации.
Исключить абсолютно все ошибки невозможно. Если переусердствовать в тестировании, то для отладки может потребоваться повышенное количество сил, что воспрепятствует указанной сдачи. Но также если внимание к тестам окажется недостаточным, то есть риск получить куда больше проблем, особенно после сдачи проекта в эксплуатацию.
Вот несколько предложений по разработке стратегии тестирования, которые помогут в поиске оптимального тестового покрытия:
Тестировать в первую очередь требования с наивысшим приоритетом.
Использовать разбиение на эквивалентные классы и анализ граничных значений для снижения трудозатрат на тестирование
Тестировать те участки, в которых наиболее вероятно присутствие проблем
Сосредоточить свое внимание на функциях и конфигурациях, с которыми наиболее часто будет иметь дело конечный пользователь.
1.3. Определение подхода к тестированию
Подход к тестированию начинается с исследования стадий жизненного цикла разработки, с целью поиска тестов статического и динамического тестирования, которые будут использованы на соответствующей стадии.
При этом не имеет значения, какая модель жизненного цикла разработки используется: каскадная, спиралевидная или модель с итеративными версиями - для отбора эффективных тестов можно исследовать этапы любой перечисленной модели. В качестве примера возьмем каскадную модель и выясним, какие виды тестирования могут для нее использоваться:
- Стадия формулирования требований
- Стадия системного проектирования
- Стадии тестирования проектов программ, программных кодов, модульного тестирования и комплексных испытаний
- Системные испытания
- Приемочные испытания
- Регрессионное тестирование
Подход к тестированию должен отражаться в документах, содержащих планы проведения испытаний. Определение критериев тестирования и точек контроля качества. Существует несколько типов критериев, которые могут определяться перед началом системного тестирования:
- Критерий входа. Описывает, что нужно сделать перед началом тестирования.
- Критерий выхода. Описывает то, что вы считается необходимым для завершения испытаний.
- Критерий приостановки/возобновления. Описывает, что произойдет, если по причине из-за дефектов продолжение тестирования окажется невозможным.
- Критерий успешного/неудачного прохождения теста. Прогон каждого теста должен давать заранее известные результаты.
- Другие критерии, определяемые процессом или стандартами.