2009-04-14 2 views
3

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

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

ответ

2

Если вы имеете в виду пользователя системы, например. windows login - тогда для модульного тестирования лучше всего отделить ваш код от этой зависимости.

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

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

+0

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

1

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

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

+0

Для моего приложения то, что вы можете видеть и получать, частично зависит от ваших прав пользователя. Я устал держать вопрос сам по себе довольно общим. – rjzii

0

Если то, что определяет поведение, является единственным зарегистрированным в пользовательском типе, тогда его просто написать тест для каждого типа пользователя [вы закончите с n тестами; n - количество пользовательских типов].

Если это комбинация между некоторым внутренним системным состоянием и типом пользователя, вы пишете тест для каждого состояния для каждого типа пользователя [вы заканчиваете тест n * m; n - количество пользовательских типов, m - количество внутренних состояний системы].

1

Я предполагаю, что есть провайдер, который говорит, что «этот пользователь может сделать это действие» или «для этого пользователя выполнить это действие».

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

Если это не так, я бы создал такого провайдера.

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

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