К основному содержимому
#QualityAssurance

Тестирование черного ящика (Black-Box Testing: Techniques for Functional Testing of Software and Systems)

#QualityAssurance #Software #SoftwareDevelopment

Эту книгу доктора Бориса Бейзера я прочитал чуть меньше 20 лет назад и уже тогда понял, что тестирование - это дело непростое:) Автор рассказывал в этой книге об этом, привлекая теорию графов, активно используя предикатную логику и логику высказываний, активно апеллируя к потокам выполнения и потокам данных. В общем, этот подход к функциональному тестированию показался мне сильно сложнее, чем обычно использовался и используется на практике:) Кроме того, автор решил тестировать при помощи black box форму для налоговой декларации в США, которая в 1995 году, когда вышла английская версия книги, не отличалась стройностью и логичностью (прямо скажем она выглядела как безумное наслоение "так исторически сложилось"). В итоге, книга сейчас полезна как подставка под чашку с кофе или как напоминание почему крутых тестировщиков я называю quality assurance engineer:)

Ниже представлены главы книги, чтобы вы могли сами оценить насколько она практичная и понятная 0. Readme.doc (описание книги и mindmap со связью глав между собой)

  1. Введение (стратегии тестирования, роли тестировщика и программиста, процессы разработки софта)
  2. Графы и отношения (теория графов и как ее использовать для тестирования)
  3. Тестирование потока управления (уже тут появляются предикаты и поток исполнения программы в виде графа, как выбирать пути тестирования)
  4. Тестирование циклов (какие циклы бывают: детерминированные и нет, вложенные и с использованием goto, как выбирать тестовые значения)
  5. Тестирование потоков данных (обсуждение похоже на тестирование потока управления)
  6. Тестирование потоков транзакций (тут появляются марковские цепи, а также очереди и иерархические модели, модели синхронизации и т.д.)
  7. Тестирование доменов (тут появляются кусочки матана для тестирования предельных значений численных доменов, эпсилон-окрестности и т;д.)
  8. Синтаксическое тестирование (тут нам надо знать основы теории и реализации языков программирования, ну или хотя бы про грамматику Бэкуса-Наура и ее использование в тестировании)
  9. Тестирование систем с конечным числом состояний (тут надо знать про конечные автоматы, как их можно визуализировать в таблице переходов и как это использовать для тестирования)
  10. Инструментальные средства и автоматизация (их не было особо 30 лет назад)

В общем, сняв сегодня эту книгу с полки и пролистав, я понял, что меня смущало в ней - я и 20 лет назад не уловил целевую аудиторию книги. По-факту, прочитать, понять и использовать эти подходы может только человек с очень хорошим бэкграундом в computer science. А такой человек скорее всего отправится писать production код, а не заниматься написанием функциональными тестами с использованием black box.

#QualityAssurance #Software #SoftwareDevelopment