Тестирование приложений. Обеспечения Базовый курс (3е издание) Версия книги 15 от 31. 03. 2022
Скачать 5.07 Mb.
|
Тестирование программного обеспечения Базовый курс (3- е издание) Версия книги 3.0.15 от 31.03.2022 Тестирование программного о беспечения. Базовый курс. Тестирование программного обеспечения. Базовый курс. Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 2/298 Содержание ПРЕДИСЛОВИЕ ОТ АВТОРА, ИЛИ ЗАЧЕМ НУЖНА ЭТА КНИГА ......................................................... 4 РАЗДЕЛ 1: ТЕСТИРОВАНИЕ И ТЕСТИРОВЩИКИ ................................................................................. 6 1.1. ЧТО ТАКОЕ ТЕСТИРОВАНИЕ И ОТКУДА ОНО ПОЯВИЛОСЬ .................................................. 6 1.2. КТО ТАКОЙ ТЕСТИРОВЩИК И ЧТО ОН ДЕЛАЕТ ....................................................................... 9 1.3. ЧТО НУЖНО ЗНАТЬ И УМЕТЬ И ЧЕМУ МОЖНО НАУЧИТЬСЯ ............................................... 12 1.4. МИФЫ И ЗАБЛУЖДЕНИЯ О ТЕСТИРОВАНИИ ......................................................................... 16 РАЗДЕЛ 2: ОСНОВНЫЕ ЗНАНИЯ И УМЕНИЯ ...................................................................................... 18 2.1. ПРОЦЕССЫ ТЕСТИРОВАНИЯ И РАЗРАБОТКИ ПО ................................................................. 18 2.1.1. Модели разработки ПО.................................................................................................... 18 2.1.2. Жизненный цикл тестирования ................................................................................... 27 2.2. ТЕСТИРОВАНИЕ ДОКУМЕНТАЦИИ И ТРЕБОВАНИЙ .............................................................. 29 2.2.1. Что такое «требование» ............................................................................................... 29 2.2.2. Важность требований .................................................................................................... 30 2.2.3. Источники и пути выявления требований ............................................................... 34 2.2.4. Уровни и типы требований ........................................................................................... 36 2.2.5. Свойства качественных требований ......................................................................... 41 2.2.6. Техники тестирования требований ............................................................................ 48 2.2.7. Пример анализа и тестирования требований .......................................................... 51 2.2.8. Типичные ошибки при анализе и тестировании требований ............................... 60 2.3. ВИДЫ И НАПРАВЛЕНИЯ ТЕСТИРОВАНИЯ .............................................................................. 64 2.3.1. Упрощённая классификация тестирования .............................................................. 64 2.3.2. Подробная классификация тестирования ................................................................. 66 2.3.2.1. Схема классификации тестирования.......................................................................... 66 2.3.2.2. Классификация по запуску кода на исполнение ........................................................ 70 2.3.2.3. Классификация по доступу к коду и архитектуре приложения ................................. 70 2.3.2.4. Классификация по степени автоматизации ............................................................... 72 2.3.2.5. Классификация по уровню детализации приложения (по уровню тестирования) . 74 2.3.2.6. Классификация по (убыванию) степени важности тестируемых функций (по уровню функционального тестирования) ..................................................................................... 76 2.3.2.7. Классификация по принципам работы с приложением ............................................ 79 2.3.2.8. Классификация по природе приложения ................................................................... 80 2.3.2.9. Классификация по фокусировке на уровне архитектуры приложения .................... 80 2.3.2.10. Классификация по привлечению конечных пользователей ..................................... 81 2.3.2.11. Классификация по степени формализации ............................................................... 81 2.3.2.12. Классификация по целям и задачам .......................................................................... 82 2.3.2.13. Классификация по техникам и подходам ................................................................... 90 2.3.2.14. Классификация по моменту выполнения (хронологии) ............................................ 98 2.3.3. Альтернативные и дополнительные классификации тестирования ............ 100 2.3.4. Классификация по принадлежности к тестированию по методу белого и чёрного ящиков .............................................................................................................................. 107 2.4. ЧЕК-ЛИСТЫ, ТЕСТ-КЕЙСЫ, НАБОРЫ ТЕСТ-КЕЙСОВ .......................................................... 112 2.4.1. Чек-лист ............................................................................................................................ 112 2.4.2. Тест-кейс и его жизненный цикл ................................................................................. 117 2.4.3. Атрибуты (поля) тест-кейса ..................................................................................... 121 2.4.4. Инструментальные средства управления тестированием .............................. 127 2.4.5. Свойства качественных тест-кейсов ..................................................................... 133 2.4.6. Наборы тест-кейсов ..................................................................................................... 143 2.4.7. Логика создания эффективных проверок ................................................................ 149 2.4.8. Типичные ошибки при разработке чек-листов, тест-кейсов и наборов тест- кейсов ............................................................................................................................................. 157 Тестирование программного обеспечения. Базовый курс. Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 3/298 2.5. ОТЧЁТЫ О ДЕФЕКТАХ ............................................................................................................... 164 2.5.1. Ошибки, дефекты, сбои, отказы и т.д. .................................................................... 164 2.5.2. Отчёт о дефекте и его жизненный цикл ................................................................. 167 2.5.3. Атрибуты (поля) отчёта о дефекте ....................................................................... 171 2.5.4. Инструментальные средства управления отчётами о дефектах .................. 181 2.5.5. Свойства качественных отчётов о дефектах ..................................................... 190 2.5.6. Логика создания эффективных отчётов о дефектах ......................................... 195 2.5.7. Типичные ошибки при написании отчётов о дефектах ....................................... 199 2.6. ОЦЕНКА ТРУДОЗАТРАТ, ПЛАНИРОВАНИЕ И ОТЧЁТНОСТЬ .............................................. 205 2.6.1. Планирование и отчётность ...................................................................................... 205 2.6.2. Тест-план и отчёт о результатах тестирования............................................... 208 2.6.3. Оценка трудозатрат .................................................................................................... 225 2.7. ПРИМЕРЫ ИСПОЛЬЗОВАНИЯ РАЗЛИЧНЫХ ТЕХНИК ТЕСТИРОВАНИЯ .......................... 231 2.7.1. Позитивные и негативные тест-кейсы .................................................................. 231 2.7.2. Классы эквивалентности и граничные условия .................................................... 234 2.7.3. Доменное тестирование и комбинации параметров ............................................ 239 2.7.4. Попарное тестирование и поиск комбинаций ......................................................... 242 2.7.5. Исследовательское тестирование ........................................................................... 246 2.7.6. Поиск причин возникновения дефектов ................................................................... 250 РАЗДЕЛ 3: АВТОМАТИЗАЦИЯ ТЕСТИРОВАНИЯ .............................................................................. 254 3.1. ВЫГОДЫ И РИСКИ АВТОМАТИЗАЦИИ ................................................................................... 254 3.1.1. Преимущества и недостатки автоматизации ...................................................... 254 3.1.2. Области применения автоматизации ...................................................................... 258 3.2. ОСОБЕННОСТИ АВТОМАТИЗИРОВАННОГО ТЕСТИРОВАНИЯ .......................................... 261 3.2.1. Необходимые знания и навыки .................................................................................... 261 3.2.2. Особенности тест-кейсов в автоматизации ........................................................ 262 3.2.3. Технологии автоматизации тестирования ........................................................... 266 3.3. АВТОМАТИЗАЦИЯ ВНЕ ПРЯМЫХ ЗАДАЧ ТЕСТИРОВАНИЯ ............................................... 276 РАЗДЕЛ 4: ПРИЛОЖЕНИЯ .................................................................................................................... 277 4.1. КАРЬЕРА ТЕСТИРОВЩИКА ...................................................................................................... 277 4.2. КОММЕНТАРИИ К ЗАДАНИЯМ .................................................................................................. 278 4.3. КОМАНДНЫЕ ФАЙЛЫ ДЛЯ WINDOWS И LINUX, АВТОМАТИЗИРУЮЩИЕ ВЫПОЛНЕНИЕ ДЫМОВОГО ТЕСТИРОВАНИЯ ............................................................................................................. 281 4.4. ПРИМЕР ДАННЫХ ДЛЯ ПОПАРНОГО ТЕСТИРОВАНИЯ ...................................................... 290 4.5. СПИСОК ОСНОВНЫХ ОПРЕДЕЛЕНИЙ .................................................................................... 293 РАЗДЕЛ 5: ЛИЦЕНЗИЯ И РАСПРОСТРАНЕНИЕ ................................................................................ 298 Предисловие от автора, или зачем нужна эта книга Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 4/298 Предисловие от автора, или зачем нужна эта книга Выражаю огромную благодарность коллегам из EPAM Software Testing Division за ценные замечания и рекомендации в процессе подготовки материала. Особую благодарность выражаю тем тысячам читателей, которые присылали вопросы, пожелания, замечания — благодаря вашему вкладу книга стала лучше. В основу этой книги положен пятнадцатилетний опыт проведения тренингов для тестировщиков. За это время накопилась огромная коллекция вопросов от слу- шателей, и стали отчётливо видны типичные для многих начинающих проблемы и сложности. Представляется разумным обобщить этот материал в виде книги, кото- рая поможет начинающим тестировщикам быстрее погрузиться в профессию и из- бежать многих досадных ошибок. С момента выхода первого и второго изданий в книгу было внесено множе- ство правок, основанных на отзывах читателей и переосмыслении автором отдель- ных идей и формулировок. Благодаря вопросам читателей и дискуссиям на тренин- гах удалось уточнить и сгладить спорные моменты, прояснить определения и дать пояснения там, где это оказалось необходимым. Идеал недостижим, но хочется ве- рить, что в его направлении был сделан большой шаг. Эта книга не ставит своей задачей полноценное раскрытие всей предметной области со всеми её нюансами, потому не воспринимайте её как учебник или спра- вочник — за десятилетия развития тестирование накопило такой объём данных, что для его формального представления не хватит и десятка книг. Также прочтения лишь этой одной книги вовсе не достаточно, чтобы стать «гуру тестирования». Тогда зачем же нужна эта книга!? Во-первых, эту книгу стоит прочитать, если вы твёрдо решили заниматься тестированием, — она будет полезна как «совсем начинающим», так и имеющим некоторый опыт в тестировании. Во-вторых, эту книгу можно и нужно использовать как опорный материал во время тренингов. Здесь можно и нужно много чёркать, дописывать, отмечать непо- нятное, записывать вопросы и т.д. В-третьих, эта книга — своего рода «карта», в которой есть ссылки на мно- жество внешних источников информации (которые могут оказаться полезными даже опытным тестировщикам), а также много примеров с пояснениями. Прежде чем мы приступим к изучению основного материала, давайте опре- делимся с условными обозначениями: Определения и иная важная для запоминания информация. Часто будет встречаться рядом со следующим знаком. Дополнительные сведения или отсылка к соответствующим источникам. Всё то, что полезно знать. При этом оригинальные (англоязычные) опре- деления будут приведены в сносках. Предостережения и частые ошибки. Недостаточно показать, «как пра- вильно», часто большую пользу приносят примеры того, как поступать не стоит. Задания для самостоятельной проработки. Настоятельно рекомендуется выполнять их (даже если вам кажется, что всё очень просто). В приложении {278} есть комментарии ко многим заданиям, но не спешите туда заглядывать — сначала поработайте самостоятельно. Предисловие от автора, или зачем нужна эта книга Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 5/298 В тексте вы встретите два вида сносок в виде чисел: если число не взято в фигурные скобки 12345 — это обычная сноска, которую нужно искать внизу страницы; если число взято в фигурные скобки {12345} — оно представляет собой номер стра- ницы, где представлены дополнительные сведения (в электронной версии книги та- кая сноска является ссылкой). В дополнение к тексту данной книги рекомендуется пройти бесплатный он- лайн-курс , содержащий серию видео-уроков, тестов и заданий для самоподготовки. Напоследок: ничто в этой книге не является догмой, к любому термину вы можете найти альтернативное определение, к любой рекомендации — контраргу- менты. И это нормально. Со временем вы станете понимать контекст ситуации и применимость (полезность!) той или иной информации. Итак, приступим! Раздел 1: тестирование и тестировщики Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 6/298 Раздел 1: тестирование и тестировщики 1.1. Что такое тестирование и откуда оно появилось В первую очередь дадим определение тестирования ПО, чтобы чётче пони- мать, о чём пойдёт речь. Тестирование программного обеспечения — процесс анализа про- граммного средства и сопутствующей документации с целью выявления дефектов и повышения качества продукта. В глоссарии ISTQB 1 нет термина «тестирование ПО», который широко ис- пользуется в русском языке. Там есть лишь термин «тестирование (testing 2 ) ». На протяжении десятилетий развития разработки ПО к вопросам тестирова- ния и обеспечения качества подходили очень и очень по-разному. Можно выделить несколько основных «эпох тестирования». В 50–60-х годах прошлого века процесс тестирования был предельно фор- мализован, отделён от процесса непосредственной разработки ПО и «математизи- рован». Фактически тестирование представляло собой скорее отладку программ (debugging 3 ) . Существовала концепция т.н. «исчерпывающего тестирования (exhaustive testing 4 ) » — проверки всех возможных путей выполнения кода со всеми возможными входными данными. Но очень скоро было выяснено, что исчерпываю- щее тестирование невозможно, т.к. количество возможных путей и входных данных очень велико, а также при таком подходе сложно найти проблемы в документации. Задание 1.1.a: представьте, что ваша программа по трём введённым це- лым числам определяет, может ли существовать треугольник с такими длинами сторон. Допустим, что ваша программа выполняется в некоей изолированной идеальной среде, и вам всего-то осталось проверить кор- ректность её работы на трёх 8-байтовых знаковых целых числах. Вы ис- пользуете автоматизацию, и компьютер может провести 100 миллионов проверок в секунду. Сколько займёт проверка всех вариантов? А задумались ли вы, как подготовить для этого теста проверочные данные (на основе которых можно определить, верно ли сработала программа в каждом конкретном случае)? В 70-х годах фактически родились две фундаментальные идеи тестирова- ния: тестирование сначала рассматривалось как процесс доказательства работо- способности программы в некоторых заданных условиях (positive testing 5 ) , а затем — строго наоборот: как процесс доказательства неработоспособности программы в некоторых заданных условиях (negative testing 6 ) . Это внутреннее противоречие не только не исчезло со временем, но и в наши дни многими авторами совершенно справедливо отмечается как две взаимодополняющие цели тестирования. 1 International Software Testing Qualifications Board Glossary. [ http://www.istqb.org/downloads/glossary.html ] 2 Testing. The process consisting of all lifecycle activities, both static and dynamic, concerned with planning, preparation and evalu- ation of software products and related work products to determine that they satisfy specified requirements, to demonstrate that they are fit for purpose and to detect defects. [ISTQB Glossary] 3 Debugging. The process of finding, analyzing and removing the causes of failures in software. [ISTQB Glossary] 4 Complete testing, exhaustive testing. A test approach in which the test suite comprises all combinations of input values and preconditions. [ISTQB Glossary] 5 Positive Testing. Testing aimed at showing software works. Also known as «test to pass». [ aptest.com ] 6 Negative testing. Testing aimed at showing software does not work. Also known as «test to fail». [ aptest.com ] Что такое тестирование и откуда оно появилось Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 7/298 Отметим, что «процесс доказательства неработоспособности про- граммы» ценится чуть больше, т.к. не позволяет закрывать глаза на обнаруженные проблемы. Внимание! Скорее всего, именно из этих рассуждений проистекает невер- ное понимание того, что негативные тест-кейсы должны заканчиваться возникновением сбоев и отказов в приложении. Нет, это не так. Негатив- ные тест-кейсы пытаются вызвать сбои и отказы, но корректно работаю- щее приложение выдерживает это испытание и продолжает работать верно. Также отметим, что ожидаемым результатом негативных тест-кей- сов является именно корректное поведение приложения, а сами негатив- ные тест-кейсы считаются пройденными успешно, если им не удалось «поломать» приложение. (См. подробности в главе «Чек-листы, тест- кейсы, наборы тест-кейсов» {112} ). Много «классики тестирования» можно почерпнуть из книги «Искусство те- стирования программ» Гленфорда Майерса (издания 1979, 2004, 2011 го- дов). Однако большинство критиков отмечает, что эта книга мало подхо- дит для начинающих и куда больше ориентирована на программистов, чем на тестировщиков. Что, впрочем, не умаляет её ценности. В ориги- нале книга называется «The art of software testing» (Glenford J. Myers). Итак, ещё раз самое важное, что тестирование «приобрело» в 70-е годы: • тестирование позволяет удостовериться, что программа соответствует тре- бованиям; • тестирование позволяет определить условия, при которых программа ведёт себя некорректно. В 80-х годах произошло ключевое изменение места тестирования в разра- ботке ПО: вместо одной из финальных стадий создания проекта тестирование стало применяться на протяжении всего цикла разработки (software lifecycle 7 ) (также см. описание итерационной инкрементальной модели разработки ПО в главе «Модели разработки ПО» {18} ), что позволило в очень многих случаях не только быстро обнаруживать и устранять проблемы, но даже предсказывать и предотвра- щать их появление. В этот же период времени отмечено бурное развитие и формализация мето- дологий тестирования и появление первых элементарных попыток автоматизиро- вать тестирование. В 90-х годах произошёл переход от тестирования как такового к более все- объемлющему процессу, который называется «обеспечение качества (quality assur- ance 8 ) », охватывает весь цикл разработки ПО и затрагивает процессы планирова- ния, проектирования, создания и выполнения тест-кейсов, поддержку имеющихся тест-кейсов и тестовых окружений. Тестирование вышло на качественно новый уро- вень, который естественным образом привёл к дальнейшему развитию методоло- гий, появлению достаточно мощных инструментов управления процессом тестиро- вания и инструментальных средств автоматизации тестирования, уже вполне похо- жих на своих нынешних потомков. 7 Software lifecycle. The period of time that begins when a software product is conceived and ends when the software is no longer available for use. The software lifecycle typically includes a concept phase, requirements phase, design phase, implementation phase, test phase, installation and checkout phase, operation and maintenance phase, and sometimes, retirement phase. Note these phases may overlap or be performed iteratively. [ISTQB Glossary] 8 Quality assurance. Part of quality management focused on providing confidence that quality requirements will be fulfilled. [ISTQB Glossary] Что такое тестирование и откуда оно появилось Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 8/298 Хорошим источником дополнительной информации о процессах тестиро- вания является книга Рекса Блэка «Ключевые процессы тестирования» ( «Critical Testing Processes», Rex Black). В нулевые годы нынешнего века развитие тестирования продолжалось в контексте поиска всё новых и новых путей, методологий, техник и подходов к обес- печению качества. Серьёзное влияние на понимание тестирования оказало появ- ление гибких методологий разработки и таких подходов, как «разработка под управ- лением тестированием 9 (test-driven development 10 , TDD )». Автоматизация тестиро- вания уже воспринималась как обычная неотъемлемая часть большинства проек- тов, а также стали популярны идеи о том, что во главу процесса тестирования сле- дует ставить не соответствие программы требованиям, а её способность предоста- вить конечному пользователю возможность эффективно решать свои задачи. О современном этапе развития тестирования мы будем говорить на протя- жении всего остального материала. Если же отметить вкратце основные характе- ристики, то получится примерно такой список: гибкие методологии и гибкое тести- рование, глубокая интеграция с процессом разработки, широкое использование ав- томатизации, колоссальный набор технологий и инструментальных средств, кросс- функциональность команды (когда тестировщик и программист во многом могут вы- полнять работу друг друга). Воистину подробнейшую историю развития тестирования ПО (начиная с 1822 года, не шутка) можно найти в статье «The History of Software Test- ing » 11 на ресурсе «Testing References». Также немалый интерес представ- ляет статья «The Growth of Software Testing» 12 (David Gelperin, Bill Hetzel). Задание 1.1.b: если вам не очень хорошо знакомы такие понятия как TDD, BDD, DDT, KDT, — найдите их описание в Интернете и изучите. Конечно же, это задание относится и к любым другим непонятным терминам. 9 Да, грамматически корректно будет «разработка под управлением тестирования», но традиционно так сложилось, что целый ряд подобных подходов «под управлением…» называют, используя творительный падеж: т.е. «…тестирова- нием», «…данными», «…ключевыми словами» и т.д. 10 Test-driven development. A way of developing software where the test cases are developed, and often automated, before the software is developed to run those test cases. [ISTQB Glossary] 11 «The History of Software Testing» [ http://www.testingreferences.com/testinghistory.php ] 12 «The Growth of Software Testing», David Gelperin, Bill Hetzel [ https://www.researchgate.net/publica- tion/234808293_The_growth_of_software_testing ] Кто такой тестировщик и что он делает Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 9/298 1.2. Кто такой тестировщик и что он делает Если поискать информацию по ключевым фразам из названия этой главы, можно найти уйму совершенно противоречивых ответов. И дело здесь в первую очередь в том, что авторы большинства «должностных обязанностей» приписы- вают всей профессии некий утрированный набор характеристик отдельных её пред- ставителей. В то же время даже в ЕКСД разделены должности «специалиста по тестиро- ванию программного обеспечения» и «тестировщика программного обеспечения». Если вам интересно, почитайте документ «Постановление Министерства труда и социальной защиты Республики Беларусь № 148 от 15 декабря 2009 г. О внесении изменений и дополнений в выпуск 1 Единого квалифи- кационного справочника должностей служащих (ЕКСД)». Теперь вернёмся к исходному вопросу и посмотрим на него с двух точек зре- ния: какова квалификация тестировщика, и где он работает. Упрощённо отразим это в таблице 1.2.a. Таблица 1.2.a — Типичные виды деятельности тестировщика. Небольшие фирмы Большие фирмы Низкая квалификация Подмастерье, часто предо- ставленный сам себе в реше- нии задач. Рядовой участник проектов, одновременно проходящий интенсивное повышение ква- лификации. Высокая квалификация Мастер на все руки с богатым, но не всегда структурирован- ным опытом. Эксперт в одной или несколь- ких областях, консультант, ру- ководитель направления. Поскольку чем выше квалификация специалиста {277} , тем шире его выбор мест работы (даже в рамках одной крупной фирмы), основное внимание уделим именно квалификационным особенностям работы тестировщика. В начале карьеры любой специалист (и тестировщик не является исключе- нием) является исполнителем и учеником. Достаточно хорошо понимать, что такое тест-кейсы, отчёты о дефектах, уметь читать требования, пользоваться парой ин- струментальных средств и хорошо уживаться в команде. Постепенно тестировщик начинает погружаться во все стадии разработки проекта, понимая их всё полнее и полнее, начинает не только активно использо- вать, но и разрабатывать проектную документацию, принимать всё более ответ- ственные решения. Если выразить образно главную цель тестировщика, то она будет звучать так: «понимать, что в настоящий момент необходимо проекту, получает ли проект это необходимое в должной мере, и, если нет, как изменить ситуацию к лучшему». Звучит похоже на цель руководителя проекта, верно? Верно. Начиная с некоторого уровня развития, IT-специалисты, по большому счёту, различаются лишь наборами технических навыков и основной областью приложения этих навыков. Так какие же технические навыки нужны, чтобы успешно начать работать те- стировщиком? Прежде чем приступить к самому перечислению, оговорим особо: этот список рассчитан в первую очередь на тех, кто приходит в тестирование из нетехнических профессий (хотя часто его же приходится озвучивать и студентам технических вузов). Кто такой тестировщик и что он делает Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 10/298 0) Знание иностранных языков. Да, это нетехнический навык. Но тем не ме- нее он идёт под номером «ноль». Можете считать это аксиомой: «нет зна- ния английского — нет карьеры в IT». Другие иностранные языки тоже приветствуются, но английский первичен. Задание 1.2.a: если вы сомневаетесь в том, достаточен ли ваш уровень английского, проверьте себя: если вы можете без труда читать технические статьи хотя бы в Википедии, мини- мально достаточный уровень у вас есть. 1) Уверенное владение компьютером на уровне по-настоящему продвину- того пользователя и желание постоянно развиваться в этой области. Мо- жете ли вы представить себе профессионального повара, который не мо- жет пожарить картошку (не «не обязан», а «не умеет в принципе»)? Вы- глядит странно? Не менее странно выглядит «IT’шник» (именно так, в ка- вычках), неспособный набрать вменяемо отформатированный текст, ско- пировать файл по сети, развернуть виртуальную машину или выполнить любое иное повседневное рутинное действие. 2) Программирование. Оно на порядки упрощает жизнь любому IT’шнику — и тестировщику в первую очередь. Можно ли тестировать без знания про- граммирования? Да, можно. Можно ли это делать по-настоящему хо- рошо? Нет. И сейчас самый главный (почти религиозно-философский) вопрос: какой язык программирования изучать? C/C++/C#, Java, PHP, Ja- vaScript, Python, Ruby и т.д. — начинайте с того, на чём написан ваш про- ект. Если проекта пока ещё нет, начинайте с JavaScript (на текущий мо- мент — самое универсальное решение). 3) Базы данных и язык SQL. Здесь от тестировщика тоже не требуется ква- лификация на уровне узких специалистов, но минимальные навыки ра- боты с наиболее распространёнными СУБД и умение писать простые за- просы можно считать обязательными. 4) Понимание принципов работы сетей и операционных систем. Хотя бы на минимальном уровне, позволяющем провести диагностику проблемы и решить её своими силами, если это возможно. 5) Понимание принципов работы веб-приложений и мобильных приложе- ний. В наши дни почти всё пишется именно в виде таких приложений, и понимание соответствующих технологий становится обязательным для эффективного тестирования. Надеюсь, вы обратили внимание на то, что самого тестирования в списке нет. Всё верно, ведь ему посвящена вся эта книга целиком, так что позволим себе не копировать её сюда. В завершение главы также отметим личностные качества, позволяющие те- стировщику быстрее стать отличным специалистом: 1) повышенная ответственность и исполнительность; 2) хорошие коммуникативные навыки, способность ясно, быстро, чётко вы- ражать свои мысли; 3) терпение, усидчивость, внимательность к деталям, наблюдательность; 4) хорошее абстрактное и аналитическое мышление; 5) способность ставить нестандартные эксперименты, склонность к иссле- довательской деятельности. Кто такой тестировщик и что он делает Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 11/298 Да, сложно найти человека, который бы в равной мере обладал всеми пере- численными качествами, но всегда полезно иметь некий ориентир для саморазви- тия. Очень часто можно услышать вопрос о том, обязательно ли тестировщику иметь техническое высшее образование. Не обязательно. Хотя при его наличии на первых этапах карьеры, конечно, легче. Но со временем раз- ница между теми, у кого такое образование есть, и теми, у кого нет, стано- вится практически незаметной. Что нужно знать и уметь и чему можно научиться Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 12/298 1.3. Что нужно знать и уметь и чему можно научиться В предыдущей главе мы осознанно не обсуждали конкретный перечень не- обходимых начинающему тестировщику знаний и умений, т.к. он заслуживает от- дельного рассмотрения. Показанные ниже данные представляют собой адаптированную выжимку из карты компетенций тестировщика. Все навыки здесь условно разделены на три группы: • Профессиональные — это именно «тестировщицкие», ключевые навыки, от- личающие тестировщика от других IT-специалистов. • Технические — это общие навыки в области IT, которыми тем не менее дол- жен обладать и тестировщик. • Личностные — в русском языке термин «soft skills» часто переводят как «навыки межличностного общения», но исходный термин несколько шире. Задание 1.3.a: в процессе чтения приведённых здесь перечней компетен- ций отмечайте непонятные вещи, ищите дополнительную информацию и добивайтесь у себя понимания описанного хотя бы на уровне «знаю, о чём идёт речь». Профессиональные навыки Таблица 1.3.a — Профессиональные навыки тестировщика Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Процессы тестирования и разработки программного обеспечения Процесс тестиро- вания ПО Этому вопросу по- священа глава «Процессы тестиро- вания и разработки ПО» {18} Глубокое понимание стадий процесса тестирова- ния, их взаимосвязи и взаимовлияния, умение планировать собственную работу в рамках полу- ченного задания в зависимости от стадии тестиро- вания Процесс разра- ботки ПО Общее понимание моделей разработки ПО, их связи с тестированием, умение расставлять прио- ритеты в собственной работе в зависимости от стадии развития проекта Работа с документацией Анализ требова- ний Этому вопросу по- священа глава «Те- стирование доку- ментации и требо- ваний» {29} Умение определять взаимосвязи и взаимозависи- мость между различными уровнями и формами представления требований, умение формулиро- вать вопросы с целью уточнения неясных момен- тов Тестирование требований Знание свойств хороших требований и наборов требований, умение анализировать требования с целью выявления их недостатков, умение устра- нять недостатки в требованиях, умение применять техники повышения качества требований Управление тре- бованиями Не требуется Общее понимание процессов выявления, доку- ментирования, анализа и модификации требова- ний Бизнес-анализ Общее понимание процессов выявления и доку- ментирования различных уровней и форм пред- ставления требований Что нужно знать и уметь и чему можно научиться Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 13/298 Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Оценка и планирование Создание плана тестирования Эти вопросы ча- стично затронуты в главе «Оценка тру- дозатрат, планиро- вание и отчёт- ность» {205} , но их глубокое понимание требует отдельного длительного изуче- ния Общее понимание принципов планирования в кон- тексте тестирования, умение использовать гото- вый тест-план для планирования собственной ра- боты Создание страте- гии тестирования Общее понимание принципов построения страте- гии тестирования, умение использовать готовую стратегию для планирования собственной работы Оценка трудоза- трат Общее понимание принципов оценки трудозатрат, умение оценивать собственные трудозатраты при планировании собственной работы Работа с тест-кейсами Создание чек-ли- стов Этому вопросу по- священа глава «Чек-листы, тест- кейсы, наборы тест- кейсов» {112} Твёрдое умение использовать техники и подходы к проектированию тестовых испытаний, умение декомпозировать тестируемые объекты и постав- ленные задачи, умение создавать чек-листы Создание тест- кейсов Твёрдое умение оформлять тест-кейсы согласно принятым шаблонам, умение анализировать гото- вые тест-кейсы, обнаруживать и устранять имею- щиеся в них недостатки Управление тест- кейсами Не требуется Общее понимание процессов создания, модифи- кации и повышения качества тест-кейсов Методологии тестирования Функциональное и доменное тести- рование Этому вопросу по- священа глава «По- дробная классифи- кация тестирова- ния» {66} Знание видов тестирования, твёрдое умение ис- пользовать техники и подходы к проектированию тестовых испытаний, умение создавать чек-листы и тест-кейсы, умение создавать отчёты о дефек- тах Тестирование ин- терфейса пользо- вателя Не требуется Умение проводить тестирование интерфейса пользователя на основе готовых тестовых сцена- риев или в рамках исследовательского тестирова- ния Исследователь- ское тестирова- ние Общее умение использовать матрицы для быст- рого определения сценариев тестирования, об- щее умение проводить новые тесты на основе ре- зультатов только что выполненных Интеграционное тестирование Умение проводить интеграционное тестирование на основе готовых тестовых сценариев Локализационное тестирование Умение проводить локализационное тестирование на основе готовых тестовых сценариев Инсталляционное тестирование Умение проводить инсталляционное тестирование на основе готовых тестовых сценариев Регрессионное те- стирование Общее понимание принципов организации регрес- сионного тестирования, умение проводить регрес- сионное тестирование по готовым планам Работа с отчётами о дефектах Создание отчётов о дефектах Этому вопросу по- священа глава «От- чёты о дефек- тах» {164} Твёрдое знание жизненного цикла отчёта об ошибке, твёрдое умение создавать отчёты о де- фектах согласно принятым шаблонам, умение анализировать готовые отчёты, обнаруживать и устранять имеющиеся в них недостатки Анализ причин возникновения ошибки Не требуется Базовое умение исследовать приложение с целью выявления источника (причины) ошибки, элемен- тарное умение формировать рекомендации по устранению ошибки Использование баг-трекинговых систем Умение использовать баг-трекинговые системы на всех стадиях жизненного цикла отчётов о дефек- тах Что нужно знать и уметь и чему можно научиться Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 14/298 Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Работа с отчётами о результатах тестирования Создание отчётов о результатах те- стирования Не требуется, но частично рассмот- рено в главе «Оценка трудоза- трат, планирование и отчётность» {205} Умение предоставлять необходимую информацию для формирования отчёта о результатах тестиро- вания, умение анализировать готовые отчёты о результатах тестирования с целью уточнения пла- нирования собственной работы Технические навыки Таблица 1.3.b — Технические навыки тестировщика. Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Операционные системы Windows Использование на уровне уверенного пользователя Установка, использование и администрирование, решение проблем, конфигурирование с целью настройки тестового окружения и выполнения тест-кейсов Linux Общее знакомство Установка, использование и администрирование, решение проблем, конфигурирование с целью настройки тестового окружения и выполнения тест-кейсов Mac OS Не требуется Общее знакомство Виртуальные ма- шины Использование на уровне начинаю- щего пользователя Установка, использование и администрирование, решение проблем, конфигурирование с целью настройки тестового окружения и выполнения тест-кейсов Базы данных Реляционная тео- рия Не требуется Общее понимание, умение читать и понимать схемы баз данных в общепринятых графических нотациях 13 Реляционные СУБД Умение устанавливать, настраивать и использо- вать для настройки тестового окружения и выпол- нения тест-кейсов Язык SQL Умение писать и выполнять простые запросы с использованием инструментальных средств ра- боты с БД/СУБД 14 Компьютерные сети Сетевые прото- колы Не требуется Общее понимание принципов работы стека TCP/IP , умение конфигурировать локальные сете- вые настройки операционной системы Сетевые утилиты Общее понимание и умение использовать ути- литы диагностики состояния и неполадок в сети Веб-технологии Веб-серверы Не требуется Общее понимание принципов работы веб-серве- ров, умение устанавливать и настраивать Серверы прило- жений Общее понимание принципов работы серверов приложений, умение устанавливать и настраивать Веб-сервисы Общее понимание принципов работы веб-серви- сов и способов диагностики неполадок в их ра- боте Языки разметки Общее представле- ние об HTML и CSS Умение использовать HTML и CSS для создания простых страниц 13 «Реляционные базы данных в примерах», Святослав Куликов [ https://svyatoslav.biz/relational_databases_book/ ] 14 «Работа с MySQL, MS SQL Server и Oracle в примерах», Святослав Куликов [ http://svyatoslav.biz/database_book/ ] Что нужно знать и уметь и чему можно научиться Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 15/298 Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Протоколы пере- дачи данных Не требуется Общее понимание принципов работы протоколов прикладного уровня OSI-модели, общее понима- ние принципов диагностики возникших неполадок Языки веб-про- граммирования Начальные знания хотя бы в одном языке про- граммирования, используемом для создания веб- приложений Мобильные платформы и технологии Android Не требуется Использование на уровне начинающего пользова- теля iOS Использование на уровне начинающего пользова- теля Личностные навыки Таблица 1.3.c — Личностные навыки тестировщика. Предметная об- ласть Начальный уро- вень Уровень младшего или среднего специалиста Коммуникативные навыки Деловое исполь- зование e-mail Минимальные навыки Понимание и строгое следование правилам дело- вого общения с использованием e-mail и сервисов мгновенных сообщений Устное деловое общение Минимальные навыки Понимание и строгое следование правилам уст- ного делового общения Прохождение со- беседований Не требуется Начальный опыт прохождения собеседований Навыки самоорганизации Планирование собственного вре- мени Минимальные навыки, общие представления Развитые навыки планирования собственного времени, умение пользоваться соответствую- щими инструментами, умение оценивать трудоза- траты в рамках полученных заданий Отчётность о своей работе Начальные навыки Развитые навыки отчётности о своей работе, уме- ние пользоваться соответствующими инструмен- тами Возможно, вы заметили, что в этом перечне навыков нет отдельного списка, посвящённого автоматизации тестирования. Он не включён в данную книгу по трём причинам: • он огромен; • он постоянно меняется; • эта книга всё же о тестировании вообще, хоть в ней и есть краткие сведения об автоматизации (см. раздел «Автоматизация тестирования» {254} ). Если же сказать в двух словах, то автоматизатор должен знать всё то же, что и «классический» тестировщик, а также уметь программировать на 3–5 языках — хотя бы немного. И всё. Инструменты на начальном уровне можно освоить за не- сколько дней. Мифы и заблуждения о тестировании Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 16/298 1.4. Мифы и заблуждения о тестировании Возможно, здесь вы ожидали прочитать нечто наподобие «Семи бед тести- рования» Джеймса Виттакера (см. ниже). Нет, здесь будут «мифы», которые акту- альны не для состоявшихся профессионалов, а для новичков и тех, кто ещё только собирается обучаться тестированию. Текст этой главы составлен в основном по итогам бесед со слушателями тре- нингов, а если точнее — по фразам, начинающимся с «а я думал(а), что…» или «а правда ли, что…» Обязательно почитайте прекрасный цикл статей «The 7 Plagues of Soft- ware Testing » 15 (James Whittaker). Итак: «А я думал(а), что…» / «А правда ли, что…» Не надо разбираться в компьютерах Без комментариев. Нет, возможно, существуют некие ничтожно малые доли процента деятельности тестировщика, которую можно реализовать «на пальцах». Но этой бесконечно малой величиной можно пренебречь. Обязательно надо хорошо знать программирование Очень больно относить эту мысль к мифам. Хорошо, когда тестировщик знает программирование. Ещё лучше, когда он знает его хорошо. Но даже общих отдалённых представлений о программировании хватает для начала карьеры. А дальше уже — по обстоятельствам. В тестировании всё просто Если развить аналогию, то и в кулинарии всё просто, если мы говорим о за- варивании чая в пакетике. Но как подобным чаем не заканчивается кулинария, так и тестирование не заканчивается случаями «ой, тут вот картинка не загрузилась». Даже на исключительно практическом уровне задачи тестирования могут быть со- поставимы по сложности с задачами проектирования и разработки программ (хм, почему ж нет мифа «программирование — это просто», ведь «Hello, world» напи- сать не тяжело). А если мы посмотрим на «надёжность программного обеспечения» с научной точки зрения, то перспективы роста сложности вообще ничем не ограни- чены. Обязательно ли каждому тестировщику «лезть в эти дебри»? Нет. Но если хочется — можно. К тому же это очень интересно. В тестировании куча рутины и скуки Не больше и не меньше, чем в иных IT-профессиях. Остальное зависит от конкретного тестировщика и того, как он организует свою работу. 15 «The Plague of Aimlessness», James Whittaker [ https://testing.googleblog.com/2009/06/7-plagues-of-software-testing.html ] «The Plague of Repetitiveness», James Whittaker [ http://googletesting.blogspot.com/2009/06/by-james.html ] «The Plague of Amnesia», James Whittaker [ http://googletesting.blogspot.com/2009/07/plague-of-amnesia.html ] «The Plague of Boredom», James Whittaker [ http://googletesting.blogspot.com/2009/07/plague-of-boredom.html ] «The Plague of Homelessness», James Whittaker [ http://googletesting.blogspot.com/2009/07/plague-of-homelessness.html ] «The Plague of Blindness», James Whittaker [ http://googletesting.blogspot.com/2009/07/plague-of-blindness.html ] «The 7th Plague and Beyond», James Whittaker [ http://googletesting.blogspot.com/2009/09/7th-plague-and-beyond.html ] «The Plague of Entropy», James Whittaker [ http://googletesting.blogspot.com/2009/09/plague-of-entropy.html ] Мифы и заблуждения о тестировании Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 17/298 Тестировщика должны всему-всему научить Не должны. И уж тем более «всему-всему». Да, если мы говорим о явно обо- значенном учебном процессе, то его организаторы (будь то предмет в универси- тете, учебный курс в некоем тренинговом центре или отдельный тренинг внутри компании) часто берут на себя определённые «педагогические обязательства». Но подобная учебная деятельность никогда не заменит саморазвития (хотя и может в нужный момент помочь в выборе направления пути). IT-отрасль меняется очень интенсивно и непрерывно. Учиться придётся до пенсии. В тестировщики идут те, кто не смог стать программистом А в скрипачи — те, кто не смог стать пианистом? Я думаю, что некий неболь- шой процент «не ставших программистами» в тестировании есть. Но он теряется на фоне тех, кто шёл в тестирование изначально и сознательно, а также тех, кто пришёл в тестирование из программирования. В тестировании сложно построить карьеру При должном старании карьера в тестировании оказывается едва ли не са- мой динамичной (по сравнению с другими IT-направлениями). Тестирование само по себе — очень бурно развивающаяся отрасль IT, и здесь всегда можно выбрать что-то, что будет вам очень нравиться и хорошо получаться — а в таких условиях стать профессионалом и достичь успеха легко. Тестировщик «виноват во всём», т.е. с него спрос за все ошибки Только если признать, что в болезни пациента виновен термометр, показы- вающий высокую температуру. Скорее с тестировщиков будет спрос за те ошибки, что были найдены пользователем, т.е. проявились уже на стадии реальной эксплу- атации продукта. Но и здесь нет однозначного вывода — за конечный успех про- дукта отвечает вся команда, и было бы глупо перекладывать ответственность лишь на одну её часть. Тестировщики скоро будут не нужны, т.к. всё будет автоматизиро- вано Как только по улицам забегают терминаторы — да, этот миф станет правдой: программы научатся обходиться без людей. Но тогда у нас всех будут другие про- блемы. А если кроме шуток, человечество уже сотни лет идёт по пути автоматиза- ции, которая накладывает свой отпечаток на всю нашу жизнь и чаще всего позво- ляет переложить самую простую и не требующую квалификации работу на машины. Но кто же заставляет вас оставаться на уровне исполнителя такой работы? Начи- ная с некоторого уровня, тестирование превращается в гармоничное сочетание науки и искусства. А многих ли учёных или творцов заменила автоматизация? Просьба: возможно, у вас есть какие-то мысли из разряда «А я думал(а), что в тестировании…» / «А правда ли, что в тестировании…». Если так, поделитесь ими, пожалуйста, в анонимном опросе: http://svyatoslav.biz/software_testing_book_poll/ Раздел 2: основные знания и умения Тестирование программного обеспечения. Базовый курс. © EPAM Systems, 2015–2022 Стр: 18/298 |