В этом учебном пособии мы познакомимся с типами и методами тестирования “черного ящика”, cамим процессом, преимуществами, недостатками и некоторыми инструментами автоматизации для тестирования, отличных от ручного тестирования.
6.2 Экономика тестирования
Дав такое определение тестированию, необходимо на следующем шаге рассмотреть возможность создания теста, обнаруживающего все ошибки программы. Покажем, что ответ будет отрицательным даже для самых тривиальных программ. В общем случае, невозможно обнаружить все ошибки программы. А это, в свою очередь, порождает экономические проблемы, задачи, связанные с функциями человека в процессе отладки, способы построения тестов.
6.2.1 Тестирование программы как черного ящика
Одним из способов изучения поставленного вопроса является исследование стратегии тестирования, называемой стратегией черного ящика, тестированием с управлением по данным или тестированием с управлением по входу-выходу. При использовании этой стратегии программа рассматривается как черный ящик. Иными словами, такое тестирование имеет целью выяснение обстоятельств, в которых поведение программы не соответствует ее спецификации.
Анализ метода «Black box» тестирование
При таком подходе обнаружение всех ошибок в программе является критерием исчерпывающего входного тестирования. Последнее может быть достигнуто, если в качестве тестовых наборов использовать все возможные наборы входных данных. Поэтому для тестирования даже небольшой программы требуется бесконечное число тестов. Как пример можно привести задачу о треугольниках.
Даны три числа — A, B и C. Требуется определить, могут ли эти числа являться длинами сторон треугольника, и если да, то является ли этот треугольник прямоугольным, равнобедренным или равносторонним. Очевидно, что если A, B и C являются вещественными числами, то имеется бесконечное количество комбинаций их значений.
Если такое испытание представляется сложным, то еще сложнее создать исчерпывающий тест для большой программы. Образно говоря, число тестов можно оценить «числом, большим, чем бесконечность».
Из изложенного следует, что построение исчерпывающего входного теста невозможно. Это подтверждается двумя аргументами: во-первых, нельзя создать тест, гарантирующий отсутствие ошибок; во-вторых, разработка таких тестов противоречит экономическим требованиям. Поскольку исчерпывающее тестирование исключается, нашей целью должна стать максимизация результативности капиталовложений в тестирование (иными словами, максимизация числа ошибок, обнаруживаемых одним тестом). Для этого мы можем рассматривать внутреннюю структуру программы и делать некоторые разумные, но, конечно, не обладающие полной гарантией достоверности предположения.
6.2.2 Тестирование программы как белого ящика
Стратегия белого ящика, или стратегия тестирования, управляемого логикой программы, позволяет исследовать внутреннюю структуру программы. В этом случае тестирующий получает тестовые данные путем анализа логики программы (к сожалению, здесь часто не используется спецификация программы).
Тестировщик с нуля / Урок 6. Нефункциональное тестирование. Черный, белый и серый ящик
Сравним способ построения тестов при данной стратегии с исчерпывающим входным тестированием стратегии черного ящика. Непосвященному может показаться, что достаточно построить такой набор тестов, в котором каждый оператор исполняется хотя бы один раз; нетрудно показать, что это неверно. Не вдаваясь в детали, укажем лишь, что исчерпывающему входному тестированию может быть поставлено в соответствие исчерпывающее тестирование маршрутов. Подразумевается, что программа проверена полностью, если с помощью тестов удается осуществить выполнение этой программы по всем возможным маршрутам ее потока (графа) передач управления.
Последнее утверждение имеет два слабых пункта. Один из них состоит в том, что число не повторяющих друг друга маршрутов в программе — астрономическое. Чтобы убедиться в этом, рассмотрим представленный на рис. 6.1 граф передач управления простейшей программы.
Каждая вершина или кружок обозначают участок программы, содержащий последовательность линейных операторов, которая может заканчиваться оператором ветвления. Дуги, оканчивающиеся стрелками, соответствуют передачам управления. По-видимому, граф описывает программу из 10–20 операторов, включая цикл DO, который исполняется не менее 20 раз.
Внутри цикла имеется несколько операторов IF. Для того, чтобы определять число неповторяющихся маршрутов при исполнении программы, подсчитаем число неповторяющихся маршрутов из точки A в B в предположении, что все приказы взаимно независимы. Это число вычисляется как сумма 5 20 + 5 19 + … + 5 1 = 100 триллионов, где 5 — число путей внутри цикла. Приведем такой пример: если допустить, что на составление каждого теста мы тратим пять минут, то для построения набора тестов нам потребуется примерно один миллиард лет.
Рис. 6.1 — Граф передач управления небольшой программы
Второй слабый пункт утверждения заключается в том, что, хотя исчерпывающее тестирование маршрутов является полным тестом и хотя каждый маршрут программы может быть проверен, сама программа может содержать ошибки. Это объясняется следующим образом. Во-первых, исчерпывающее тестирование маршрутов не может дать гарантии того, что программа соответствует описанию.
Например, вместо требуемой программы сортировки по возрастанию случайно была написана программа сортировки по убыванию. В этом случае ценность тестирования маршрутов невелика, поскольку после тестирования в программе окажется одна ошибка, т.е. программа неверна. Во-вторых, программа может быть неверной в силу того, что пропущены некоторые маршруты.
Исчерпывающее тестирование маршрутов не обнаружит их отсутствия. В-третьих, исчерпывающее тестирование маршрутов не может обнаружить ошибок, появление которых зависит от обрабатываемых данных. Существует множество примеров таких ошибок. Приведем один из них. Допустим, в программе необходимо выполнить сравнение двух чисел на сходимость, т.е. определить, является ли разность между двумя числами меньше предварительно определенного числа. Может быть написано выражение
Безусловно, оно содержит ошибку, поскольку необходимо выполнить сравнение абсолютных величин. Однако обнаружение этой ошибки зависит от значений, использованных для A и B, и ошибка не обязательно будет обнаружена просто путем исполнения каждого маршрута.
В заключение отметим, что, хотя исчерпывающее входное тестирование предпочтительнее исчерпывающего тестирования маршрутов, ни то, ни другое не могут стать полезными стратегиями, потому что оба они нереализуемы. Возможно, поэтому реальным путем, который позволит создать хорошую, но, конечно, не абсолютную стратегию, является сочетание тестирования программы и как черного, и как белого ящиков. Этот вопрос обсуждается в п. 6.4.
Источник: studfile.net
ОТЧЕТ. Практическая работа 1 Что такое тестирование программного обеспечения
Единственный в мире Музей Смайликов
Самая яркая достопримечательность Крыма
Скачать 39.27 Kb.
Отчет по практическим работам
Практическая работа №1
1.Что такое тестирование программного обеспечения
Тестирование программного обеспечения — процесс исследования, испытания программного продукта, имеющий своей целью проверку соответствия между реальным поведением программы и её ожидаемым поведением на конечном наборе тестов, выбранных определённым образом.
2.Чем тестирование отличается от отладки?
Отладка и тестирование (англ. test — испытание) — это два четко различимых и непохожих друг на друга этапа:
при отладке происходит локализация и устранение синтаксических ошибок и явных ошибок кодирования
в процессе же тестирования проверяется работоспособность программы, не содержащей явных ошибок
3.Для чего проводится функциональное тестирование?
Проведение функционального тестирования — процесс, позволяющий проверить способность информационной системы работать в определенных условиях и решать задачи, нужные пользователям.
4.Что такое комплексное тестирование?
Комплексное тестирование — контроль и/или испытание системы по отношению к исходным целям. Комплексное тестирование является процессом контроля, если оно выполняется в моделируемой среде, и процессом испытания, если выполняется в среде реальной, жизненной.
5.Каковы правила тестирования программы «как черного ящика»?
— тестирование, как функциональное, так и нефункциональное, не предполагающее знания внутреннего устройства компонента или системы.
— тест-дизайн, основанный на технике черного ящика — процедура написания или выбора тест-кейсов на основе анализа функциональной или нефункциональной спецификации компонента или системы без знания ее внутреннего устройства.
6.Как проводится тестирования программы по принципу «белого ящика»?
При тестировании «белого ящика» для разработки тестовых примеров используется внутренняя перспектива системы, а также навыки программирования. Тестировщик выбирает входные данные для реализации путей прохождения кода и определяет ожидаемые выходные данные. Это аналогично тестированию узлов в цепи, например, внутрисхемному тестированию (ИКТ).
7.Что такое модульное тестирование?
Процесс в программировании, позволяющий проверить на корректность отдельные модули исходного кода программы, наборы из одного или более программных модулей вместе с соответствующими управляющими данными, процедурами использования и обработки
8.Как осуществляется сборка программы при модульно тестировании?
Модульное тестирование — это тестирование программы на уровне отдельно взятых модулей, функций или классов. Цель модульного тестирования состоит в выявлении локализованных в модуле ошибок в реализации алгоритмов, а также в определении степени готовности системы к переходу на следующий уровень разработки и тестирования. Модульное тестирование проводится по принципу «белого ящика», то есть основывается на знании внутренней структуры программы, и часто включает те или иные методы анализа покрытия кода.
Модульное тестирование обычно подразумевает создание вокруг каждого модуля определенной среды, включающей заглушки для всех интерфейсов тестируемого модуля. Некоторые из них могут использоваться для подачи входных значений, другие для анализа результатов, присутствие третьих может быть продиктовано требованиями, накладываемыми компилятором и сборщиком.
Что можно сказать о программе, если она на значительном количестве тестов ведет себя правильно?
Требуются повторяющиеся определения
Рамки политики не существует
Основные принципы тестирования
Принцип 1 — Тестирование демонстрирует наличие дефектов (Testing shows presence of defects)
Принцип 2 — Исчерпывающее тестирование недостижимо (Exhaustive testing is impossible)
Принцип 3 — Раннее тестирование (Early testing)
Принцип 4 — Скопление дефектов (Defects clustering)
Принцип 5 — Парадокс пестицида (Pesticide paradox)
Принцип 6 — Тестирование зависит от контекста (Testing is concept depending)
Принцип 7 — Заблуждение об отсутствии ошибок (Absence-of-errors fallacy)
Старые сотрудники уходят к конкурентам или сами становятся таковыми — если открывает свой бизнес в вашей же нише. Бывает, конечно, что работник кардинально меняет сферу деятельности — но чаще всего он остается работать в той же.
На место старых приходят новые сотрудники. Их нужно обучать, вводить в курс дела — это трудозатрат но . Если новичок не имеет опыта работы — обучение может занять долгое время. А иногда и денег стоит — если новенького сотрудника нужно отправлять на курсы. Но даже если новичок всему научится и быстро вольется в коллектив, какое-то время он будет работать медленнее — пока навыки не автоматизируются. В этот период компания гарантированно теряет прибыль.
Прибыль компании падает. Особенно если ушел менеджер по продажам, который уже имел базу клиентов и благополучно по ней работал. Клиенты привыкают к менеджерам и могут отказаться от сотрудничества в случае, если человек уйдет.
Портится психологический климат в коллективе. Увольнение даже одного человека отражается на жизни всего коллектива — особенно если этого сотрудника все любили. А уж если уходит целая группа людей, да еще и не просто так, а после инцидента, это может выбить почву из-под ног серьезно.
Снижается эффективность труда других сотрудников. Если текучка происходит не естественным путем, а “благодаря” начальнику или конфликту других сотрудников , люди начинают задумываться: а что, если нас здесь не ценят и если я уйду, никто и не вспомнит? Соответственно, падает мотивация к труду и рушится уважительное отношение к руководству.
2. Перечислите основные риски при разработке программного обеспечения.
Риски плохого взаимодействия между заказчиком и исполнителем – это риски связанные с отсутствием коммуникации между исполнителем и заказчиком или их представителями. Недостаточное обсуждение задач или архитектуры может негативно сказаться на разрабатываемом ПО.
Риски управления проектом – это риски, связанные с отсутствием навыков проектного менеджмента у менеджера проекта, а также с отсутствием интереса или мотивации у него. Сама по себе уже хорошо отлаженная система управления рисками может являться эффективным средством для того чтобы определить такого рода риски, так как позволяет идентифицировать проблему и выработать решение.
Риски, связанные с недостаточной осведомлённостью управляющего проектом о точном состоянии проекта – это вид рисков, связанных с отсутствием обратной связи. Он возникает, когда проектный менеджер не выстроил рабочий процесс таким образом, чтобы контролировать ход выполнения проекта на всех его этапах.
Риски планирования – это риски, которые могут быть связан с отсутствием навыков планирования по проекту как менеджером, так и исполнителями, если они готовят информацию о сроках выполнения работ.
Риски отсутствия системы контроля – обусловлены большим количеством аспектов в области проектного менеджмента при разработке ПО, когда сложно учесть все возможные ситуации.
Риск появления новых требований возникает в процессе разработки ПО, когда появляются всё новые и новые требования, которые отодвигают сроки и оценку конкретных задач.
Риск противоречивости в требованиях (декомпозиция спецификации) – это риски связанные с выявлением противоречивости в требованиях заказчика на этапе программирования или интеграции проекта.
Риски неправильно определённых системных требований – это риски, когда в самом начале проекта были некорректно сформулированы характеристики целевой системы, для которой разрабатывается программное обеспечение: программное окружение (операционная система, установленные компоненты, сервисы и т.п.) или требования к аппаратной части (частота процессора, объём жёсткого диска, объём оперативной памяти и т.п.).
Риски использования нестабильных технологий – это риски, связанные с использованием новых технологий, которые ещё не прошли апробацию в производстве или других проектах.
Риски, связанные с неспособностью справиться со сложностью проекта – иногда проект может быть настолько сложным, что команда попросту может с ним не справиться.
Риск низкой продуктивности обусловлен длительностью реализации проекта. Это в самом начале проекта создаёт большую потерю времени, которую сложно будет наверстать. При этом приходится либо переносить сроки, либо работать в более динамичном режиме на более поздних этапах проекта.
Риск смены сотрудников, когда проект покидают ключевые сотрудники, которые максимально владеют информацией.
Риски хищения исходного кода возникают, когда разработчики, уходя из компании, забирают с собой разрабатываемый ими проект и немного модифицировав исходный код, могут продать его или использовать в других проектах, например, у конкурентов.
Риски нарушение закона об авторском праве могут возникнуть при использовании разработчиками без ведома проектного менеджера чужого исходного кода, алгоритма или библиотеки, которые защищены законом об авторском праве, но не приобретены или их использование не согласовано с автором.
Рассмотрим спекулятивные риски, присущие разработке ПО. Эти риски можно структурировать на риски финансовых ограничений, риски изменения конъюнктуры, риски изменения курсов валют.
Риски финансовых ограничений — могут возникнуть как по вине менеджера, который планировал бюджет проекта, так и по иным причинам.
Риски изменения конъюнктуры рынка обусловлены изменением экономической ситуации, которая складывалась на рынке при планировании. При этом могли закладываться факторы актуальные на момент планирования, а их изменение не было учтено.
Валютные риски – это риски, связанные с возможным возникновением убытков или дополнительных доходов вследствие неблагоприятного или благоприятного изменения курсов иностранных валют.
3. Перечислите общие методы оценки рисков.
Три главных метода оценки риска, к которым относятся:
Метод экспертных оценок.
- Приведите классификацию ошибок программного обеспечения
: Интеграционное тестирование, обеспечивающее совместную работу программных компонентов или функций.
Модульное тестирование , чтобы убедиться, что каждый программный модуль работает должным образом. Модуль является тестируемым компонентом приложения.
Функциональное тестирование, оценивающее действия путем имитации бизнес-условий на основе операционных требований. Проверка черного ящика — распространенный способ подтверждения задач.
Тестирование производительности Проверка того, как программное обеспечение работает при различных рабочих нагрузках. Нагрузочное тестирование, например, используется для оценки производительности в реальных условиях нагрузки.
Повторное тестирование, чтобы проверить, не повреждены ли или не ухудшены новые функции. Гигиенические проверки можно использовать для проверки меню, функций и команд на самом высоком уровне, когда нет времени для полного повторного тестировани
3. Перечислите основные пути борьбы с ошибками.
Учитывая рассмотренные особенности действий человека при переводе можно указать следующие пути борьбы с ошибками:
· сужение пространства перебора (упрощение создаваемых систем),
· обеспечение требуемого уровня подготовки разработчика (это функции менеджеров коллектива разработчиков),
· обеспечение однозначности интерпретации представления информации,
· контроль правильности перевода (включая и контроль однозначности интерпретации).
Практическая работа № 5
1. Для чего используется функция «Зеркала» в антивирусном программном обеспечении?
Средство «Зеркало» необходимо для автономного обновления модулей обнаружения вирусов. Если у клиентских компьютеров нет подключения к Интернету и при этом им нужны обновления модулей обнаружения вирусов, вы можете использовать средство «Зеркало» для загрузки файлов обновления с серверов обновления ESET и их локального хранения
2. Перечислите типы обновлений антивирусного программного обеспечения и их характеристики.
Программы-детекторы осуществляют поиск характерной для конкретного вируса сигнатуры в оперативной памяти и в файлах и при обнаружении выдают соответствующее сообщение. Недостатком таких антивирусных программ является то, что они могут находить только те вирусы, которые известны разработчикам таких программ.
Программы-доктора или фаги, а также программы-вакцины не только находят зараженные вирусами файлы, но и «лечат» их, то есть удаляют из файла тело программы-вируса, возвращая файлы в исходное состояние. В начале своей работы фаги ищут вирусы в оперативной памяти, уничтожая их, и только затем переходят к «лечению» файлов. Среди фагов выделяют полифаги, то есть программы-доктора, предназначенные для поиска и уничтожения большого количества вирусов.
Программы-ревизоры (инспектора) относятся к самым надежным средствам защиты от вирусов. Ревизоры (инспектора) проверяют данные на диске на предмет вирусов-невидимок, изучают, не забрался ли вирус в файлы, нет ли посторонних в загрузочном секторе жесткого диска, нет ли несанкционированных изменений реестра Windows. Причем инспектор может не пользоваться средствами операционной системы для обращения к дискам (а значит, активный вирус не сможет это обращение перехватить).
Программы — фильтры (мониторы)
Программы-фильтры (мониторы) или «сторожа» представляют собой небольшие резидентные программы, предназначенные для обнаружения подозрительных действий при работе компьютера, характерных для вирусов. Такими действиями могут являться:
1. попытки коррекции файлов с расширениями COM, EXE
2. изменение атрибутов файла
3. прямая запись на диск по абсолютному адресу
4. запись в загрузочные сектора диска
5. загрузка резидентной программы.
Вакцины или иммунизаторы
Вакцины или иммунизаторы — это резидентные программы, предотвращающие заражение файлов. Вакцины применяют, если отсутствуют программы-доктора, «лечащие» этот вирус. Вакцинация возможна только от известных вирусов. Вакцина модифицирует программу или диск таким образом, чтобы это не отражалось на их работе, а вирус будет воспринимать их зараженными и поэтому не внедрится. В настоящее время программы-вакцины имеют ограниченное применение.
Принцип работы антивирусных сканеров основан на проверке файлов, секторов и системной памяти, а также поиске в них известных и новых (неизвестных сканеру) вирусов. Для поиска известных вирусов используются так называемые «маски». Маской вируса является некоторая постоянная последовательность кода, специфичная для конкретного вируса. Если вирус не содержит постоянной маски или длина этой маски недостаточно велика, то используются другие методы.
3. Опишите принцип работы сервера зеркало.
Зеркальное отображение сервера — это процесс управления сетью, посредством которого точная копия сервера непрерывно создается во время выполнения.
Зеркальное отображение серверов — это метод, используемый для обеспечения непрерывности бизнеса, аварийного восстановления и резервного копирования. Дублирование всего содержимого сервера на другом удаленном или внутреннем сервере позволяет восстанавливать данные в случае сбоя основного сервера.
- Перечислите законы аналогичные статье 273 УК РФ, действующие за пределами РФ.
Статья 273. Создание, использование и распространение вредоносных компьютерных программ
Статья 274. Нарушение правил эксплуатации средств хранения, обработки или передачи компьютерной информации и информационно-телекоммуникационных сетей
Статья 274.1. Неправомерное воздействие на критическую информационную инфраструктуру Российской Федерации
Статья 274.2. Нарушение правил централизованного управления техническими средствами противодействия угрозам устойчивости, безопасности и целостности функционирования на территории Российской Федерации информационно-телекоммуникационной сети «Интернет» и сети связи общего пользования
Ресурсы, доступ к которым разрешен пользователям.
Следует ли записывать действия пользователя или группы в журнал событий.
Членство в группе.
Проверьте настройки безопасности ваших браузеров
Не посещайте небезопасные веб-сайты
Установите и используйте антивирусное программное обеспечение
Испольуйте блокировщик рекламы в вашем браузер
Каждый ключ имеет имя, состоящее из одного или нескольких печатных символов. Имена ключей не чувствительны к регистру. Имена ключей не могут содержать символ обратной косой черты (), но можно использовать любой другой печатный символ. Имена значений и данные могут включать символ обратной косой черты.
Данные из HKEY_CURRENT_USER хранятся в скрытом файле NTUSER.DAT в папке «Users/Имя_пользователя» на компьюте
- Как можно восстановить удаленный файл
Источник: topuch.com