The Art of Software Testing by Glenford Myers

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

Искусство тестирования программного обеспечения” Гленфорда Дж. Майерса, Тома Баджетта и Кори Сэндлера - одна из моих любимых книг, касающихся тестирования и программной инженерии в целом. В этой статье я расскажу об основных моментах книги, а также выделю идеи и цитаты, которые я считаю наиболее интересными.

Книга была издана в трех изданиях. Первое было опубликовано в 1979 году, когда я был слишком молод, чтобы оценить ее. Второе издание было опубликовано в 2004 году - я прочитал его впервые в 2007 году. Третье издание было выпущено всего два года назад, в 2012 году. Я также купил это издание и прочитал его, словно впервые. Несмотря на свой возраст и некоторое устаревшее содержание, эта книга по-прежнему является одной из лучших в области тестирования программного обеспечения.

Сначала давайте отфильтруем то, что, по моему мнению, не стоит читать.

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

Например, в Главе 3 содержится одиннадцати-страничный список, который должен использовать рецензент кода, чтобы найти программные ошибки. Этот список определенно не является исчерпывающим и не может сравниться с, скажем, “Code Complete” Стива Макконнелла. Я считаю, что этот список имел значительную ценность двадцать лет назад, но сейчас он устарел.

Глава 5 обсуждает основные принципы и стратегии модульного тестирования. Однако эта дискуссия недостаточно абстрактна для краткого 25-страничного обзора и недостаточно конкретна для подробного обсуждения. Опять же, двадцать лет назад эта информация могла иметь некоторую ценность. В настоящее время “Growing Object-Oriented Software, Guided by Tests” Стивена Фримена и Нэта Прайса является гораздо лучшим источником по этой теме.

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

Самая важная и ценная часть книги – Глава 2. Она полна бесценных цитат, которые также могут быть очень практичными. Например, на странице 6:

Во второй главе доктор Майерс обсуждает психологию тестирования и очень распространенное и важное непонимание целей тестирования. Он утверждает, что общепринято считать, что целью тестирования программного обеспечения является “показать, что программа выполняет свои предназначенные функции правильно” (стр. 5). Тестировщики нанимаются для проверки того, выполняется ли программное обеспечение ожидаемым образом. Затем они докладывают руководству, прошли ли все тесты успешно и может ли программа быть передана конечным пользователям.

Это то, что говорит доктор Майерс на второй странице, и я смиренно могу подтвердить, что во всех группах разработчиков программного обеспечения, в которых я работал до сих пор, почти все, включая тестировщиков, менеджеров проектов и программистов, разделяют эту философию. Все они считают, что “тестирование - это процесс демонстрации отсутствия ошибок” (стр. 5).

Однако, “эти определения перевернуты с ног на голову” (стр. 6). Психология тестирования следует рассматривать как противоположность. Есть две цитаты, которые подтверждают эту теорию, и я считаю, что они составляют всю книгу.

Первая цитата на странице 6 определяет цель тестирования программного обеспечения:

Вторая цель, на следующей странице, дополнительно уточняет первую цель:

Доктор Майерс возвращается к этим двум мыслям в каждой главе. Он повторяет снова и снова, что нам следует изменить основную психологию того, как мы видим тестирование, чтобы изменить наши результаты тестирования. Мы должны сосредоточиться на разрушении программного обеспечения вместо подтверждения его работоспособности. Потому что тестирование - это “мазохистический процесс” (с. 6) разрушения вещей. Это “деструктивный процесс” (с. 8).

Если вы очень внимательно прочитаете Главу 2 и искренне поймете ее основные идеи, это может изменить всю вашу жизнь. Эта глава должна стать Новым Заветом для каждого тестировщика.

Во второй главе доктор Майерс также отмечает, что программа, какой бы она ни была простой, содержит неограниченное количество ошибок. Он говорит, что “нельзя протестировать программу, чтобы гарантировать ее полное отсутствие ошибок” (с. 10) и что “практически невозможно найти все ошибки в программе” (с. 8).

Кроме того, в конце шестой главы он делает важное замечание (с. 135):

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

Ответ, который дает доктор Майерс, блестящий (стр. 136):

Затем он переходит к обсуждению того, как именно можно оценить эту «заранее определенную цифру». Я нахожу эту идею очень интересной. Я даже применял ее в нескольких проектах за последние несколько лет. Она работает. Однако она также может вызвать серьезные психологические проблемы для команды. Большинство людей просто недовольны целью «тестировать до тех пор, пока не будет найдено требуемое количество ошибок». Самым распространенным ответом является: «а что, если ошибок больше не останется?».

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

Я считаю эту книгу фундаментальным трудом в области тестирования программного обеспечения. Это в основном связано с главой 2 книги. Фактически, всего три страницы текста составляют основу всей книги. Они являются каркасом для других двухсот страниц.

К сожалению, с 1979 года этот каркас не стал основой индустрии тестирования программного обеспечения. Большинство из нас до сих пор работают против этих принципов.

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-17 at 16:08

sixnines availability badge   GitHub stars