Процесс выполнения программы целью которого является выявление ошибок

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

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

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

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

Как оценить качество ПО? [GeekBrains]

Процесс разработки программного обеспечения, в том виде, как он определяется в современной модели жизненного цикла программного обеспечения, предполагает три стадии тестирования:

• автономное тестирование компонентов программного обеспечения;

• комплексное тестирование разрабатываемого программного обеспечения;

• системное или оценочное тестирование на соответствие основным критериям качества.

Дата добавления: 2018-02-15 ; просмотров: 563 ; Мы поможем в написании вашей работы!

Источник: studopedia.net

16 Лекция № 16. Тестирование и отладка программных продуктов

Содержание лекции: виды контроля качества разрабатываемого ПО; ручной контроль; структурное, функциональное и оценочное тестирование; классификация ошибок; методы и средства отладки ПО.

Цель лекции: ознакомиться с видами и способами контроля и тестирования ПО, методами и средствами отладки программ.

Недостаточно выполнить проектирование и кодирование программного продукта, также необходимо обеспечить его соответствие требованиям и спецификациям. Многократно проводимые исследования показали, что чем раньше обнаруживаются те или иные несоответствия или ошибки, тем боль­ше вероятность их исправления и ниже его стои­мость [4]. Современные технологии разработки ПО преду­сматривают раннее обнаружение ошибок за счет выполнения контроля ре­зультатов всех этапов и стадий разработки. На начальных этапах кон­троль осуществляют вручную или с использованием CASE-средств, на последних — он принимает форму тестирования.

Тестирование — это процесс выполнения программы, целью которого является выявление ошибок. Никакое тестирование не может доказать отсут­ствие ошибок в сложном ПО, поскольку выполнение полного тестирования становится не­возможным и имеется вероятность, что остались невыявленные ошибки. Соблюдение основных правил тестирования и научно обоснованный подбор тестов может уменьшить их количество. Процесс разработки согласно современной модели жизненного цикла ПО предполагает три стадии тестирования: автономное тестирование компонентов ПО; комплексное тестирование разрабатываемого ПО; системное или оценочное тестирование на соответствие основным критериям качества. Для повышения качества тестирования рекомендуется соблюдать следу­ющие основные принципы:

Читайте также:
Защита ресурсов компьютера в локальной сети от действий вредоносных программ производится

Цель в жизни. Как понять? Узнай как достичь любой цели в современном мире! Аудиокнига целиком

  1. предполагаемые результаты должны быть известны до тестирования;
  2. следует избегать тестирования программы автором;
  3. необходимо досконально изучать результаты каждого теста;
  4. необходимо проверять действия программы на неверных данных;
  5. необходимо проверять программу на неожиданные побочные эффекты на неверных данных.
  1. синтаксические ошибки – сопровождаются комментарием с указанием их мес­тоположения, фиксируются компилятором (транслятором) при выполнении синтаксического и частично се­мантического анализа;
  2. ошибки компоновки — обнаруживаются компоновщиком (редакто­ром связей) при объединении модулей программы;
  3. ошибки выполнения — обнаруживаются аппаратными средствами, операционной системой или пользователем при выполнении программы, проявляются разными способами и в свою очередь делятся на группы:
  1. ошибки определения исходных данных (ошибки передачи, ошибки преобразования, ошибки перезаписи и ошиб­ки данных);
  2. логические ошибки проектирования (неприменимый метод, неверный алгоритм, неверная структура данных, другие) и кодирования (ошибки некорректного использования переменных, вычислений, межмодульного интерфейса, реализации алгоритма, другие);
  3. ошибки накопления погрешностей результатов вычислений (игнорирование ограничений разрядной сетки и способов уменьшения погрешности).
    1. ручного тестирования (при обнаружении ошибки нужно выполнить те­стируемую программу вручную, используя тестовый набор, при работе с ко­торым была обнаружена ошибка);
    2. индукции (основан на тща­тельном анализе симптомов ошибки, которые могут проявляться как неверные результаты вычислений или как сообщение об ошибке);
    3. дедукции (вначале формируют множество причин, которые могли бы вызвать данное проявление ошибки, а затем анали­зируя причины, исключают те, которые противоречат имеющимся данным);
    4. обратного прослеживания (для точки вы­вода неверного результата строится гипотеза о значени­ях основных переменных, которые могли бы привести к получению данного результата, а затем, исходя из этой гипотезы, делают предположения о значениях переменных в предыдущей точке).
    1. программу наращивать «сверху-вниз», от интерфейса к обрабатываю­щим подпрограммам, тестируя ее по ходу добавления подпрограмм;
    2. выводить пользователю вводимые им данные для контроля и прове­рять их на допустимость сразу после ввода;
    3. предусматривать вывод основных данных во всех узловых точках ал­горитма (ветвлениях, вызовах подпрограмм).

    Источник: studfile.net

    Процесс выполнения программы целью которого является выявление ошибок

    Существует три уровня тестирования:

    1. Модульное (или компонентное) тестирование, когда проверяется только какая-то часть ПО: отдельная функция, класс, модуль программы. Стандартно оно проводится через вызов кода. Зачастую тестирование на этом уровне осуществляется самим разработчиком. Модульное тестирование от компонентного отличается тем, что в компонентном используют реальные объекты и драйверы, а в модульном – конкретные значения.
    2. Интеграционное тестирование – процесс исследования ПО, когда проверяются интерфейсы между компонентами или подсистемами. К интеграционному тестированию можно отнести также проверку взаимодействия двух систем в заданных точках. Например, передачу данных из одной системы в другую.
    3. Системное тестирование – проверка соответствия системы требованиям заказчика. Исследуются функциональные и нефункциональные требования к системе в целом, выявляются дефекты и непредусмотренные сценарии. Например, что будет, если в поле, в которое вводится два знака, попробовать ввести три, букву вместо цифры и т.д.
    Читайте также:
    Какие первоначальные настройки программы необходимо выполнить до начала ведения учета в 1с

    Системное тестирование проводят по базе требований, под каждое из которых создается тестовый случай (тест-кейс) . Тестирование может идти и по базе случаев использования, когда по каждому из них определяются сценарии, для которых создаются кейсы.

    Классификация видов тестирования

    👨‍🔧️ Основы профессии тестировщика с нуля за 10 минут

    Как видите, классов не так много, но в каждом из них можно выделить несколько разных видов тестирования.

    Перечислим основные:

    • Функциональное тестирование – проверка, что ПО правильно решает пользовательские задачи.
    • Тестирование производительности позволяет оценить быстродействие ПО при заданной нагрузке. Тестирование производительности проводится до и после оптимизации. Его целью является проверка и выявление факторов, которые влияют на производительность ПО.
    • Нагрузочное тестирование предполагает оценку ПО при плановой, повышенной и пиковой нагрузке. Ресурсы системы конечны и такое тестирование позволяет избежать связанных с нагрузкой инцидентов после ее внедрения.
    • Стресс-тест – проверка работы ПО в критических условиях: миграция данных из другой системы в больших объемах, загрузка большого количества данных, нехватка памяти или дискового пространства. Также проверяется, как будет работать ПО, когда им одновременно начнет пользоваться большое количество пользователей.
    • Тестирование стабильности – проверка реакции ПО на взлом, попытки хищения данных и т.д.
    • Тестирование совместимости – проверка реакции ПО на окружение, заданные условия использования другими системами и проч.
    • Тестирование black box или тестирование черного ящика проводится только через интерфейсы пользователя.
    • Тестирование white box или тестирование белого ящика – тестирование с доступом к исходному коду программы. Этот способ позволяет оценить реакции внутри ПО на те или иные события, более тонко и точечно выявить ошибки или неоднозначные реализации логических цепочек.
    • Альфа-тестирование – имитация реальной работы с ПО, чтобы оценить его в максимально приближенных к реальным условиях.
    • Бета-тестирование проводится группой по основным параметрам с целью проверки наличия в ПО минимального количества ошибок.
    • Регресс-тест – проверка ранее найденных ошибок. После разработки и доработки проверяется, что ни одна из них не появилась вновь.
    • Дымовой тест – проверка «А запускается ли ПО?». Smoke testing проводят, когда отдельные компоненты нужно собрать в один продукт. Бывает, что по отдельности каждая компонента работает стабильно и корректно, а вместе – нет.
    • Ручное тестирование – тестирование, при котором не используются доп. инструменты, для проверки проводится только имитация действий пользователя.
    • Автоматизированное тестирование – тестирование с использованием специальных программных средств. Автоматизированное тестирование экономит время и ресурсы, а также увеличивает надежность ПО.
    • Динамический анализ кода – анализ исходного текста программы в процессе ее выполнения. В этом случае проблемы в коде обнаруживаются по мере их появления.
    • Статический анализ кода проводится без реального выполнения исследуемых программ. Он позволяет обнаружить дефекты еще до того, как код будет готов к запуску. Статический анализ также называю аудитом кода.
    Читайте также:
    Как в программе vsdc free video editor сохранить видео

    Как видите, в рамках тестирования могут идти самые разные процессы на различных уровнях. Управляют ими специалисты, которых называют тестировщиками.

    Тестировщик ПО – специалист, который занимается проверкой программного обеспечения, выявляет ошибки и помогает улучшать продукт. Тестировщиков также называют инженерами по QA (от англ. Quality Assurance – обеспечение качества).

    Инженер по QA не только проводит тестирование, но и дает рекомендации по исправлению багов в некоторых случаях.

    Обязанности тестировщика

    1. контроль качества разрабатываемых продуктов;
    2. выявление и анализ ошибок, возникающих при работе с ПО;
    3. разработка тестов, тест-кейсов;
    4. тестирование;
    5. анализ результатов тестирования;
    6. классификация ошибок;
    7. сопровождение процесса ликвидации найденной ошибки;
    8. документирование всего процесса.

    О работе тестировщика существует немало мифов , причем разных полюсов: от того, что туда вход открыт всем, до того, что без знания языков программирования в тестировщики не попасть.

    Это крайности, освоить профессию с нуля можно, причем способ стоит выбрать такой, который понравится – самостоятельно, в компании или сразу в работе.

    👨‍🔧️ Основы профессии тестировщика с нуля за 10 минут

    Стек технологий тестировщика:

    У каждого инженера по QA есть свой уникальный опыт и собственный стек технологий – набор инструментов, которые он использует в работе, включая языки программирования, СУБД и прочее.

    Перечислим наиболее распространенные варианты:

    Языки разметки и программирования:

    • HTML/CSS
    • Python
    • SQL
    • Java/JavaScript

    Фреймворки:

    • Selenium
    • Allure

    Системы автоматизации:

    ПО для управления проектами:

    Библиотеки модульного тестирования:

    • Nose
    • SimpleTest
    • Jest
    • Jasmine
    • Chai
    • JUnit
    • Nunit
    • Boost Test
    • Watir

    Серверы, для запуска легковесных оболочек:

    • Selenoid
    • Docker

    Это примерный список: важно понимать, что в каждом проекте будет уникальная комбинация стека технологий, отвечающая индивидуальным требованиям. К акой-нибудь веб-проект может работать, например, с таким стеком: Java + Html elements + Selenoid + Allure + Jenkins + Readmine.

    Список того, чем может владеть и что может изучать тестировщик огромен, начиная c английского и языков программирования, именно поэтому профессия становится такой гибкой и востребованной. Только постоянно развиваясь, инженер по QA может стать дорогим и уникальным специалистом. Начните с малого, постоянно практикуйтесь и развивайте уникальные компетенции. Удачи вам в освоении этой интересной профессии!

    Источник: proglib.io

    Рейтинг
    ( Пока оценок нет )
    Загрузка ...
    EFT-Soft.ru