Tehnografi.com - Технологические новости, обзоры и советы

Эффективная автоматизация контроля качества и ручное тестирование

Следующая статья поможет вам: Эффективная автоматизация контроля качества и ручное тестирование

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

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

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

Важность QA в разработке программного обеспечения

Обеспечение качества (QA) — это способ предотвращения ошибок и дефектов в производимых продуктах и ​​предотвращения проблем при доставке продуктов или услуг клиентам. ISO 9000 определяет его как «часть управления качеством, направленную на обеспечение уверенности в том, что требования к качеству будут выполнены».

Термины обеспечение качества и контроль качества часто используются взаимозаменяемо для обозначения способов обеспечения качества услуги или продукта. Например, термин «гарантия» часто используется для описания реализации инспекции и структурированного тестирования в качестве меры обеспечения качества в программном обеспечении продукта или информационной системы. Однако термин «контроль» используется для описания пятой фазы модели «Определить, измерить, проанализировать, улучшить, контролировать» (DMAIC). DMAIC — это стратегия качества, основанная на данных, используемая для улучшения процессов.

Различают селективный, сплошной и статистический типы ОК. Вся продукция проходит полный контроль. На производстве ведется учет всех дефектов в процессе изготовления изделия.

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

Входящий контроль проверяет качество поступающего в производство сырья и вспомогательных материалов. Постоянный анализ поставляемого сырья и других материалов позволяет пользователю влиять на производство предприятий-поставщиков, стремясь повысить качество.

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

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

Как уже упоминалось, “гарантия качествавключает два принципа: «Соответствие назначению» (товар должен соответствовать назначению); и “с первого раза” (ошибки должны быть исправлены). QA включает в себя управление качеством сырья, сборок, продуктов и компонентов, услуги и управление, связанные с производством, производственные процессы и инспекции. При разработке нового технического продукта также очевидны два принципа: задача инженерии — , а задача обеспечения качества — .

Мы можем определить процесс обеспечения качества разными способами, например, как:

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

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

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

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

Тестирование программного обеспечения может оцениваться по следующим критериям:

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

Ручное тестирование

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

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

Существует два основных типа ручного тестирования: тестирование «черного ящика» и тестирование «белого ящика».

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

Согласно ISTQB, тестирование «черного ящика» это:

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

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

Тестировщик не имеет представления о структуре и внутреннем устройстве системы и концентрируется на том, что делает программа, а не на том, как она это делает.

используется, когда тестер знает все детали реализации тестируемой программы. Тестирование белого ящика (также: прозрачный, открытый, стеклянный ящик; тестирование на основе кода или структурированное тестирование) — это метод тестирования программного обеспечения, который предполагает, что внутренняя структура/дизайн/реализация системы известна тестировщику. Входные значения выбираются на основе знания кода, который будет их обрабатывать. Точно так же тестер знает, каким должен быть результат этой обработки. Знание всех особенностей тестируемой программы и ее реализации является обязательным для данной методики. Тестирование методом «белого ящика» позволяет глубже проникнуть во внутреннюю структуру системы, а не только во внешние интерфейсы.

Согласно ISTQB, тестирование белого ящика — это:

  • тестирование, основанное на анализе внутренней структуры компонента или системы.
  • Тест-дизайн на основе методики белого ящика — процедура написания или выбора тест-кейсов, основанная на анализе внутренней структуры системы или компонента.

Тестируемая программа для тестировщика представляет собой прозрачную «белую» коробку, содержимое которой он прекрасно видит.

Основные преимущества ручного тестирования:

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

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

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

Первое упоминание об автоматизированном тестировании было в книге Фредерика Брукса “Мифический человеко-месяц“, в котором говорится о перспективах использования модульного тестирования, но только в 1980-х годах автоматизация тестирования по-настоящему взлетела.

Существует два основных подхода к автоматизации тестирования: тестирование на уровне кода и тестирование пользовательского интерфейса (в частности, тестирование графического интерфейса). Первый тип — модульное тестирование, а второй — имитация действий пользователя, функциональное тестирование (с использованием специальных тестовых фреймворков).

Эффективность автоматизированного тестирования и ручного тестирования

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

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

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

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

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

Наиболее распространенной формой автоматизации является тестирование приложений через графический интерфейс пользователя (GUI). Популярность этого вида тестирования обусловлена ​​двумя факторами: во-первых, приложение тестируется так же, как его будет использовать человек, а во-вторых, его можно протестировать, не имея доступа к исходному коду.

Автоматизация тестирования GUI развивалась на протяжении многих поколений инструментов и методов:

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

Перечислим способы сделать ручное тестирование ПО более эффективным:

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

Для повышения эффективности как ручного, так и автоматизированного тестирования стоит обратиться к системным инструментам и стандартам, например, к основным:

  • Системы менеджмента качества (СМК)
  • аудит и написание процессуальной документации CMMI
  • Методика “шести сигм
  • Анализ измерительных систем (MSA)
  • Развертывание функции качества (QFD)
  • Анализ видов и последствий отказов (FMEA)
  • Расширенное планирование качества продукции (APQP)

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

Также очень важно определить момент, когда определенный этап проекта позволяет начать тестирование. Например, в V-модели тестирование можно проводить на всех этапах разработки, и это позволяет правильно выстроить процесс и сделать тестирование очень эффективным. Также в agile-модели каждая итерация заканчивается тестированием и доставкой рабочей версии ПО, как это прекрасно зарекомендовало себя в методологии Scrum.

Заключение

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

Наши специалисты из Semrush Systems очень четко понимают и правильно выполняют проекты, в том числе в части процесса QA. Наши менеджеры проектов и квалифицированные инженеры-испытатели создают высокоэффективные планы тестирования и балансируют между ручным и автоматизированным тестированием. Мы выполняем проекты по тестированию различных технологий разработки программного обеспечения, в том числе веб-приложений, десктопных и мобильных приложений. Наша компания формирует команды разработчиков и эффективно рассчитывает количество и объемы тестирования, необходимые для каждого конкретного проекта. Вы можете обратиться в Semrush Systems за услугами как ручного тестирования, так и автоматизированного тестирования, а также разработки современных программных комплексов.