Get a PDF

О национальных особенностях тестирования

Допустим, для полного тестирования некоей фичи надо написать 2000 тестов. Кто как подходит к этой задаче?

Американец: "У нас нет времени и бюджета на 2000 тестов. Есть только на 12 (двенадцать)." После чего созывает митинг, определяет 12 наиболее важных тестов и довольно быстро и прилично их пишет. Тесты покрывают 91% функциональности фичи, так что она проходит внутреннюю проверку и выбрасывается на рынок. Из-за багов в оставшихся 9% непроверенного кода фича периодически взрывается в руках у юзеров, но это уже проблема не американца, а кого-то там другого в технической поддержке. Американец счастлив, бизнес счастлив, 91% пользователей счастливы, а если кто несчастен в техподдержке, так многие вообще официантами жизнь начинали, и ничего, пробились.

Русский. Как победитель двух международных олимпиад по программированию и обладатель PhD по математике, он искренне не понимает, нахрена тут 2000 тестов? Очевидно же, что если применить пару теорем о пределах экспонент от операторов, то всё сводится к одному-единственному рекурсивному тесту плюс двум особым случаям. Это он и пишет, покрывая 104% кода монструозным тестом. Все счастливы, пока русский не уходит в другую компанию, а фича однажды не меняется и тест падает. Унаследовавший этот код девелопер, заглянув внутрь, охреневает: зачем тут функция Аккермана и как быть с трехкратно вложенными структурами памяти, единичные биты которых периодически зачем-то хачатся из глубин рекурсии? Поскольку никто в компании разобраться с этим не в силах, тест выкидывается и задача сводится к предыдущей.

Китаец. По сравнению с историей Китая каких-то 2000 тестов -- полная мелочь. Так что он просто берётся за работу и пишет первый тест. Затем копипастит его, меняет где что надо и получает тест №2. Копипастит один из предыдущих тестов, меняет, и получает тест №3. Трудолюбиво повторив эту операцию ещё 1997 раз, он за каких-то 19 дней получает готовый результат, сдаёт его начальству и получает на распашку следующую задачу. Работать с таким тестом -- одно удовольствие. Он прост, стабилен и правилен до скуки. А в чём проблема, спросите Вы? В том, что если при написании теста номер 734 откроется, что простой копипаст тут не работает, а нужно ещё 14 миллионов sub-cases, то Ваш китаец так и уйдёт в невозвратный цикл.

Индус сам ничего писать не станет. Он переговорит с дюжиной контактов по всей конторе, выкатит восхитительно звёздный план Завоевания Всей Вселенной (узким частным случаем которого будут те 2000 тестов), затем спихнёт этот план соседней группе и будет периодически требовать у них status update по проценту выполнения. При попытке выяснить у него, где мы находимся и сколько уже сделано будет указывать на другого (ныне ответственного) индуса в соседней группе. Надо ли объяснять, что тот индус через неделю просто повторит программу предыдущего?

P.S. Не принимайте слишком всерьёз. Я видел великолепных трудолюбивых программистов любой национальности. Как, впрочем, и бесполезных раззвездяев -- тоже.

22.04.2016

===

Text Author(s): Eugene Bobukh     ===     Web is volatile. Files are permanent. Get a copy: [PDF] [Zipped HTML]     ===     Full list of texts: http://tung-sten.no-ip.com/Shelf/All.htm]     ===     All texts as a Zip archive: http://tung-sten.no-ip.com/Shelf/All.zip] [mirror: https://1drv.ms/u/s!AhyC4Qz62r5BhO9Xopn1yxWMsxtaOQ?e=b1KSiI]     ===     Contact the author: h o t m a i l (switch name and domain) e u g e n e b o (dot) c o m     ===     Support the author: 1. PayPal to the address above; 2. BTC: 1DAptzi8J5qCaM45DueYXmAuiyGPG3pLbT; 3. ETH: 0xbDf6F8969674D05cb46ec75397a4F3B8581d8491; 4. LTC: LKtdnrau7Eb8wbRERasvJst6qGvTDPbHcN; 5. XRP: ranvPv13zqmUsQPgazwKkWCEaYecjYxN7z     ===     Visit other outlets: www.bobukh.com, http://eugenebo.wordpress.com/, https://www.linkedin.com/in/eugenebo, https://eugenebo.livejournal.com     ===     License: Creative Commons BY-NC (no commercial use, retain this footer and attribute the author; otherwise, use as you want);     ===     RSA Public Key Token: 33eda1770f509534.     ===     Contact info relevant as of 12/8/2019.

===