Должен ли QA тестироваться с точки зрения строго черного ящика? - PullRequest
3 голосов
/ 02 октября 2008

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

РЕДАКТИРОВАТЬ:
Давайте предположим, что мы работаем с приложением, которое будет использоваться не разработчиками, мы не работаем над чем-то с подключенным API.

Ответы [ 7 ]

3 голосов
/ 02 октября 2008

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

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

2 голосов
/ 02 октября 2008

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

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

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

2 голосов
/ 02 октября 2008

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

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

1 голос
/ 02 октября 2008

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

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

1 голос
/ 02 октября 2008

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

0 голосов
/ 03 октября 2008

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

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

0 голосов
/ 03 октября 2008

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

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

QA - это не только проверка работоспособности приложения. Следует также проверить, понятен ли он вашему обычному пользователю и, следовательно, действительно применим.

UPDATE
Это становилось слишком длинным, чтобы поместиться в поле для комментариев.

Относительно вопросов @ testerab.

Я определяю ОК как лицо или группу лиц, ответственных за 1. соблюдение бизнес-требований; и 2. функции приложения в отношении этих требований не содержат ошибок. Отсюда и прозвище «Обеспечение качества». Третий пункт, который я считаю связанным с QA, - это просто удобство использования.

Они должны понимать бизнес-требования, что означает, что они должны работать рука об руку с любыми бизнес-аналитиками и конечными пользователями (если таковые имеются). Лучшие члены QA, с которыми я работал, были наняты из этих областей. Худшие члены QA, которых я видел, были разработчиками или обучались как таковые. Люди, которые перешли из службы технической поддержки, также, как правило, становятся хорошими участниками QA, поскольку они точно знают тип мусора, который будет пытаться получить конечный пользователь.

Существует много разных классов приложений. Несомненно, наиболее распространенным из которых является прославленный ввод данных. У вас есть несколько экранов, на которые вводится информация, и нажимаются кнопки. Затем информация сохраняется и / или направляется туда, куда она должна идти. Все от MS Word до CRM попадают в эту категорию.

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

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

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

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

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


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


Относительно SDET: Если у вашего продукта есть или есть API или основа, которую разработчики используют для создания других вещей, то вам может потребоваться, чтобы один или несколько человек посвятили себя внедрению программного обеспечения вокруг него для поддержки обычной группы обеспечения качества. Я стою на пороге необходимости этой роли и считаю, что это может быть проект по решению проекта.

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

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


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

Черты лучших были: 1. никогда не были программистами; 2. понял бизнес; 3. точно понимал, что конечные пользователи делали изо дня в день. 4. ЧЕСТНО ЗАБЛЮДЕНО о тех, кто подвергается воздействию программного обеспечения.

Черты худших из них включали: 1. были программистами или думали, что они были; 2. не понял бизнес; 3. никогда не встречал конечного пользователя; 4. слишком часто использовал слово «идиот»; 5. поймал в механике, как это работает, а не было ли оно вообще пригодным для использования.

...