1. FUN-PARAMETER. Система должна принимать один параметр CATWEIGHT, который должен быть либо положительным значением с плавающей запятой, либо положительным целым числом. Если параметр не соответствует ни одному из этих двух типов или если параметр не один, система должна немедленно прекратить работу с единственным сообщением: "Пожалуйста, введите правильное значение".
2. FUN-STARTUP-MESSAGE. При запуске система должна вывести в консоли сообщение "Cat Weighing System" ("Система взвешивания кота").
3. FUN-UNDERWEIGHT. Если CATWEIGHT меньше 3 кг, тогда в консоли должно быть выведено сообщение "Cat is underweight" ("Вес кота недостаточный").
4. FUN-NORMALWEIGHT. Если CATWEIGHT равен или больше 3 и меньше 6 кг, тогда в консоли должно быть выведено сообщение "Cat is normal weight" ("Вес кота нормальный").
5. FUN-OVERWEIGHT. Если CATWEIGHT больше или равен 6 кг, тогда в консоли должно быть выведено сообщение "Cat is overweight" ("Вес кота избыточный").
6. NF-PERF-TIME. Система должна отображать соответствующее сообщение в течение 2 секунд во время исполнения программы.
Хотя это сравнительно простая программа с небольшим набором требований, здесь уже присутствует некая неоднозначность. Можно предполагать, что в реальных приложениях ее будет больше. Зачастую это станет причиной дискуссий с системными инженерами, ответственными за требования аналитиками и/или потребителями для устранения различных неоднозначностей. Конкретная неоднозначность в этом случае находится в разделе FUN-PARAMETER, где говорится, что система должна немедленно прекратить работу с единственным сообщением "Пожалуйста, введите правильное значение" в случае, если введено неверное значение. Следующее требование FUN-STARTUP-MESSAGE говорит, что сообщение "Cat Weighing System" должно демонстрироваться при запуске; в нем не упоминается, должны ли учитываться случаи, когда ранее вводились неверные значения. Другими словами, ожидаемое поведение должно быть таким:
$ catweigher мяу
Пожалуйста, введите правильное значение
или таким:
$ catweigher мяу
Cat Weighing System
Пожалуйста, введите правильное значение
Нам следует определить ожидаемое поведение перед началом написания тестплана. Это может быть выполнено проверкой соответствующих требований аналитиками, системными инженерами, владельцами продукта (product owners) и всеми, кто отвечает за требования. Если вы работаете с менее формальной командой, правильным решением будет сделать предположение. Однако эти предположения должны быть отмечены в тест-плане! Если кто-то делает предположения, они должны быть по крайней мере где-то ясно описаны. Но в целом вы должны избегать предположений; вы должны знать ожидаемое поведение настолько точно, насколько это возможно. В этом случае давайте предположим, что мы отправились к менеджеру проекту (конечно, у catweigher есть менеджер проекта) и определили, что сообщение "Cat Weighing System" не должно отображаться, если значение было некорректным. Другими словами, первый вариант вывода является правильным.