Старые книги

Из ленты: QA — грамотно

В наше время считается нормой учиться тестированию и при этом НЕ учиться программированию. Но ведь тестирование само по себе не имеет смысла — это подчинённый процесс, придуманный программистами для программирования.

Старые книги

Все «старые» книги про тестирование написаны программистами, которые объясняют тестирование программистам. Майерс, Бейзер, Вайнберг, Йоргенсен — не так уж много их, но что дошло до наших дней, то если не блестит, то поблёскивает.

В таких книгах подразумевается, что сперва ВСЁ надо продумать, и ВСЁ учесть, и ВСЁ заранее протестировать «карандашом на бумаге», а уже после этого натыкать дырок на перфолентах (или, чтобы посовременнее, на перфокартах) и скормить их компьютеру.

Если сможете сделать на старом компьютере всё это иначе, быстрее и безошибочнее — обязательно расскажите, бо это чудо.

Тестирование в таких условиях чуть менее, чем полностью сопровождает процесс продумывания программ, и представляет собой аналитический процесс. Всё подчинено идее «Нормально делай — нормально будет».

Пример такого подхода:

— Чтобы это сделать, надо написать вот такую команду и в ней передать такие-то параметры. Затем будет выполнен вот этот код.

— А если я после команды не буду выполнять этот код? (мечтательно) Я же пользователь, я могу ВНЕЗАПНО передумать или решить перейти к другой задаче

— Надо делать именно так, как было предусмотрено.

Незабываемый звук затвора Colt 1911.

Расширенные зрачки того, кто всё понял про реальные способы обеспечения качества.

Directed by Robert B. Weide (титры).

Потом-то [все] догадались о том, что программирование — не то же самое, что и строительство пирамид, и что люди иногда таки-передумывают (запускать ракеты сразу после их запуска), и что невозможно разрулить процессы разработки ПО так, чтобы всё получалось сразу с предсказуемым качеством, даже если логика говорит, что это достижимо. Слишком много неопределённости и вариантов развития событий. И слишком неоднозначны подходы к решению задач. А ешё и чёртов человеческий фактор.

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

И тестирование ПО из подчинённого сервиса стало превращаться в отдельную отрасль, где ценились отдельные навыки и отдельное управление. Появились и отдельные книги (Тамре, Паттон, Канер — сам себя Сэм Канер называет «Кем Кэйнер», но нам лучше знать), в которых рассказывалось только про тестирование, и про то, что это сложный процесс, который требует отдельного менеджмента, для чего надо перепродумать процессы разработки ПО, а это привносит новую неопределённость…

Медленно окрепло мнение о том, что можно разобраться в тестировании, не разбираясь в программировании. И таки да, можно. Можно же водить автомобиль, не умея его чинить. Можно звонить по телефону, не понимая, как работает связь.

К началу XXI-го века этот подход развит до невероятного: массив знаний, необходимых для умения программировать, оказался очень большим, местами «огромным до ненужного». Важнее уметь пользоваться средой программирования, нежели понимать, как и почему она работает. Программист уже может самостоятельно продумывать и набирать код на клавиатуре, даже ещё до продумывания архитектуры приложения — быстро написал, быстро переписал.

Умение программировать не означает «уметь педалить код». Это отдельный навык мышления, это умение рассуждать на уровне высоких абстракций, а какой конкретно язык программирования будет использован для написания кода — дело второстепенное. Это как управление войсками. Военное искусство изучают на костях Сунь Цзы — это очень древнее занятие, для которого нужны «старые книги».

Знания о программировании можно условно разделить на академические и прикладные, и таки это было сделано. Новичкам приходится [спрашивать на DOU, какой именно язык надо учить] принимать странное решение: или учить абстрактные теории о том, как работают машины, или учиться просто управлять этими машинами. Разве это не следует делать одновременно? Которые башковитые, те умудряются переключаться между этими сторонами, как в старину, а остальным и так всё норм.

Тестирование тоже разошлось на академическое и прикладное, и вроде бы окончательно превратилось в отдельную от программирования отрасль.

Современным тестировщикам нет нужды учиться сперва технарному мышлению, затем программированию и потом уже тестированию — это ли не ебалайтунг? Можно не знать Computer science — это и у современных программистов бывает, и, казалось бы, чо? А ничо. Можно не понимать, что такое файл или «временная/пространственная сложность алгоритма». Тестировщику можно вообще не уметь читать/писать код. Тест-дизайн упростился до двух пунктов (разбиение на классы эквивалентности и выявление граничных значений), и это самое сложное из того, что объясняют новичкам, а всё остальное ушло в раздел «просто знайте, что оно существует». Можно просто запоминать термины, не понимая их суть. Можно писать тест-кейсы, не понимая, почему они имеют такую форму. Можно верить в то, что найти все дефекты невозможно, что всё протестировать невозможно, что абыр, извините, валг.

Все «старые» книги про тестирование в этих условиях стали непонятными, а значит, «устарели», и читать их незачем. Надо подождать, когда кто-то напишет новые книги про тестирование программного обеспечения.

Ммм…

Если ждать, то сколько и чего конкретно?

Принципы, по которым работают современные компьютеры — те же, по которым они работали в середине ХХ века. Просто сейчас они делают вычисления невероятно быстро, а нам хочется чтобы ещё быстрее. Чтобы правильно работать с вычислительными машинами (компьютерами), нужно понимать, как и почему они работают — всё то же, что и в древности. Вам точно нужны новые книги для того, чтобы узнать про базовые принципы?

Можно компилировать новые книги из старых. Так делают преподаватели (Майерс, Коупленд, Куликов). Можно наматывать поверх компиляции собственный контент (Савин, Виттакер, Блэк, Криспин). Но компиляция основывается на «старых книгах», поэтому опять ничего нового.

Можно создавать книги-учебники, которые сопровождают лекции, и которые сложно читать в отрыве от их авторов, даже если очень полезно (Бейзер, Йоргенсен). Но если начать со «старых книг», а потом дойти до Бейзера с Йоргенсеном, то всё будет понятно.

Тестирование — цельная система, в которой нет ничего лишнего, и всё со всем взаимосвязано. Тестирование полностью зависит от программирования.

Тестирование ПО следует воспринимать и объяснять слитно с программированием, а не отдельно.

 

Реклама

Источник