У студентов в моей школе для начинающих тестировщиков есть задание — написать чек-лист на функционал своего проекта.
Мы просим тесты со спецификой конкретного проекта, а не просто «строка символов, циферек, перемешал, готово». В лекции разбирается пример с именами, но студенты все равно жалуются, что «то имена, а у меня как выделить, вообще непонятно!».
Моя коллега Ольга Алифанова привела такой пример:
********************************************************************
Какие можно выделить классы эквивалентности для адресов? Как разделить населенные пункты:
Дальше у меня идеи кончились, ну, кроме длины, поэтому я схожу в гугл. Но обратите внимание: в первую очередь мы думаем о строке не как о строке (символы русские, английские, смешал, длину проверил), а как о конкретном поле. И выделяем классы именно для этого поля. Не для абстрактного string.
Мы просим тесты со спецификой конкретного проекта, а не просто «строка символов, циферек, перемешал, готово». В лекции разбирается пример с именами, но студенты все равно жалуются, что «то имена, а у меня как выделить, вообще непонятно!».
Моя коллега Ольга Алифанова привела такой пример:
********************************************************************
Какие можно выделить классы эквивалентности для адресов? Как разделить населенные пункты:
- по типу: столица, город, ПГТ, деревня...
- по названию: в одно слово, в два через пробел, в два через дефис, в три и более слов (Комсомольск-на-Амуре), с цифрами (все закрытые города, скажем, имеют цифру в названии), ...
- по населению: Москва, Петербург, миллионник/не миллионник, больше 12к жителей, исключение (Иннополис - десять жителей, но город)
- по административному положению: федерального значения (Мск и Спб уже были, значит, Севастополь остался), областной центр (Екат), не областной центр (Выборг)
- по степени закрытости: обычный (Псков), приграничная зона (Ивангород), совсем закрытый (Красноярск-26)
- по истории названия: переименовывались, не переименовывались, переименовывались неоднократно (Петроград-Ленинград-Петербург)
Дальше у меня идеи кончились, ну, кроме длины, поэтому я схожу в гугл. Но обратите внимание: в первую очередь мы думаем о строке не как о строке (символы русские, английские, смешал, длину проверил), а как о конкретном поле. И выделяем классы именно для этого поля. Не для абстрактного string.
********************************************************************
И так по каждому пункту. Будь то имя, адрес, телефон — проверяем конкретное поле. Не абстрактную строку. Мы ведь не знаем, какие проверки разработчик зашил внутри кода. Мы не знаем, где потом используется эта информация, что именно по ней определяется.
Как ни странно, студенты очень хвалят этот пример и говорят за него огромное спасибо. И идут переделывать свои чек-листы... То есть примера с именами явно недостаточно. Тогда вынесу этот пример в блог и книгу! Публикуется с согласия автора :)
См также:
Классы эквивалентности для имен — тоже идеи, но про имена
Классы эквивалентности: будни Золушки — подробнее о классах эквивалентности
Ивану кредит не давать! — история о баге, который пропускается, когда тесты абстрактные
PS — это выдержка из моей книги для начинающих тестировщиков, написана в помощь студентам моей школы для тестировщиков
Классы эквивалентности для имен — тоже идеи, но про имена
Классы эквивалентности: будни Золушки — подробнее о классах эквивалентности
Ивану кредит не давать! — история о баге, который пропускается, когда тесты абстрактные
PS — это выдержка из моей книги для начинающих тестировщиков, написана в помощь студентам моей школы для тестировщиков