Полнота набора критериев означает что

Тестирование требований на примерах На собеседованиях часто встречается вопрос: «Какие требования предъявляются к требованиям? » Или можно перефразировать так: «Какими характеристиками должно обладать хорошее требование? » Можно придираться к этим вопросам к их корректностино сути это особо не меняет. Есть характеристики, некоторые из которых довольно не очевидны и тяжело представить их реализацию на практике. Об этом и хочу поговорить. Требования к требованиям В разных источниках можно найти разные критерии. Вот основные: Корректность Недвусмысленность Полнота набора требований Непротиворечивость набора требований Проверяемость тестопригодность Трассируемость Понимаемость Интерпретация и примеры Note: Все примеры я буду приводить на требованиях буду придумывать к цифровому телефонному аппарату Корректность Насколько корректно наше требование? Пример: после набора номера пользователь должен слышать короткие гудки символизирующие о том, что идет дозвон Описание: просто перепутали слово. Гудки должны быть длинными. Это никак не противоречит требованию которое тоже явно есть о том, что при ситуации «занято» тоже должны быть короткие гудки. Также это не противоречит трассируемости на верхние требования, где может говориться, что для различных ситуаций должны быть различные гудки. Остальные критерии тоже не нарушены. Как тестировать на корректность и находить такие ошибки: нужны хорошие доменные знания в области в данном случае это знания в области телефонии и связи нужно смотреть на трассировку вверх и вниз на бизнес-требования и на низкоуровневые требования — дизайн, макеты, детальное описание реализациивозможно обнаружится нестыковка и будет зацепка процесс ревью также может помочь peer полнота набора критериев означает что или walkthrough, желательно, чтобы это ревью проводил тест-аналитик или тот, полнота набора критериев означает что тоже имеет отношение к написанию требований просто на другой модуль, например Недвусмысленность Могут ли 2 различных человека понять требование по-разному? Пример: Телефон должен работать в автономном режиме, когда он питается от батареек. В автономном режиме недоступны следующие функции: бла-бла-бла. Описание: должны ли быть доступны функции «бла-бла-бла», если телефон с батарейками, но подключен к сети? Я могу подумать, что да, программист — что нет. Заказчик тоже может это интерпретировать как захочет. Требование может пониматься двусмысленно. Частично это может граничить с критерием полнота набора критериев означает что, но в данном случае это может быть полным требованием, поскольку ситуация «работа от сети» также прописана в другом требовании. Поэтому полнота есть, а однозначности нет для некоторых ситуаций. Как тестировать на недвусмысленность и находить такие ошибки: Проверять «ветвистость» требований: если есть условия или исключения — проверять, чтобы они все были описаны и не было «неописанных дыр», которые как раз и могут пониматься по-разному, потому полнота набора критериев означает что явно не прописаны Ревью, аналогично предыдущему пункту В идеале — стараться избегать ветвлений в требованиях. Если это невозможно — форматировать их в виде таблиц со всеми возможными вариантами это коммент, который нужно давать на подобные требования на стадии тестирования требований Полнота набора требований Насколько полным является набор требований? Если есть секция в SRS, определяющая функциональность модуля, то вся ли функциональность этого модуля покрыта требованиями? Пример: Тут было бы хорошо указать набор требований, но это долго. Для этой кнопки просто нет требований. Как тестировать на полноту и находить такие ошибки: нужно смотреть на трассировку требований вверх и вниз на бизнес-требования и на низкоуровневые требования — дизайн, макеты, детальное описание реализации. Если в этих требованиях есть то, что упущено в SRS полнота набора критериев означает что такая ошибка сразу обнаружится. Если этого и там нет — то, возможно, этой функциональности и не должно быть? Или должна быть, но она упущена из виду во всех документах тут нужно уже задавать вопросы и уточнять Непротиворечивость набора требований Поиск требований, которые противоречат друг другу. Это может быть очевидным кейсом, когда 2 требования явно говорят противоположные вещи, но может быть и скрытым, где противоречивость не очевидна на первый взгляд. Пример: Требование 1 из раздела функциональности спец-кнопок : когда активен режим «Mute», телефон не должен издавать никаких звуков Требование 245 из раздела интерфейса : когда пользователь снимает трубку, телефон должен издавать тоновые гудки Имеем противоречивость в случае активного режима Mute и снятой трубки. Как тестировать на противоречивость и находить такие полнота набора критериев означает что Обращать внимания на общие формулировки в требованиях из примера — в случае режима Mute телефон не должен издавать звуков ни при каких обстоятельствах. А обстоятельств много и четкого списка нет и быть не может…. При обнаружении подобных требований либо стараться их переформулировать, либо выносить подобные требования в «особо опасный список» и потом анализировать все остальные требования на предмет противоречия с ними Делить на категории например, выделить все требования, регламентирующие звуковые сигналы и ревьювить их направленно на предмет противоречий Выделять все требования, трассирующиеся на одно верхнеуровневое требование и анализировать полнота набора критериев означает что наборы обычно противоречивость относится к одному требованию верхнего уровня, в рамках которого и существуют несколько более низкоуровневых требований из разных разделов, которые противоречат друг другу Проверяемость тестопригодность Для тестировщиков это — полнота набора критериев означает что из основных и самых важных критериев. Возможно ли проверить это требование и убедиться, что оно выполняется? Пример: в случае возникновения критической ошибки телефон должен перезагрузиться Пример 2: информация на дисплее телефона должна отображаться в понятном пользователю полнота набора критериев означает что Что такое критическая ошибка — можно определить и прописать. Но вот проверить на перезагрузку для всех возможных ошибок не получится, потому как не получится составить список всех возможных сценариев, приводящих к критическим ошибкам если бы это было возможно — этих ошибок и не было бы. Поэтому протестировать это требование невозможно. Что такое понятный вид для пользователя? Мы тестами загоним телефон в какое-то состояние и что мы будем проверять? Какой критерий прохождения такого тест кейса? Мы не сможем прописать expected result. Как тестировать на проверяемость и находить такие ошибки: Во время анализа требований задавать вопрос: «Как я буду это проверять? Если однозначного ответа нет — значит нужно более детально анализировать, и, возможно, вносить правки в требование уточнения, ограничения Во время анализа требований выявлять общие формулировки, требующие перебора неопределенного числа вариантов для проверки выполнения требования. Список можно будет перебрать и проверить тестами Трассируемость Любое требование проходит путь от бизнес-идеи до деталей реализации. Это может быть 3 уровня требований product requirements, software requirements, detailed design documentможет быть и больше. Трассируемость — это связь с требованием выше и требованием ниже. Например, есть бизнес-требование о том, что должна быть возможность отключать звук. Оно может распадаться на уровне SRS на много требований, описывающих функциональность режима Полнота набора критериев означает что. Далее, это может быть еще детальнее расписано в design-е, где будет указано, как именно это реализовать. Связь между этими всеми требованиями — и есть трассировка. На практике частенько бывает, что какое-то из требований теряет трассировку. Соответственно, получается пробел в реализации мы не сделаем того, что нужно бизнесу SRS требование описывает то, чего не было в бизнес-требованиях. Получается, мы делаем то, что не требовалось. Оба эти сценария — показатель того, что трассировка дырявая и на это никто не обратил внимания. Как тестировать на трассируемость и находить такие ошибки: Если используется какая-то система менеджмента требований — полнота набора критериев означает что там, скорее всего, уже есть функциональность, позволяющая полнота набора критериев означает что автоматическом режиме следить за трассировкой и бить тревогу в случае обнаружения нестыковок если она грамотно настроена, естественно Если системы менеджмента требований нет, то остается дедовский способ — составлять матрицы трассируемости например, в экселе. Или написать свой инструмент с минимально необходимыми функциями и отслеживать связи всех требований на всех уровнях. Если где-то есть нарушения трассировок — в ручном режими смотреть на эти требования и принимать решения, что делать. Естественно, ни одна система не в состоянии автоматически сделать трассировку. Она составляется людьми по мере описания требований. Поэтому если трассировка изначально создана криво или неправильно — то визуально все будет красиво. Только не правильно : Поэтому кроме того, что нужно смотреть на связи, нужно еще вдумываться в смысл требований и анализировать, правильно ли они привязаны друг к другу может это связи вообще быть не должно, а может должна быть связь с другим требованием. Понимаемость Могут ли все участники процесса понять, что требуется от системы по описанию требования? Часто бывают ситуации, когда требование может быть понятно разработчику, но не понятно тестировщику или наоборот. При этом требование может вполне соответствовать остальным критериям. Пример: передатчик телефона должен использовать амплитудно-фазовую модуляцию с несущими от 2 до 7,5 МГц с шагом 500 кГц В принципе, все понятно тому, кто знает, что это такое. Тому, кто не знает — будет тяжело понять, что это все такое и зачем нужно тот же бизнес-аналитик возьмет почитать требования и офигеет удивится. Чтобы понять, насколько это требование правильное, тестируемое и т. Данное требование больше подходит для более низкого уровня требований, detailed design, используемый техническими специалистами узкой области. Для более верхнего уровня это требование можно было бы описать так: «Телефон должен уметь параллельно работать с 12 каналами в режиме передачи данных ». Такое требование уже будет понятно многим не-технарям и становится понятно, как его проверять на все критерии. А технические детали как это релизовать можно вынести на более низкий уровень, который уже будут анализировать технари. Если нет — возможно, его нужно как-то переформулировать или упростить вынося технические детали на другой уровень Обращать внимание на двойственные термины особенно, аббревиатурыкоторые могут интерпретироваться по-разному различными людьми. Например, при формулировке «создать форум» — у большинства IT-специалистов возникнет образ какого-то форумного движка и его настройки БД, настройки админки, темы и т. Заключение Тестировать требования не сложно. Просто нужно не спеша и аккуратно проходиться по этим пунктам для всех уровней требований и анализировать, есть ли какие-то противоречия. Это не быстро, но ведь и требования пишутся не один день. Если это делать сразу по мере составления требований — то будет проще исправлять, и анализировать пока у всех это свежо в голове. Ну и, естественно, ошибка, найденная на этапе составления полнота набора критериев означает что, обходится во много полнота набора критериев означает что дешевле ошибки, найденной на стадии функционального тестирования или, три раза тьфу, на стадии валидации всего продукта набора требований набора требований тестопригодность Спасибо за эту статью! А есть у кого-то пример или документ неправильных требований? Очень хотелось бы попробовать на практике проанализировать требования. А то во всех курсах только теорию проходят, а практики не дают, к сожалению Вроде всё понятно, когда читаешь. А в реале ни разу ещё не анализировал требования! Если есть, скиньте сюда, пожалуйста : Или в личку!