Тестирование черного ящика. Б. Бейзер (2004) (1186170), страница 2
Текст из файла (страница 2)
Говоря «тестировщик», я имею в виду людей, которые регулярно или в настоящее время тестируют программы, написанные другими людьми. Под «разработчиками» я подразумеваю людей, разрабатывающих программное обеспечение, но, сейчас занимающихся тестированием своих программ. Тестирование, выполняемое и теми и другими, слабо зависит от внешнего вида программы, оно подразумевает, что вы ставите себя наместо пользователя и проверяете, что программа ведет себя так, как должна, вне зависимости от способа ее создания. Зто и означает тестирование методом черного ящика. Большинству начинающих тестировщиков, особенно если они нигде этому не учились, приходится самим исследовать тестирование методом черного ящика (иначе его называют поведенческим тестированием или функциональным тестированием).
Без соответствующей подготовки они изучают по книгам эвристические версии методов, для которых могут существовать специально написанные коммерческие инструментальные средства. Для таких пользователей в данной книге содержатся основные сведения о надежных и доступных методах поведенческого тестирования. На освещение этих вопросов меня подталкивали производители инструментов для тестирования, поскольку они создают сложные продукты, основанные отчасти на технологиях, описанных в этой книге, но пользователи не владеют методами, реализованными в их инструментах.
Возникает замкнутый круг. Тестировщики с большой неохотой вкладывают деньги в обучение новым методам. Особенно те из них, кто полагается на автоматику, хотя для этого уже существуют специальные коммерческие инструменты. Производители не могут инвестировать средства в разработку инструментов, включающих такие методы, пока не появятся тестировщики, владеющие этими методами. Зта книга призвана помочь разрушить замкнутый круг. Прочитайте ее, затем отправляйтесь к производителю, чьими инструментальными средствами вы пользуетесь, и требуйте включить в них методы Введение 13 из соответствующей главы. А если я отправл>о произвопителям данные о продажах этой книги, это будет для них явным признаком того, что риск обоснован, так как иа самом деле существует рынок спроса на их инструменты и большое число опытных тестировщиков, понимающих особенности методов и принципов, на которых они основаны.
Я должен сказать, чего в этой книге иет. Она не вмещает в себя огромный объем литературы по тестированию, так, например, она ве заменяет мою книгу «Методы тестирования программиого обеспечения», 2-е издание ([55Т2 — ВЕ1Х90]). 55Т2 — это всеобъемлющий (550 страниц) обзор литературы по тестированию. Эта книга предназначена для максимально широкой аудитории — от разработ шков, до тестировщиков, исследователей, студентов и аспирантов. Настоящая книга слиппсом мала, чтобы выполнить такую работу.
Здесь не рассматриваются вопросы дизайна программ, в отличие от 55Т2, где они присутствуют почти в каждой главе. 55Т2 охватывает как структурное тестирование, так и поведенческое тестированиее. Здесь же обсуждается лишь тестирование поведения. Эта книга также ие может заменить работы «Тестирование программного обеспечения и обеспечение качества» [ВЕ!784] или моей следующей книги «Интеграция и тестирование систем», нал которой сейчас идет работа [ВЕ! Х96]. Там речь идет о системном тестировании и тестировании интеграции систем, а обсуждаемые методы используются для созлания тестов интеграции и тестов систем. В книге «Интеграция и тестирование систем» я буду считать, что вы прочитали эту юшгу и знакомы с соответствующими ьи годами. В данной книге вы не встретите теоретических аспектов тестирования.
Я не буду доказывать теорем и упомяну лишь о немногих. Эта книга для практиков, Тем не монсе, вы можете быть уверены, что все, что имеет под собой прочную теоретическую базу, основано иа этих теоремах. Как следствие моей попытки соответствовать теоретическим нюансам, временами текст, а особенно определения, могут показаться излишне формальными, очень похожими друг от друга и на первый взгляд пе имеющими прямого отношения к вопросу. Если такое случится, то будьте уверены, что в дополнительной литературе ны найдете ответы на свои вопросы, поскольку эта книга полностью согласуется с литературой по данной тематике.
Еще несколько вещей, которые я ие собираюсь здесь делать. Я не собираюсь тратить ваше время, рассуждая, насколько важны тестирование и качество. Если вы еще этого нс знаете, то вам полезнее будет полумать над этим вопросом. Также я не стану распространяться об обеспечении качества, менеджменте, организации, политике, финансах, культуре, становлении программистского это, о том, кто должен тестировать программное обеспечение, надо ли тестировать программное обеспечение, нужны ли цам законы, обеспечивающие качество программного обеспечения, открытых системах, свободно распространяемых программных средствах, проблеме наркотиков или моральном облике современной молодежи. Все это очень интересно.
Я оставляю эти темы вам для обсуждения и исследования. Если же вы хотите освоить методы поведенческого тестирования с ми>шмумом предварительных условий и хлопот, тогда, я надеюсь, эта кшига вас не разочарует. Пропущенные модели 1. Общие положения Этот раздел для читателей, знакомых с литературой по тестированию, в особенности читателей книги Глена Маерса «Искусство тестирования программ» [М г'ЕЯ79]; читателей, которые могут быть озадачены, если я не расскажу о нескольких методах поведенческого тестирования.
В первую очерель о логических моделях. Сначала я поставил себе цель уложиться в 175-страничную книгу. Этот объем вполне подходит для прочтения за один семестр. Одновременно планировалось, что эта книга заменит устаревший шедевр Масрса. Маерс уложился в 191 страницу. Когда я начал писать, для меня стало очсвнлно, что примеры занимают больше места, чем я предполагал. Я добавил некоторые новые технические требования, и это означало, что мне придется включить больше материала, чтобы книга была самодостаточной. Цель «175 страниц» была недостижима, и, тем не менее, мне приходилось постоянно себя ограничивать, сокрашая материал.
Мои технические семинары служили обратной связью для определения тем, которые наиболее интересны людям, Я проводил пх свыше 200 раз на протяжении 10 лег для тысяч тестировшиков. Участники семинара заполняли опросный лист, в котором спрашивалось, какие методы, по их мнени|о, могут быть полезны для них сразу же, а какие могут пригодиться в будушем (скажем через 3-5 лет). Я поддерживаю связь с бывшими студентами и орпш изациями-заказчиками, чтобы определить, какие методы они используют при тестировании. Эта обратная связь лежит в основе данной книги.
2. Маерс. «Искусство тестирования программ» Книга «Искусство тестирования программ» освещает вопросы тестирования так, как их понимали в 1979 году. С тех пор прошло более двух десятилетий, техноло- 2. Маерс. «Искусство тестирования программ» 15 гни тестирования развивались, и читатели не будут удивлены, обнаружив, что техника тестирования тоже изменилась. С одной стороны, сегодня мы знаем о тестировании гораздо больше. С другой стороны, создание подобного обзора потребует сейчас не одной, а целых семи книг: «Инспектирование», «Методы тестирования.», «Тестирование интеграции», «Системное тестирование», «Теория тестирования», «Методы отлалки», «Организация тестирования» и «Менеджмент».
Моя задача существенно уже — введение в технику тестирования. Вот современное описание пяти методов, обсуждаемых Маерсом. 1. Тестирование путем покрытия логики. То, что Маерс называл «тестированием путем покрытия логики», в настоящее время называется тестированием потока управления (глава 3).
Поскольку в данной книге рассматриваются не структурные методы (белого ящика), а лишь поведенческие методы (черного ящика), я остановлюсь лишь на поведенческом тестировании потока управления. 2. Разбиение по эквивалентности. Все методы тестирования, описанные в этой книге, основаны на идее разбиения набора всех возможных входных данных на классы эквивалентности (глава 3).
Это означает, что все они относятся к методам тестирования путем разбиения. Маерс настоятельно советовал читателям исследовать кол и спецификации, а затем на их основе осуществлять разбиение входных данных на эквивалентные классы для тестирования программы. Он также предложил для этого несколько сложных эвристических правил. Это выливается в создание специальных методов для каждой конкретной программы.