Тестирование программ

тестирование программЗначительная часть производственного процесса по разработке программного обеспечения связана с тестированием программ. В данной статье мы попробуем разобраться, что же собой представляет процесс тестирования и как осуществляется подобного рода деятельность.


Тестирование: что это такое?

Что же сегодня называют тестированием? Под этим словом понимают процесс, во время которого выполняется проверка программного обеспечения с целью обнаружения мест некорректного функционирования кода. Чтобы достичь лучших результатов, намеренно конструируются достаточно трудные наборы входной информации. Основная цель проверяющего состоит в том, чтобы разработать оптимальные возможности для отказа данного программного продукта. В некоторых случаях тестирование разработанного программного обеспечения может быть упрощено до самой обыкновенной проверки работоспособности и выполнения отдельных функций. Это дает возможность существенно сэкономить время, но при этом частенько сопровождается ненадежностью программного обеспечения, недовольством пользователей и так далее.

Тестирование: эффективность

Возможность быстрого и эффективного поиска ошибок оказывает существенное влияние на стоимость и длительность разработки программного продукта требуемого качества. Несмотря на то, что тестеры получают в несколько раз меньшую заработную плату, чем программисты, обычно стоимость их услуг достигает 30-40% от стоимости всего проекта. Складывается подобная ситуация из-за численности личного состава, так как поиск ошибок представляет собой не совсем обычный и довольно трудный процесс. Даже если программное обеспечение прошло довольно большое количество тестов, при этом нет 100% гарантии, что в нем не будет ошибок. Неизвестно просто, когда эти ошибки появятся. Чтобы стимулировать тестеров выбирать типы проверок, которые с большей вероятностью позволяют найти ошибку, используются различные мотивирующие средства, причем как материальные, так и моральные.

Подход к работе

Оптимальной считается ситуация, в которой реализуются различных механизмы, направленные на исправление ошибок в программном обеспечении с самого начала. Для этого нужно позаботиться о грамотном проектировании архитектуры и четком техническом задании. Важно также не вносить коррективы в связи, когда работа над проектом уже идет. В этом случае перед тестером поставлена задача поиска и определения небольшого числа ошибок, которые в конечном результате остаются. Это может существенно сэкономить время и деньги.

Что собой представляет тест? Это важный аспект деятельности проверяющего. Он необходим для успешного выявления недостатков программного кода. Тесты необходимы для того, чтобы контролировать правильность приложения. Что же входит в тест? Тест обычно состоит из начальных данных и тех значений, которые должны получиться в качестве промежуточных или результирующих. Чтобы успешнее выявлять несоответствия и проблемы, необходимо составлять тесты после того, как был разработан алгоритм, но еще не начато непосредственно программирование. Желательно при этом использовать при расчете необходимых данных несколько подходов. В этом случае возрастает вероятность обнаружения ошибки благодаря тому, что код можно исследовать с другой точки зрения. Тесты комплексно должны обеспечивать проверку внешних эффектов готового программного изделия и алгоритмов его работы. Предельные и вырожденные случаи представляют особенный интерес. В практике деятельности с ошибками довольно часто можно выявить, что цикл работает на один раз меньше, чем запланировано. Важным также является тестирование персонального компьютера. Благодаря ему можно проверить соответствует ли программное обеспечение желаемому результату на различных компьютерах. Это может потребоваться для того, чтобы удостовериться, что ПО может работать на всех ЭВМ. Также тестирование компьютера, на котором планируется осуществлять разработку, является важным этапом при создании мультиплатформенных разработок.

Поиск ошибок

Программы довольно часто предназначены для работы с большим массивом данных. Неужели для тестирования необходимо полностью создавать такой массив? Это не требуется. Сегодня широкое распространение получила практика «миниатюризации» программы. В данном случае осуществляется разумное сокращение объема данных по сравнению с тем, что должно использоваться. Рассмотрим следующий пример: имеется программа, в которой создается матрица размером 50×50. Иначе говоря, нужно внести в ручную 2500 значений. Это возможно, но занимает некоторое время. Для проверки работоспособности программный продукт получает матрицу размером 5×5. То есть пользователю нужно будет ввести всего 25 значений. Если в данном случае будет наблюдаться нормальная безошибочная работа, то это означает, что все в порядке. Однако и здесь имеются свои подводные камни. Они заключаются в том. Что при миниатюризации программы происходит ситуация, в результате которой изменения становятся неявными и могут даже временно исчезать. Также очень редко, но иногда все-таки появляются новые ошибки.

Цели тестирования

Процесс тестирования является не самым легким делом по той причине, что данный процесс в полном объеме не поддается формализации. У больших программ практически никогда нет необходимого точного эталона. В качестве ориентира используется ряд косвенных характеристик. Они не всегда в полном объеме могут отражать функции и характеристики программных разработок, которые отлаживаются. Они должны быть подобраны таким образом, чтобы правильный вариант вычислялся до того, как будет протестирован программный продукт. Если не сделать этого заранее, то может возникнуть соблазн рассчитать все приблизительно. Если машинный результат попадет в диапазон предполагаемых значений, то может быть принят ошибочный вывод о том, что все работает как надо.

Проверка программного обеспечения в различных условиях

Тестирование программ, как правило, происходит в тех объемах, которые требуются для минимальной проверки функциональности программного обеспечения в ограниченных пределах. Деятельность ведется с изменением параметров и условий их работы. Поделить процесс тестирования можно на три этапа:

— проверка в обычных условиях: в этом случае тестируется основной функционал разработанного программного обеспечения. Результат должен соответствовать ожидаемому;

— проверка в чрезвычайных условиях: в этом случае подразумевается получение граничных данных, которые могут оказать негативное влияние на работоспособность созданного программного обеспечения. В качестве примера можно привести работу с очень большими или очень малыми числами или вообще полное отсутствие получаемой информации.

— проверка в исключительных случаях – данный тип проверки предполагает использование данных, лежащих за гранью обработки. В таких ситуациях плохо, если программное обеспечение воспринимает их как пригодные к расчету и при этом выдает правдоподобный результат. Нужно позаботиться о том, чтобы в подобных случаях происходило отвержение любой информации, которая не может быть обработана корректно. Необходимо также предусмотреть информирование пользователя об этом.

Тестирование программного обеспечения: виды

Довольно трудно создавать программное обеспечение без ошибок. Этот процесс требует значительных временных затрат. Чтобы получить хороший программный продукт, используют два типа тестирования: «Альфа» и «Бета». Что собой представляют эти типы тестирования? Когда речь идет об альфа-тестировании, то под этим термином подразумевают проверку, которую проводит штат разработчиков в условиях лаборатории. Это последний этап проверки перед тем, как программа будет передана конечным пользователям. По этой причине разработчики стараются выложиться по максимуму. Данные для легкости работы могут протоколироваться, чтобы создавать хронологию возникновения проблем и их устранения. Под бета-тестированием сегодня имеют ввиду поставку программного обеспечения ограниченному кругу пользователей, который могли бы протестировать программу и выявить пропущенные ошибки. В данном случае особенностью процесса тестирования является то, что программное обеспечение может быть использовано не по своему целевому назначению. Неисправности благодаря этому будут выявляться там, где они ранее не были замечены. Это вполне нормально и не нужно переживать по этому поводу.

Завершение процесса тестирования

Если предыдущие этапы тестирования завершились успешно, то разработчикам остается только провести приемочный тест. Это самая простая формальность. При проведении данной проверки происходит подтверждение того, что не было обнаружено никаких дополнительных проблем и программное обеспечение можно выпускать на рынок. Чем большую важность будет иметь конечный результат, тем более внимательно должна осуществляться проверка. Нужно следить за тем, чтобы все этапы тестирования были пройдены успешно. Так в целом выглядит процесс тестирования. Давайте теперь углубимся в технические детали и обсудим такие полезные инструменты, как тестовые программы. Что собой представляют такие программы? В каких случаях их можно использовать?

Автоматизированное тестирование

Как считалось ранее, динамический анализ разработанного программного обеспечения представляет собой довольно тяжелый подход, который являлся не слишком эффективным для обнаружения дефектов. Из-за увеличения объема и сложности программ появился противоположный взгляд на этот вопрос. Автоматическое тестирование используется в тех случаях, в которых основными приоритетами являются безопасность и работоспособность. Они должны быть при вводе любой входной информации. В качестве примера программ, для которых такое тестирование является целесообразным, можно привести следующие: веб-сервер, сетевые протоколы, sandboxing. Далее мы рассмотрим несколько образцов, которые можно использовать для осуществления подобной деятельности. Если вас интересуют бесплатные программы для тестирования, то среди этих программных продуктов довольно сложно найти на настоящему качественные. Однако существуют пиратские версии качественных проектов. При желании вы можете обратиться к их услугам.

Avalanche

Данный инструмент дает возможность обнаружить дефекты, осуществляя тестирование программного обеспечения в режиме динамического анализа. Avalanche собирает данные и проводит анализ трассы выполнения разработанного объекта. Тестеру предоставляется набор входных данных, которые могут вызвать ошибку и обходят имеющиеся ограничения. Благодаря использованию хорошего алгоритма проверки, прорабатывается большое количество возможных ситуаций. Программа получает различные наборы входной информации, которые дают возможность смоделировать значительное количество ситуаций, а также создать условия, когда возникновения сбоя является наиболее вероятным. Применение эвристической метрики является важным преимуществом программы. Если имеются проблемы, то ошибку приложения можно найти с высокой степенью вероятности. Данная программа имеет ограничения типа проверки только одного помеченного файла или входного сокета. При осуществлении такой операции, как тестирование ПО, будет содержаться детальная информация о наличии проблем с бесконечными циклами, нулевыми показателями, неисправностями или некорректными адресами. Это далеко не полный список всех обнаруживаемых ошибок, а только наиболее распространенные их примеры. Увы,разработчикам придется исправлять эти недочеты. Автоматические инструменты для этих целей не подойдут.

KLEE

KLEE представляет собой неплохую программу для тестирования памяти. Данный программный продукт может перехватывать около 50 системных вызовов и достаточно большое количество виртуальных процессов. В целом данная программа не занимается поиском отдельных подозрительных мест. Она обрабатывает максимально возможный элемент кода и анализирует используемые пути передачи информации. По этой причине время тестирования программы будет зависеть от размера объекта. Ставка при проверке делается на символические процессы. Они являются одним из возможных способов выполнения задач в проверяемом программном продукте. Благодаря параллельной работе существует возможность анализа большого количества вариантов работы исследуемого программного продукта. После окончания процесса тестирования для каждого пути сохраняются наборы входных данных, с которых была начата проверка. Стоит отметить, что тестирование программ при помощи инструментаKLEE позволяет выявлять большое количество отклонений, которых быть не должно. Она может найти проблемы даже в тех приложениях, которые разрабатывались несколько десятилетий.

Отблагодари меня, поделись ссылкой с друзьями в социальных сетях:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *