Записная книжка тест-дизайнера, часть 4: Анализ |
19.02.2020 01:00 |
Автор: Рикард Эдгрен (Rikard Edgren) Аналитическая [1]часть тест-дизайна отвечает на вопрос, что нам надо протестировать. Это включает идентификацию и изучение различных информационных источников, а также искусство выяснения, что важно или может быть важным. Я хочу остановиться на естественном инстинкте тестировщика, подталкивающем его к разбиению информации о продукте на элементы, которые можно применить в тестировании. Это могут быть детали требований, инсайты от разговора с заказчиком, слоганы с веб-сайта – это длинный список, как мы убедились в предыдущей главе. Кейнер называет это обучением, Майкл Болтон (и Джеймс Бах) в дополнение используют термин "факторинг" – "Факторинг – это процесс анализа объекта, события или модели с целью определить элементы, из которых он состоит[2]". У Эдварда Де Боно есть общая техника латерального мышления – фракционирование, и она явно включает креативный аспект. "Мы не стараемся найти реальные компоненты ситуации – мы стараемся создать эти компоненты[3]". В тестировании эта концепция включает не только математическую факторизацию[4], анализирующую и ищущую точные компоненты целого. В тестировании мы скорее ищем элементы, которые полезны, содержат что-то, что мы хотим протестировать с целью поиска важной информации о продукте. Мы можем создавать необоснованные искусственные разделения, потому что они нам помогают. Если сценарий использования включает Firefox 3.6, мы можем добавить все прочие браузеры и платформы, которые считаем релевантными и нужными для тестирования; мы автоматически думаем о настройках браузеров. Мы добавим то, что мы знаем или думаем, что знаем, используя наше понимание значимых вещей, чтобы эти элементы синтезировались в полезные тест-идеи. Мы также будем искать множество решений, и важно тут не то, что факторы совокупно складываются в информационный источник – важнее тут то, что вы хотите тестировать полезные элементы, и если они друг другу противоречат – это совершенно нормально. Концентрируйтесь не только на том, что важно, но и на том, что может быть важным, или способно генерировать другую важную информацию. Вы должны создавать тесты, достойные тестирования, и типичным примером могут быть ситуации, когда вы не знаете, важно это или нет, но хотите убедиться путем тестирования. Эвристики анализа Анализ широкого и релевантного тестового пространства – это трудный для освоения и оттачивания навык; он связан с пониманием целого, деталей, и значимого. Однако существует множество эвристик [5]и устоявшихся правил, которыми можно пользоваться для усиления взаимосвязанных процессов анализа и дизайна. Вот несколько примеров:
Эта деятельность окружена пониманием того, что значимо. Это очень важно для получения хороших тест-элементов, а выполняя эту деятельность, вы достигнете еще большего понимания. Это позитивная спираль и с толком потраченное время. Невидимый анализ Большую часть времени анализ будет стремительно происходить у вас в голове – вы заметите что-то важное и немедленно среагируете идеей для теста (зафиксированного письменно или выполненного). Это вполне нормально, документированный анализ нужен только там, где требуется ревью этого процесса. Если вы потренируетесь, вы сможете делать это быстрее, а также будете лучше делиться своими мыслями. Креативность очень важна – чем больше вы знаете о продукте и думаете о нем, тем больше элементов и идей у вас появится. Составьте их список, включая всякие безумства – их всегда можно удалить. Как сказал Роберт Сабурин, "Соберите все идеи для тестов, которые можете найти! По моему опыту, лучше сознательно пропустить тест, чем пропустить его, потому что ваше время истекло, или вы просто про него забыли[26]!" Заметки Для себя – но в первую очередь для окружающих – можно писать короткие заметки в ходе выявления важных вещей благодаря разнообразным источникам информации. Это позволит инспектировать процесс, возможно, даже воссоздать его, а еще это мощный инструмент передачи знаний. Вы можете использовать кодирование – к примеру, описать тэги – во всех ваших релевантных документах, чтобы иметь возможность вернуться к ним и перекомбинировать информацию[27]. Типичные области, для которых подходят (и многим полезны) периодически обновляемые заметки:
Возможно, вы сможете уговорить аналитика требований делиться заметками, чтобы получить детали и стремления, которые нельзя выразить в формате требований. Сделайте пользователей более живыми; когда требования формулируются словами, теряется много информации.
[1] Анализ можно также назвать факторингом, потому что анализ в тестировании = Факторинг + Латеральное мышление + Понимание, что важно + Множество решений. [2] Майкл Болтон, презентация Confirmation Bias, http://www.developsense.com/presentations/2010-04-ConfirmationBias.pdf [3] Страница 135 в книге Эдварда Де Боно Lateral Thinking - Creativity Step by Step, Harper & Row, New York 1990 Perennial edition [4] Wikipedia: Factorization, http://en.wikipedia.org/wiki/Factorization [5] Широкое определение эвристик включает что угодно, помогающее вам решить проблему – к примеру, каждый элемент в чеклистах в этой книге – это эвристика. Тут я фокусируюсь на способах размышления об аналитической части вашего тест-дизайна. [6] Эвристика Баха/Болтона для критического мышления в курсе Rapid Software Testing, http://www.satisfice.com/rst.pdf [7] Глава 10 в статье Mind your meaning книги Donald C. Gause/Gerald M. Weinberg, Are Your Lights On? How to Figure Out What the Problem REALLY Is, Dorset House Publishing Co. 1990 (впервые опубликовано в 1982) [8] "Вопросы вне контекста" перечислены в книге Exploring Requirements (Gause/ Weinberg), и у Майкла Болтона есть статья Context-Free Questions for Testing на http://www.developsense.com/blog/2010/11/context-free-questions-for-testing/ [9] Слайды 73-78 в презентации Кема Кейнера Developing Skills as an Exploratory Tester, Quality Assurance Institute Worldwide Annual Software Testing Conference, Orlando, FL, November 2006, http://www.kaner.com/pdfs/ExploratorySkillsQAI2007.pdf [10] Эвристика "Если только не" описана Майклом Болтоном, http://www.developsense.com/blog/2007/03/white-glove-heuristic-and-unless/ [11] Понимайте "пользователя" в широком смысле, если хотите найти проблемы в областях вроде поддерживаемости, тестируемости и ремонтопригодности. [12] Эдвард Де Боно - Lateral Thinking - Creativity Step by Step, 1990 Perennial edition [13] Элизабет Хендриксон, Test Heuristics Cheat Sheet, http://testobsessed.com/wp-content/uploads/2011/04/testheuristicscheatsheetv1.pdf [14] Майкл Хантер, Это еще не конец [15] Приложение А, Common Types of Errors Cem Kaner, Jack Falk, и Hung Q. Nguyen, Testing Computer Software, Second Edition, John Wiley & Sons, Inc., New York 1999. Доступно по адресу http://www.testingeducation.org/BBST/testdesign/Kaner_Common_Software_Errors.pdf [16] Роберт Сабурин, 10 Sources of Testing Ideas, http://www.amibugshare.com/articles/Article_10_Sources_of_Testing_Ideas.pdf [17] Воркшоп Кема Кейнера и Джеймса Баха, Risk-Based Testing: Some Basic Concepts, QAI Managers Workshop, QUEST Conference, Chicago 2008, http://www.kaner.com/pdfs/QAIRiskBasics.pdf [18] Много хороших примеров в статье Джеймса Баха и Майкла Болтона, Exploratory Testing Dynamics v2.2, http://www.satisfice.com/blog/wp-content/uploads/2009/10/et-dynamics22.pdf [19] Эвристика Баха/Болтона для критического мышления в курсе Rapid Software Testing, http://www.satisfice.com/rst.pdf [20] Страницы 100-103 в книге Джеймса Баха Secrets of a Buccaneer-Scholar, Scribner, New York 2009 [21] Оригинальная цитата Румсфельда: "Есть известные известные. Есть вещи, про которые мы знаем, что мы их знаем. Мы также знаем, что есть известные неизвестные, то есть мы знаем, что есть вещи, которые мы не знаем. Но есть и неизвестные неизвестные – мы не знаем, что мы о них не знаем". [22] Хороший пример: "Одна техника – проверка единичных переменных и их комбинаций на граничных значениях – часто хорошо применяется в юнит-тестах и низкоуровневых интеграционных тестах. Они гораздо эффективнее системных тестов. Если разработчик тестирует именно таким образом, системные тестировщики должны концентрироваться на других рисках и других техниках" – Кем Кейнер, статья в блоге Updating some core concepts in software testing, http://www.satisfice.com/kaner/?p=11 [23] Хорошее руководство – раздел Project Environment section в статье Джеймса Баха, Heuristic Test Strategy Model, http://www.satisfice.com/tools/satisfice-tsm-4p.pdf [24] Майкл Болтон, Test Framing, http://www.developsense.com/resources/TestFraming.pdf [25] Алан Ричардсон, статья в блоге Challenge your assumptions and presuppositions to identify useful variation, http://www.eviltester.com/index.php/2008/04/18/challenge-your-assumptions-and-presuppositions-to-identify-useful-variation/ [26] Роберт Сабурин, Just-in-time testing, EuroSTAR 2010, http://www.amibugshare.com/courses/Course_Just_In_Time_Testing.zip [27] Если вы хотите углубиться в вопрос, попробуйте пробную версию инструмента качественного анализа Atlas.ti. Вы можете использовать любой текстовый инструмент с функциями поиска, вики или блога. |