Close

Глубокое тестирование

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

Фотография Дипака Пармара
Дипак Пармар

Приглашенный автор


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

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

История глубокого тестирования


Глубокое тестирование существует уже на протяжении некоторого времени, но его часто называли «специальным тестированием». Термин «глубокое тестирование» был официально введен экспертом по тестированию ПО Сэмом Канером в его классической книге «Тестирование программного обеспечения».

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

Для чего нужно глубокое тестирование?

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

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


Teams today need to adopt continuous integration and deliver on the market demand of quality digital experiences to meet rising customer expectations. While speed to market is important,  there are instances of million-dollar bugs or simple user experience disasters that are very costly. From Boeing to Instagram, there are plenty of examples where the rush to deliver on deadline and poor-quality testing led to reputational and financial damage. 

Most software quality testing uses a structured approach. Test cases are defined based on already defined user stories and the test data is structured based on the test cases defined. Test coverage is measured using software engineering metrics and, in most cases, the coverage is adequate technically. 

См. решение

Разработка и эксплуатация программного обеспечения с помощью Open DevOps

Связанные материалы

Автоматическое тестирование для DevOps

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

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

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

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

Благодаря интеграции с такими инструментами, как Jira и продукты для управления тестированием, команды могут напрямую экспортировать записанную документацию в сценарии тестирования.

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

Когда следует использовать глубокое тестирование?

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

Во многих программных циклах требуется ранняя итерация, когда у команд мало времени для структурирования тестов. Глубокое тестирование весьма полезно в этом сценарии.

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

Особенно полезно найти новые сценарии тестирования для увеличения покрытия тестами.


Exploratory testing is suited for specific testing scenarios, such as when someone needs to learn about a product or application quickly and provide rapid feedback. It helps review the quality of a product from a user perspective.  

In many software cycles, an early iteration is required when teams don’t have much time to structure the tests. Exploratory testing is quite helpful in this scenario.  

When testing mission-critical applications, exploratory testing ensures you don’t miss edge cases that lead to critical quality failures. Plus, use exploratory testing to aid unit test process, document the steps and use that information to test extensively during later sprints. 

It is especially useful to find new test scenarios to enhance the test coverage. 

Когда сказать «нет» глубокому тестированию?

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

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


Organizations must be able to strike the right balance between exploratory testing and scripted testing. Exploratory testing alone can’t offer adequate coverage and teams shouldn’t attempt it unless they have reached a few initial milestones. 

Especially with any type of testing that is regulated or compliance-based, scripted testing is the way to go. In compliance based testing, where certain checklists and mandates need to be followed for legal reasons, it is advised to stick to scripted testing. One example of this is accessibility testing where several laws govern the testing protocol and there are defined standards that need to be passed. 

Важность глубокого тестирования для CI/CD

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

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

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

Загрузите приложение для управления тестированием из коллекции управления тестированием в Atlassian Marketplace.


Exploratory testing opens testing to all key stakeholders and not just trained testers.  Using an exploratory testing tool, one can capture screenshots, record voice memos and annotate feedback during sessions. This enables faster and more efficient review, by people beyond the traditional software tester.   

Exploratory testing complements QA teams’ existing test strategy. It comprises a series of undocumented testing sessions to discover yet unearthed issues/bugs. When combined with automated testing and other testing practices, it increases test coverage, discovers edge cases, potentially adds new features and overall improves the software product. With no structural rigidity, it encourages experimentation, creativity and discovery within the teams. 

The almost instantaneous nature of feedback helps close the gaps between testers and developers. Above all, the results of exploratory testing provide a user-oriented perspective and feedback to the development teams.  The goal is to complement traditional testing to find million-dollar defects that are generally hidden behind the defined workflow.  

Get a test management app from the Test Management collection on the Atlassian Marketplace.  

Deepak Parmar
Deepak Parmar

I’ve lived and breathed QA for the last decade now through my experience of working with leading QA services and product companies. I’m currently the head of Marketing and Partnerships at QMetry, bringing with me 20 years of experience in the IT industry, which has instilled in me the strong belief in improving customer delight through software quality.


Поделитесь этой статьей

Рекомендуемые статьи

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

Рисунок: DevOps

Сообщество DevOps

Рисунок: DevOps

Узнать больше в блоге

Рисунок: карта

Начните работу бесплатно

Подпишитесь на информационную рассылку по DevOps

Thank you for signing up

продолжение темы
Introduction to code coverage