Цитата: Допустим, для полного тестирования некоей фичи надо написать 2000 тестов. Кто как подходит к этой задаче?
Американец: "У нас нет времени и бюджета на 2000 тестов. Есть только на 12 (двенадцать)." После чего созывает митинг, определяет 12 наиболее важных тестов и довольно быстро и прилично их пишет. Тесты покрывают 91% функциональности фичи, так что она проходит внутреннюю проверку и выбрасывается на рынок. Из-за багов в оставшихся 9% непроверенного кода фича периодически взрывается в руках у юзеров, но это уже проблема не американца, а кого-то там другого в технической поддержке. Американец счастлив, бизнес счастлив, 91% пользователей счастливы, а если кто несчастен в техподдержке, так пусть ищет другую работу. Многие вон вообще официантами начинали, и ничего, пробились.
Русский. Как победитель двух международных олимпиад по программированию и обладатель PhD по математике, он искренне не понимает, нахрена тут 2000 тестов? Очевидно же, что если применить пару теорем о пределах экспонент от операторов, то всё сводится к одному-единственному рекурсивному тесту плюс двум особым случаям. Это он и пишет, покрывая 104% кода монструозным тестом. Все счастливы, пока русский не уходит в другую компанию, а фича однажды не меняется, отчего тест падает. Унаследовавший этот код девелопер, заглянув внутрь, охреневает: зачем тут функция Аккермана и как быть с трехкратно вложенными структурами памяти, единичные биты которых периодически зачем-то хачатся из глубин рекурсии? Поскольку никто в компании разобраться с этим не в силах, тест выкидывается и задача сводится к предыдущей.
Китаец. По сравнению с историей Китая каких-то 2000 тестов -- полная мелочь. Так что он просто берётся за работу и пишет первый тест. Затем копипастит его, меняет где что надо и получает тест №2. Копипастит один из предыдущих тестов, меняет, и получает тест №3. Трудолюбиво повторив эту процедуру ещё 1997 раз, он за каких-то 19 дней заканчивает работу, сдаёт её начальству и получает на распашку следующую задачу. Работать с таким тестом -- одно удовольствие. Он прост, стабилен и правилен до скуки. А в чём проблема, спросите Вы? В том, что если при написании теста номер 734 откроется, что простой копипаст тут не работает, а нужно ещё 14 миллионов sub-cases, то Ваш китаец так и уйдёт в невозвратный цикл.
Индус сам ничего писать и тем более тестировать не станет. Он переговорит с дюжиной контактов по всей конторе, выкатит восхитительно звёздный план Завоевания Всей Вселенной (узким частным случаем которого будут те 2000 тестов), затем спихнёт этот план соседней группе и начнёт требовать у них регулярных status update по проценту выполнения. При попытке выяснить у него, где мы находимся и сколько уже сделано, будет указывать на другого (ныне ответственного) индуса в соседней группе. Надо ли объяснять, что тот (соседний) индус через неделю просто повторит программу предыдущего?
P.S. Не принимайте слишком всерьёз. Я видел великолепных трудолюбивых программистов любой национальности. Как, впрочем, и бесполезных раззвездяев -- тоже.
из интернета