Файл: Отладка и тестирование программ: основные подходы и ограничения (Виды тестирования).pdf
Добавлен: 28.03.2023
Просмотров: 151
Скачиваний: 1
Нефункциональное тестир ование основывается н а тестах, необхо димых для опреде ления различных характе ристик продукта, кото рые измеряются всевозм ожными величинами, т.е. показ ывает, как прогр амма ведет се бя в раб оте. Нефункциональное тестир ование включает в себя цел ый ряд подв идов. Это тестир ование производительности, устан овки, удобства, те ст на отк аз и конфиг урацию.
Тестирование производи тельности или нагруз очное тестирование имити рует работу сист емы несколькими пользов ателями в распред еленных ресурсах прогр аммы. Выявляются возмож ности и недос татки приложения пр и работе по д нагрузкой и в стрес совых условиях – стаби льная работа прог рамм.
Тестирование эт о одна и з важнейших зад ач по обеспе чению качества програ ммного обеспечения и служит он а для норма льной инсталляции прило жения, его настр ойки и обнов ления. Сейчас наибо льшее распространение полу чила установка прог рамм с помо щью специальных програ ммных модулей – инсталл яторов, которые са ми нуждаются в надлежащем тестир овании.
Если инсталл яторов нет, т о установка произв одится самостоятельно согл асно инструкциям и спецификациям, ли бо специальному пла ну установки; напр имер в распред еленных системах.
Тестир ование удобства пользо вания не име ет ничего общ его с тестиро ванием функциональности пользоват ельского интерфейса, он о лишь прово дится на пользова тельском интерфейсе, рав но как и на мно гих других возмо жных компонентах прод укта. Это ли шь метод тестир ования, определяющий удоб ство в использ овании программы, обуч ению, понятности для пользователей программного обеспечения в конкретных условиях. При этом оценивается удобство использования программы исходя из критериев производительности, эффективности, правильности действий пользователя, запоминаемости, а также необходимая эмоциональная реакция человека после работы с продуктом.
Проверяется и функционал самой программы тестом черного ящика, а также и ее интерфейс тестированием белого ящика, где уже проверяется удобство использования модулей, классов, методов и переменных, а также рассматривается возможность доработки, модификации системы и легкость интегрирования их с другими приложениями и компонентами. Все это направлено на повышение качества, скорости написания программного кода и его поддержки. Тестирование удобства пользования можно производить на различных этапах проектирования продукта. Для создания удобного дизайна программ полезно следовать принципау «защиты от дурака». Так, если в поле формы необходимо вводить только целочисленное значение, то следует ограничить пользователю диапазон ввода только цифрами и исключить иные символы для избегания возникновения исключений в работе кода.
Тестирование н а отказ и восстановление анализ ирует стрессовую устойч ивость программы пр и отказе оборуд ования, отказе в работе се ти и дру гие. Проверяются сист емы отката и восстановления, обеспеч ивающие целостность и сохранность дан ных ПО в случае сб оя в норма льной работе прогр аммы или окруж ения. Данное тестир ование просто необх одимо при проекти ровании веб-прило жений, поскольку и з-за пот ери данных мож но потерять мно го клиентов, ден ег, а глав ное репутацию ваш его продукта.[[4]]
Техни чески это вс е достигается имита цией симуляцией отклю чения электричества, обр ыва связи, отключ ением носителей, ли бо специальным тест овым набором дл я ситуации нали чия в сист еме неверных дан ных.
Необходимо отме тить, что те ст на отк аз и восстан овление является дово льно специфическим тестиро ванием. При разра ботке сценариев тестир ования следует учиты вать все особен ности тестируемого програ ммного обеспечения. Мет оды воздействия пр и этом примен яются достаточно жест кие, поэтому след ует сразу реш ить: необходимо и целесообразно воо бще проводить подо бные испытания дл я конкретной прогр аммы?
Конфигурационное тестир ование направлено н а проверку работоспо собности программы в разных конфигу рациях системы, платф ормах, средах, жел езе и т.д. Цел ями данного тестир ования могут бы ть: определение оптима льной конфигурации оборуд ования или возмож ность миграции и совместимости сист емы с разн ыми платформами и конфигурациями компью теров.
В слу чае с кли ент-серверными прилож ениями, тесты прово дятся на серве рном и клиен тском уровнях. Н а серверном уро вне проводится тестир ование продукта с аппаратными и программными средс твами. Особое вним ание здесь уделя ется определению оптима льной конфигурации оборуд ования, обеспечивающей хоро шее качество, производи тельность и надеж ность.
На клиен тском уровне анализируется работоспособность программы конечным пользователем с различными конфигурациями клиентских машин и операционных систем. Особое внимание уделяется функциональности и удобству пользования программным продуктом. Тесты проводятся с учетом всевозможных параметров: вида операционной системы, ее битность, вид браузера, особенности видеоадаптеров, драйверов, библиотек, разрешение экрана и др.
И чем больше требований предъявляется к работе программы при различных конфигурациях компьютеров, тем больше различных тестов потребуется провести. Именно в таких случаях очень эффективным будет автоматизация процесса тестирования, позволяющая экономить много времени и средств разработчиков.
Связанные с изменениями виды тестирования реализуются после внесения необходимых изменений и корректировки. Программа должна быть заново протестирована, чтобы подтвердить, что ошибка была устранена. [[5]]
1.3 Сущность и методика отладки программ. Виды ошибок
Весь спектр возможных ошибок в программных продуктах можно условно разделить на четыре категории:
Нелогичный пользовательский интерфейс;
Неудовлетворенные ожидания;
Низкая производительность;
Аварийные завершения или разрушение данных.
Нелогичный пользовательский интерфейс это разновидность не очень серьезных ошибок, однако может привести к потере потенциальных клиентов и снижению рейтинга вашего продукта. Почему, например, операционная система Windows от Microsoft пользуется такой популярностью? Одной из причин является как раз – удобный и понятный пользовательский интерфейс во всех ее приложениях. Если отклониться от ее стандартов, программа становится трудной для использования пользователем. В качестве примера такого трудного приложения можно привести Microsoft Outlook. В нем различные сочетания клавиш для быстрой работы не соответствуют вызовам привычных функций и действий пользователя; например поиск и др.
Если гово рить о клиен тских приложениях, т о в ни х проблема нелоги чности решается дово льно просто. Пр и разработке ли шь необходимо придерж иваться специальных рекоме ндаций и станд артов для Windows-прило жений.
В слу чае проектирования интер фейса Web-приложения, эт а задача сущест венно усложняется. Зде сь уже не т конкретных станд артов на пользова тельский интерфейс. Сам ое главное, чт о надо учиты вать при разра ботке интерфейса дл я Web-клиента, эт о возможную низ кую скорость траф ика, поэтому след ует создавать пользова тельский интерфейс максим ально простым и избегать загр узки с серв ера всяких нену жных мелочей, тяже лых графических элеме нтов и проч его. К прим еру, простые реше ния, подобные CNN.com, нрав ятся практически вс ем пользователям. Использ ование простого наб ора ссылок выгл ядит куда луч ше и рабо тает быстрее, че м нагромождение всяк ого ненужного функцион ального хлама, вызыв ающее неудобства и отпугивающего клие нтов.[[6]]
Одной и з наиболее труднора зрешимых ошибок явля ются неудовлетворенные ожид ания пользователей. Прич иной этого обы чно является недостат очность исследования реал ьных потребностей потреб ителя, т.е. возникает проб лема взаимодействия. Подо бные ошибки обы чно возникают н а самых ран них этапах проекти рования программы.[[7]]
Са ми разработчики н е общаются напр ямую с заказч иками своих прог рамм, поэтому он и сами н е изучают, чт о нужно пользов ателям. Поэтому необх одимо взаимодействие с заказчиками, что бы увидеть, чт о они дел ают с и х программами. Мно гое прояснится, ес ли понаблюдать з а действиями рядо вого пользователя ил и заказчика, ка к используется ва ш программный прод укт. Кроме то го, такой оп ыт позволит разраб отчику понять, чт о, по мне нию клиента, требу ется от разрабат ываемого приложения.
Наибо льшее разочарование приносят ошибки, приводящие к снижению производительности при некорректной обработке данных приложением. Зачастую именно эти ошибки вызваны недостаточным тестированием программного обеспечения. Они могут быть выявлены с запозданием при обработке большого массива данных. Очень часто бывает так, что выпуская первую версию недостаточно протестированной программы на рынок, производитель обрекает себя на полный провал. Причем последующие исправленные версии уже не хочет использовать большая часть пользователей, которые обожглись на первой версии приложения.
Существует два основных метода борьбы с подобными ошибками. С одной стороны необходимо сразу же установить конкретные требования к производительности программного продукта. Для выявления проблем с производительностью нужно сравнить основные показатели работы приложения под разными нагрузками. Если вдруг происходит потеря производительности на 10%, то необходимо принять меры и выяснить – по какой причине это произошло и внести нужные изменения в код.
Далее надо убедиться в том, что нагрузка действительно соответствует наиболее близким к реальной жизни сценариям, и делать это нужно на самых ранних этапах проектирования.
При возникновении аварийных завершений и потери данных, а также утечки памяти также являются очень болезненными для пользователей. Это наиболее распространенный вид ошибок. Среди таких дефектов встречаются как легкоразрешимые, так и практически неразрешимые ошибки. Недопустимо выпускать на рынок такой продукт, заранее зная о подобных дефектах, даже самых незначительных.
Если ж е уделять доста точно внимания всяк ого рода дета лям, то оши бок можно ес ли не избе жать, то минимиз ировать. Причин появл ения всех эт их ошибок доста точно много, н о из ни х можно выде лить основные. Эт о, во-пер вых, непонимание разрабо тчиками требований предъяв ляемых к програ ммному продукту. Та к происходит, ког да приложение наполн яется ненужными функц иями и друг ими мелочами бе з необходимости. В о-вторых, прич иной могут бы ть невежественные и мало обуче нные разработчики, кото рые недостаточно разбир аются в операц ионных системах, технол огиях и язы ках программирования. В-третьих, как ие либо админист ративные причины – слиш ком сжатые и невозможные дл я разработки постав ленные сроки. Воп рос о приемл емости поставленных сро ков должен обсужд аться всеми разрабо тчиками на основ ании набора реализ уемых функций. В случае недостат очности времени н а качественную раб оту целесообразней да же просто отказ аться от выпол нения заказа. Одн ой из час тых причин оши бок в прогр аммах является недоста точная ориентация н а выпуск качест венной продукции. Разраб отчики должны горди ться своим творе нием и кор пят над все ми элементами прод укта, а н е только на д теми, чт о им интер есны. Например, вме сто того что бы копаться в деталях алгор итма, они выби рают более прос той алгоритм и думают, ка к лучше ег о протестировать. В конце кон цов, заказчика интер есуют не алгор итмы, а качест венный продукт. Произво дители программного обеспе чения, по насто ящему приверженные каче ству, должны опира ться на тщате льное планирование, персон альную ответственность, надле жащий контроль каче ства и хоро шие способности к общению с клиентами и между соб ой. Многие програ ммисты на раз ных этапах разра ботки больших сис тем, но тол ько тот, кт о уделяет значит ельное внимание дета лям, будет выпус кать продукцию в нужные сро ки и отлич ного качества.[[8]]