Перейти к содержимому

Фотография

Аспекты отличия Use Case от Test Case


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 29

#21 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 29 мая 2008 - 18:53


Требования включают один! юзкейс. Один. Всего один. А вот остальная часть требований - это несколько сотен, может быть несколько тысяч страниц.
Действительно не треть.


И как же назвать эти остальные требования на несколько тысяч страниц?? Разве они не будут юзкейсами?

Не будут.

Я хотел привести пример из своей практики, но подумал и приведу пример понятный всем. Итак:

Нам нужно разработать компилятор С++ работающий из командной строки.
Юзкейс один. Могу написать, ели кому то очень надо...
А вот спецификаций требований будет на много, много страниц... Очень много.

Еще примеры нужны?
  • 0

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#22 pavel_kravts

pavel_kravts

    Новый участник

  • Members
  • Pip
  • 16 сообщений
  • ФИО:Кравцов Павел
  • Город:Москва

Отправлено 30 мая 2008 - 07:10

Не будут.

Я хотел привести пример из своей практики, но подумал и приведу пример понятный всем. Итак:

Нам нужно разработать компилятор С++ работающий из командной строки.
Юзкейс один. Могу написать, ели кому то очень надо...
А вот спецификаций требований будет на много, много страниц... Очень много.

Еще примеры нужны?


Да мне бы хотелось увидеть этот тест кейс.

С этим примером согласен. Спасибо за точный ответ
  • 0

#23 Boltick

Boltick

    Специалист

  • Members
  • PipPipPipPipPip
  • 596 сообщений
  • ФИО:Алексей
  • Город:планета Земля

Отправлено 30 мая 2008 - 09:11

Да мне бы хотелось увидеть этот тест кейс.

С этим примером согласен. Спасибо за точный ответ


Разберитесь с понятиям... ЮзКейс и Тест Кейс...
Вам сечас нужен Юз Кейс или Тест кейс.

допустим ваш проект - поисковая система, типа гугл:
юз кейс 1.
Юзер вводит параметр -> нажимает кнопку Поиск -> Система выдает результат

Но есть еще пара сотен требований на вводимые данные, показ результата и т.д.

А вот уже Тест Кесы будут конкретными, вот некоторые примеры
Юзер вводит одно слово на English "test" -> нажимает кнопку Поиск -> Система выдает результат соответствующий критерию поиска
Юзер вводит несколько слов на English "test case"-> нажимает кнопку Поиск -> Система выдает результат соответствующий критерию поиска
Юзер вводит одно слово на Russian "тест"-> нажимает кнопку Поиск -> Система выдает результат соответствующий критерию поиска
Юзер вводит несколько слов на Russian и English "тест case"-> нажимает кнопку Поиск -> Система выдает результат в котором присутствует хотя бы одно из указанных слов, а также предлагает откорректировать параметр поиска, предоставляя свой вариант: "тест кейс"
и т.д.

Примеры конечно не вылизаны и можно было и лучше изобразить, но общая картина думаю ясна.
  • 0
Алексей Булат
Про Тестинг

#24 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 30 мая 2008 - 10:40

Нам нужно разработать компилятор С++ работающий из командной строки.
Юзкейс один. Могу написать, ели кому то очень надо...



Коллеги!

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

Юзкейс действительно может описывать действия пользователей. Но он так же описывает правила взаимодействия с внешними системами и с программными интерфейсами.

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

#25 SALar

SALar

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 2 298 сообщений
  • Город:Москва


Отправлено 05 июня 2008 - 05:13

Собираюсь дать тренинг на тему создания юзкейсов (http://traininglabs.ru/node/63). Продолжим дискурсию там?
  • 0

-- 

Сергей Мартыненко

Блог 255 ступеней (байки для оруженосца)

facebook (Дети диаграммы Ганта)

ВебПосиделки клуба имени Френсиса Бэкона 

 


#26 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 08 июня 2008 - 20:43

Коллеги!

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

Юзкейс действительно может описывать действия пользователей. Но он так же описывает правила взаимодействия с внешними системами и с программными интерфейсами.

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

Все-таки, юз-кейз - это описание функционала и сервисов предоставляемых ПО. Иначе говоря, внешние проявления. Что касается каких-либо межмодульных связей - детали реализации. Обращусь за подтверждением своих слов к тов. Фаулеру и его книге UML Distilled: "Use cases are a technique for capturing the functional requirements of a system. Use cases work by describing the typical interactions between the users of a system and the system itself, providing a narrative of how a system is used."
Теперь связь между юз-кейзами и тест-кейзами. Расмотрим на примере интструментов(тулов).

1. Первый - молоток. Юз-кейз молотка - забивать гвозди. Отдел технического контроля на производстве обязан проверить возможность забивания гвоздей изготовленным молотком. Все? Нет не все. Есть еще и другие нефункциональные требования предъявляемые к молотку. Молот, как известно, состоит из 3-х частей - держала, ударяла и скрепляла. Надо проверить, что скрепляло прочно удерживает ударяло на держале. Держало должно быть соотв. длины, Согласитесь, что если держало длиной 7 см - то гвоздь-то можно забить, но будет неудобно. Ударяло должно быть прочное и гвозди не должны оставлять вмятины и тд. Таким образом получаем большое кол-во тест-кейзов, и не все из них следуют только из нашего единственного юз-кейза.
Если же молоток имеет еще и гвоздодер (второй юз-кейз - выдергивать гвозди) - то кол-во тестовых случаев увеличится, а часть изменится: например проверка балансировки ударяла.

2. Второй тул, ну например, инструмент проверки орфографии в файлах. Допустим, команде тестирования необходим такой иструмент и возникает задача его написать. Два юз-кейза: первый - должен находить очепятки в коментах и строковых литералах в java-файлах и второй - должен запускать на юниксе. Далее один из сотрудников создает такой инструмент на языке java и проверяет его. соотв. тест-кейзами. Но есть тест-кейзы которые возможны (исходя из реализации), но которые не будут проведенены. Раз программа на java, то теоретически она может работать не только на юниксе, но и на виндах - но ее не будут там проверять - нет такого юз-кейза. Ничто не мешает программе проверять орфографию в C# файлах (синтаксически, коменты и строки такие же как и в джаве) - но никто не будет это проверять, т.к. нет такой надобности.
  • 0
Regards,
Alexey

#27 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 09 июня 2008 - 07:09

Коллеги!
Юзкейс действительно может описывать действия пользователей. Но он так же описывает правила взаимодействия с внешними системами и с программными интерфейсами.

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


2 LeshaL,

не вижу противоречия.

Любая программа любо предоставляет, либо использует внешние сервисы.

Сервисы предоставляются двумя способами:
- посредством пользовательского интерфейса;
- посредством программного интерфейса.

Востребуются сторонние сервисы только посредством использования программного интерфейса сторонней программы или компоненты.

Обратимся к примерам.

1. Если наша программа использует базу данных, то любое обращение к дб происходит через программный интерфейс, например, ODBC.
Нужно ли оформлять взаимодействие с дб в виде отделного юз кейса?
Нет, не нужно.
Почему?
Потому что используется стандартный программный интерфейс, на который существуют горы документации. "Общение" происходит по строго определенным правилам.

2. Если наша программа использует внешнюю компоненту по проверке орфографии в вводимом тексте, нужно ли писать юз кейс?
Нет, не нужно. Так как порядок взаимодействия вполне очевиден.
НО!
Можно и написать, так как этот порядок может быть очевиден далеко не для всех.
Что тогда будет в юз кейсе?
Это вы решайте сами. На мой взгляд, как минимум, должно быть указание, что для подключения внешней компоненты в настройках должен быть прописан путь к самой компоненте, и параметры запуска - должны соответствовать выбранному режиму. Или что-то в этом духе.
  • 0
Гринкевич Сергей

#28 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 10 июня 2008 - 10:41

2 LeshaL,
не вижу противоречия.

Любая программа любо предоставляет, либо использует внешние сервисы.

Сервисы предоставляются двумя способами:
- посредством пользовательского интерфейса;
- посредством программного интерфейса.

Востребуются сторонние сервисы только посредством использования программного интерфейса сторонней программы или компоненты.

Сергей,

может и нет противоречий, может быть я просто не до конца понимаю вашу точку зрения. Попытаюсь перефразировать свою еще раз.
1. Юз-кейз имеет отношение к функциональным требованиям. Только к функциональным и никаким другим.
2. Юз-кейз != только описание действий пользователя. Например, наша программа это туннель для трассировки сообщений между клиентом и сервером. Поддержка протокола общения между клиентом и сервером, очевидно, будет функциональным требованием и одним из юз-кейзов. Допустим К и С могут общаться по HTTP и TCP/IP. Наш туннель должен понимать оба протокола общения. Дальше из этого следуют другие функциональные требования, например - пользователь должен мочь выбрать требуемый протокол и параметры общения между К и С для настройки туннеля.
3. Не все функциональные требования являются юз-кейзами. Не юз-кейзы те функциональные требования, которые возникают из-за деталей реализации.
Например: программа хранит данные в XML формате. Решено иметь DTD\XSD для этих XML файлов, чтобы валидировать целостность и правильность данных. В этом случае требование - не юз-кейз, т.к. с точки зрения использования программы все-равно есть DTD\XSD или нет. С точки зрения разработчика\тестера - это функциональное требование, которое надо соблюдать и проверять.
4. Если реализация требует от пользователя каких-то дополнительных действий, то это не юз-кейз. Это просто необходимые требования для того, чтобы программа (за)работала. Вернемся к проверке орфографии. Если используется какая-то внешняя программа (e.g. aspell), то пользователь обязан настроить каким-то образом систему так, чтобы тул находил эту внешнюю утилиту (например прописать правильно PATH). Это НЕ юз-кейз. Но! Если у нас задумана возможность использовать разные утилиты (aspell или ispell), то пользователь может настроить тул тем или иным образом, например в командной строке передавать имя используемой утилиты. Это юз-кейз. Разница в том, что первое - зависимость от реализации, второе - задумка при дизайне системы, дающая пользователю разные варианты использования программы.
5. Юз-кейз != User scenario. Пользовательский сценарий включает в себя 1+ юз-кейзов. Например, изменение документа в текстовом редакторе = загрузить существующий документ(юз-кейз#1)->отредактировать(юз-кейз#2)->сохранить(юз-кейз#3).

Далее связь тест-кейзов и юз-кейзов.
1. Один юз-кейз - 1+ тест-кейзов. Т.е. один ко многим.
2. Юз-кейз может порождать как обычные, так и негативные тесты. Зависит от фантазии, времени, важности и технической возможности.
3. Тест-кейз проверяет не сам юз-кейз, а его реализацию. Соотвественно детали имплементации накладывают дополнительные требования\ограничения на тест-кейзы и их кол-во.
4. Тест-кейзы появляются не только из юз-кейзов, но и из других требований, как функциональных, так и нет.
5. Тест-кейзы взаимозависимы. Выполнение тест-кейза для юз-кейза#1, может быть предварительным условием для выполнения тест-кейза для юз-кейза#2. Например, если программа инсталируется криво, и не прописывает необходимые строки в реестр виндов - то ее запустить будет невозможно. Нет возможности проверить кучу тест-кейзов. Но, в тоже время, можно проверить орфографии или документацию, т.к. файлы распаковались и доступны.
6. Проверка пользовательского сценария - это тест-кейз (например, удобно при приемочных испытаниях), но этот тест-кейз следует не из юз-кейза, а из сценария. Поэтому нет связи многие-ко-многим, как тут писали. Т.о. тест-кейз проверки сценария описанного выше в (5) такой: каким-то образом загрузить существующий документ (=один из тест-кейзов для проверки того, что редактор открывает файлы) -> как-нибудь отредактировать текст (один из 1000 тест-кейзов редактора) -> как-нибудь сохранить документ (один из тест-кейзов для Save/Save as). В данном случае, при проверке сценария, совершенно не важно каким образом загружается файл (File->Open, Edit->Recent, параметр в командной строке) итд.
  • 0
Regards,
Alexey

#29 Green

Green

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 233 сообщений
  • ФИО:Гринкевич Сергей
  • Город:Москва

Отправлено 10 июня 2008 - 12:52

2 LeshaL,

Честно говоря, я не все понял.

И, собственно, я не собираюсь Вас переубеждать или что-то доказывать. Просто высказываю свое видение. Прошу обратить внимание на то, что оно может быть ошибочным. :blush:

А позиция моя очень проста (как Вам может быть известно, я поборник простоты :clapping: ).

Есть требование - оно описывается существительным. Пользуясь Вашим примером - валидация XML документа на входе.

Есть юз-кейс - он описывается глаголом (или набором действий). В примере - провалидировать XML на входе.

В общем случае можно сформулировать так. Каждому техническому требованию программы можно поставить в соответствие юз-кейс. Юз-кейс может состоять:
- из одного действия и быть очевидным - в этом случае его можно не писать;
- из набора СТАНДАРТНЫХ действий регламентированных общепризнанным документом - в этом случае юз-кейс можно не писать, так как достаточно сослаться на этот стандарт;
- из набора НЕ стандартных действий - их нежно описать, что бы все участники процесса создания программы понимали эти действия ОДИНАКОВО. Именно одинаковая трактовка и понимание работы конкретной функции - цель оформления юз-кейсов.
  • 0
Гринкевич Сергей

#30 LeshaL

LeshaL

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 094 сообщений
  • ФИО:Алексей Лянгузов
  • Город:Saint-Petersburg


Отправлено 11 июня 2008 - 07:06

Честно говоря, я не все понял.

И, собственно, я не собираюсь Вас переубеждать или что-то доказывать. Просто высказываю свое видение. Прошу обратить внимание на то, что оно может быть ошибочным. :clapping:

...

Я ведь, кстати, тоже могу ошибаться ....
Вот почитал еще чуть-чуть Фаулеура, там написано "A use case is a set of scenarios tied together by a common user goal." Хотя, я так и не считаю. Ну да пусть. Возможно речь о разных вариантах декомпозиции системы или глубине детализации.

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

Вот еще целая небольшая глава из Фаулера
"When to Use Use Cases
Use cases are a valuable tool to help understand the functional requirements of a system. A first pass at use cases should be made early on. More detailed versions of use cases should be worked just prior to developing that use case.

It is important to remember that use cases represent an external view of the system. As such, don't expect any correlations between use cases and the classes inside the system.

The more I see of use cases, the less valuable the use case diagram seems to be. With use cases, concentrate your energy on their text rather than on the diagram. Despite the fact that the UML has nothing to say about the use case text, it is the text that contains all the value in the technique.

A big danger of use cases is that people make them too complicated and get stuck. Usually, you'll get less hurt by doing too little than by doing too much. A couple of pages per use case is just fine for most cases. If you have too little, at least you'll have a short, readable document that's a starting point for questions. If you have too much, hardly anyone will read and understand it"

Есть юз-кейс - он описывается глаголом (или набором действий)

С этим 100% согласен. Предлагаю на этом остановиться...
  • 0
Regards,
Alexey


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных