О постановке мозгов для тестировщика

Предположим, перед вами - текстовое поле. Самое обычное текстовое поле. В него можно ввести число от -99 до 99. После "тыца" на Enter на выходе получаете Строку в формате "Вы ввели число: ..."

И вот садится наш тестировщик Вася за машинку, открывает софтину и начинает думать:
1. Оукей, давайте сначала разгребемся с классами эквивалентности. У нас их четыре: 
[1..9], [-9..-1], [10..99]. [-99..-10]. 

2. Хм, а нолик-то ни туда, ни туда не влезает, и его вообще можно со знаками загонять в это самое поле. Давайте и это учтём. 

3. Продумаем тестирование граничных значений.

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

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

Теперь перенесемся на секунду в отдел разработки, где очень молодой, но безумно перспективный Junior Java Developer Сергей пишет код для данного функционала. И принимает его метод на вход далеко не строку, а коды ASCII-символов.
Сергей, будучи разработчиком перспективным, заранее определяет граничные значения кодов для чисел. Например, по верхней границе -  57(ASCII-код девятки). Но конец тяжелой рабочей недели и пламенная СМСка от любимой девушки не дают Сергею сосредоточиться, и вместо 57 в коде оказывается граничное верхнее значение 58.

Казалось бы, при правильных значениях всё должно работать.Но стоит нашему дорогому и горячо любимому пользователю ввести символ двоеточия, и программа будет свято убеждать его в том, что этот символ является числом. Итог: Сергея в предынфарктном состоянии срывают на работу(Release is coming)  прямо из объятий любимой, Василий остается без премии, а наш дорогой пользователь строчит гневные комментарии в раздел поддержки программы.

А всего этого могло бы и не случиться, если бы Василий заранее принял бы во внимание подобный аспект. Вот почему так важно ставить себе мозги в правильное русло, занимаясь тестированием. 

2 комментария:

  1. Этот пример очень хорошо показан в книге Канера в первой главе так что тему можно развивать

    ОтветитьУдалить