понедельник, 23 августа 2010 г.

"Тестирование чёрного ящика" Бориса Бейзера

После долгих тщетных поисков, под самым моим носом в родной фирме обнаружилась книга "Тестирование чёрного ящика" Бориса Бейзера (издательство "Питер", 2004), которую я тут же радостно взяла почитать. Почти сразу после начала чтения радость моя слегка поутихла, но мужественно дочитав эту книгу до конца, хочу теперь описать о ней свои (очень субъективные) впечатления. 

1. О чём эта книга.

В самом названии книги написано, что она - про "технологии функционального тестирования программного обеспечения и систем" (кстати, написана/издана книга была ещё в 1994 году, это на русском языке её издали в 2004). Если почитать то, что написано на задней обложке, то это книга "практичная и понятная, освещающая основные аспекты тестирования чёрного ящика" и "практическое, доступное руководство по современным методам тестирования  чёрного ящика". Наверное, я привожу эти цитаты потому, что у меня сложилось о книге несколько другое впечатление. 

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

В целом, в книге описывается несколько различных моделей тестирования, подходящие условия, принципы и детали их применения. А вот эта цитата, по-моему, лучше всего объясняет причины использования моделей в принципе: "Модель - это способ структурировать наше мышление, необходимый для получения полезных тестов".

2. Что мне понравилось

Я сомневалась, стоит ли включать данный раздел в мой отзыв об это книге, т.к. мне сложно выделить то, что мне в ней понравилось (следующий раздел будет значительно больше). Наверное, всё-таки сама идея построения моделей, являющихся наиболее адекватными для конкретного тестируемого ПО, и тестировании на основании этих моделей - это главное. Но эта идея может и была свежей и революционной на момент написания книги, но на данный момент для меня не нова (что, конечно, не является проблемой данной книги).

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

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

3. Что мне не понравилось.

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

Во-первых, говоря об этой книге, нельзя абстрагироваться от её структуры - изложение материала, с моей точки зрения, очень неудобоваримое: каждая глава начинается списком определений терминов, а далее идёт основное изложение материала, исходящее из того, что вся терминология полностью усвоена. По-моему, это очень неудобно, и гораздо эффективнее вводить термины в контексте основного изложения. Кстати, книга мне в принципе кажется чересчур и необоснованно перегруженной (специальной) терминологией.

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

В-третьих, само использование графов (смутные воспоминания о которых с институтских времён у меня весьма положительные) в контексте данной книги не показалось мне особо привлекательным - по разным причинам. Например, сам автор рекомендует использовать чаще не графическое представление той или иной модели (графы), а её текстовое выражение (списки), которое мне совершенно не показалось удобным или наглядным. Для ряда моделей построение графов показалось мне не естественным, а слишком тяжеловесным и притянутым за уши. В целом, я не увидела каких-либо значительных преимуществ в предложенном использовании графов, что, однако, может объясняться с одной стороны, отсутствием у меня опыта работы с ними, с другой - отсутствием адекватных задач для их использования.

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

4. Что ещё хочу отметить.

Сталкиваясь в последнее время с проблемой бессонницы, данная книга стала для меня чудесным снотворным средством (уж не знаю, в плюсы или минусы это надо было вписать). При этом последняя глава - про автоматизацию тестирования - явно выбивалась из общей канвы, т.к. некоторые изложенные там мысли прямо-таки вызывали во мне бурю эмоций, например: 

"<...>  ручное тестирование уже не работает. Оно никогда не работало очень хорошо, не работает сейчас и не будет работать в будущем. Ручное тестирование является самообманом".

"Выполнение теста руками является делом трудным, скучным, грубым и бесчеловечным".

Кстати, есть в последней главе несколько мыслей о будущем тестирования, которые сейчас, по прошествии более 15 лет с момента написании книги, любопытно почитать. В основном речь идёт о том, что тестирование исчезнет как отдельная профессия и (если я поняла правильно) больше станет обязанностью самих  разработчиков.

5. Выводы.

Для конкретной меня с моим конкретным опытом и конкретными текущими рабочими задачами, книга не показалась мне особо полезной. Я бы назвала саму книгу сложной для восприятия, а излагаемый в ней материал - не слишком перспективным для применения на практике (для тех задач, с которыми я сталкивалась). Возможно, она может быть полезной при наличии определённых задач, требующих очень формализованного и структурированного подхода к тестированию (каковые мне не встречались). Пожалуй, книга представляет интерес по большей части как известный классический труд о тестировании, с которым можно ознакомиться для общего развития.

12 комментариев:

  1. Большое спасибо за информацию.

    ОтветитьУдалить
  2. Алексей, рада, если мой отзыв пригодился. Надеюсь только, что не отважу им кого-либо от прочтения очень нужной книги (но полагаю, что все люди разумные и придают правильное значение очень субъективным отзывам) О-)

    ОтветитьУдалить
  3. Эта книга для представителей аналитеческой школы тестирования, к которой вы явно не принадлежите. Как, собственно, и я.

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

    Хотя я из этой книги в свое время узнал про классы эквивалентности и анализ граничных значений.

    ОтветитьУдалить
  4. Знаете, Алексей, что забавно - как раз когда я читала главу про тестирование доменов, я думала о том, сколь сложно преподносится здесь эта в принципе достаточно понятная тема. Мне ещё было любопытно, пришлось ли кому-либо разбираться с ней именно по этой книжке - теперь я точно знаю, что да :) Наверное, одно из главных моих ощущений от этой книги - это то, насколько сложно здесь всё объясняется.

    Наверное, во всём этом достаточно сложном подходе, включающем использование уравнений, неравенств, графов, графиков и т.п. есть своя прелесть и ценность. Но всё время, пока я читала эту книгу, меня преследовало ощущение какой-то незавершённости всех этих теоретических выкладок. Да, при помощи всего этого аппарата строится и описывается какая-то модель - но что дальше? Допустим, построили мы свой граф, либо же описали домен неравенствами - но какие выгоды в том, что мы это сделали? Где дальше описание, допустим, каких-либо методов работы с графами, дающих нам возможность получить оптимальный набор путей прохождения этого графа с покрытием всех вершин? В этой книжке этого нет или почти нет.

    Возможно, главная цель этой книги - это дать представление человеку, как к тестированию можно подойти с помощью всех этих математических моделей и т.п. И при этом предполагается, что этот человек очень хорошо владеет в принципе мат. аппаратом, чтобы уже прекрасно самому знать, что же дальше с этими графами, уравнениями и т.п. можно делать. И возможно, Алексей, именно это вы имели в виду, когда говорили о том, что это "книга для представителей аналитической школы тестирования" :)

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

    ОтветитьУдалить
  5. Где её купить?
    Не нашёл ни в одном интернет-магазине :(

    ОтветитьУдалить
  6. Боюсь, что её и не купить сейчас

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

    Да в главе - тестирование методом черного ящика, улыбнула фраза - именно для таких программистов-тестировщиков написана данная книга.

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

    ф топку ее!

    ОтветитьУдалить
  8. Ну, в топку или не в топку, но рекомендовать я её вряд ли стану кому-либо, разве что - для общего развития или в очень специфическом контексте.

    ОтветитьУдалить
  9. Начала читать эту книгу, потому что посоветовал преподаватель, чем он при этом руководствовался остаётся тайной... Дошла до 5 главы, а дальше провал, прочитываю страницу и понимаю, что усвоила и поняла от силы четверть. Это моя первая книга по тестированию, которая сразу отбивает всё желание изучать сей предмет. Подскажите, пожалуйста, какие-нибудь книги более доступные для понимания, а то к концу мая надо написать курсовой проект связанный как раз с тестированием. Заранее благодарю...

    ОтветитьУдалить
  10. Нда, как первую книгу по тестированию такое рекомендовать - это как-то жестоко... Сочувствую.

    Вообще для новичков в тестировании обычно рекомендуют книгу Романа Савина "tестирование дот com" (допустим, вот: https://www.ozon.ru/context/detail/id/3128208/). Книга имеет свои недостатки, но читается она очень легко и представление о тестировании даёт (ссылки, где скачать можно, давать по понятным причинам не буду, но думаю, что найдётся она в сети без труда; но если не получится найти - пишите, что-либо придумаем).

    Если рекомендовать что-то посерьёзнее, то даже как-то сложно - хорошей и понятной, вроде, является классическая книга "Сэм Канер и др. Тестирование программного обеспечения" - но она достаточно старая и очень объёмная. Из-за старости своей актуальности она не потеряла, но, например, примеры могут быть не слишком современными.

    Больше как-то на ум не приходит, разве что вот полезную ссылочку вам скину с обзором: http://software-testing.ru/books/44-review/658-books
    (скажу только, что п.5 лично я не люблю очень :) )

    ОтветитьУдалить
  11. прочитал данную книгу буквально за 2 дня... я сам приверженец аналитической школы, к работе подхожу чисто математички(на этом языке мне проще думать), но в книге не нашел ни одной цитаты, которая пополнила бы мой запас знаний(к тому времени мой опыт был менее 3-х месяцев=) ) хочу заметить, что громкие слова о модели, как представлении мыслей звучат внушающе, но, на мой взгляд 95% людей, читающих эту книгу, преследуют мысль найти что-то новое, применимое на практике, а получают кучу не нужного, на половину очевидного не структурированного материала... исходя из этого, я делаю вывод, что автор сам не может структурировать мысли в советах о структурировании мыслей... так я себе это представляю... мой опыт в тестировании ПО не большой, все знания я черпаю из глубин разработки микропроцессорной вычислительной техники(моя специальность в универе). В этой сфере приходится сталкиваться и с программированием(процессоров), с тестированием программ(ассемблера), с тестированием цифровых и аналоговых микросхем, работа с доволи сложными и даже через годы использования не до конца известными программами(что-нибудь в стиле P-CAD или Altium). Отсюда и аналитический склад ума, на данный момент у меня год опыта, и я руководитель группы тестировщиков с опытом в 1.5-2 раза больше моего... тем, кто задается вопросом освоения принципов и подходов могу лишь посоветовать Р. Савина, но только для понятия основных задач требований, и осознания места тестировщика в процессе разработки, все остальное что нужно для работы - математическое осмысление ТЗ, параллельное изучение не сложного языка программирования, оценка тестирования методами теории вероятности - для этого не столь книги полезными будут, а практика в решении задач по комбинаторике и логике...

    ОтветитьУдалить
    Ответы
    1. JustBsh, спасибо за Ваше мнение и описание собственного опыта - любопытно.
      Ну а что касается этой книги - вот и ещё одно мнение не в её пользу...

      Удалить