Показаны сообщения с ярлыком перевод. Показать все сообщения
Показаны сообщения с ярлыком перевод. Показать все сообщения

26 авг. 2009 г.

Исследовательское тестирование: В поисках музыки исследования ПО

Предисловие от переводчика.
Как и обещал, выкладываю перевод статьи Jonathan Kohl Exploratory Testing: Finding the Music of Software Investigation, от июля 2007. Статья была переопубликована в декабре 2007 журналом Methods and Tools (HTML-вариант). Джонатан дал свое согласие на публикацию перевода, и ему на самом деле очень лестно думать, что его статья теперь доступна и для неанглоговорящих читателей. Перевод совсем сырой, я его даже не перечитывал полностью, элементарно нет времени с ним возиться, поэтому не обессудьте. Остается добавить лишь то, что exploratory я всегда переводил как исследовательский, а если вы встречаете слова разрешение и напряжение и не можете увязать с контекстом, вернитесь к первому абзацу и постарайтесь понять их абстрактный смысл. Термин эвристика можно также трактовать как некая устоявшаяся практика (на мой взгляд это самое близкое по смыслу), но для context driven testing school этот термин достаточно устоявшийся.

Сама статья...
Мой друг Стив незаурядный игрок на классической гитаре. Наблюдение за его игрой вдохновляющее зрелище - он потратил годы на оттачивание сноровки и исключительно мастерски владеет инструментом. Также, Стив может рассказать о технике своей игры, дать несколько уроков и показать ученикам, как усовершенствовать свои умения. Он может петь под гитару и говорит что музыка это напряжение (tension) и разрешение (resolution, см. пояснения в комментариях). Если вся музыка будет напряженная, слушателю станет не по себе. Если будет только разрешаться - то это скучные, утомительные повторения. Стив расширяет эту идею до фактических физических действий, которые гитарист использует для извлечения определенных звуков. К примеру, если вы играете с большим преобладанием напряжения, вы будете ограничены в возможностях выполнить определенные действия. Чтобы играть музыку, вам необходимо найти баланс между напряжением и разрешением, а, чтобы найти этот баланс, вам необходимо сочетание знаний, навыков и творческого подхода.

Как и Стив, мой друг Джеймс Бах тоже исключительно искусен. Он не гитарист, он тестировщик. Джеймс так же вдохновляет, когда демонстрирует свою технику. Он мастер квалифицированного исследовательского тестирования: одновременного проектирования и выполнения тестов и познания (см. прошлую заметку - прим. пер.). Джеймс также может объяснить используемые им техники тестирования чтобы обучить учеников-тестировщиков. Увидев первый раз как он тестирует софт, я сразу вспомнил Стива. Но в этом случае, напряжение и разрешение не было связано с музыкой или техникой игры на музыкальном инструменте. Вместо этого, напряжение и разрешение вращались вокруг идей. Джеймс одновременно разрабатывал и выполнял тесты, основанные на любознательности по отношению к приложению. Все его тесты обладали обратной связью, посредством которой он получал познания для разработки следующего теста. Напряжение происходило от исследования характера его тестов, а разрешение проявлялось в их результатах. Это была музыка взаимодействи ума тестировщика и тестируемого приложения. И это не было неожиданностью; как тестировщик, Джеймс имеет хорошо развитое сочетание знаний, навыков и творческого подхода.

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

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

Эта аналогия музыки и тестирования естественно не совершенна. Музыка пишется для развлекательных целей или как упражнение для других музыкантов. Конечная цель - развлечение слушателей, повышение мастерства, и удовлетворение музыкантов. Тестирование, с другой стороны, проводится не для развлечения, а для получения информации. Как говорит Кем Канер, тестирование это исследовательская деятельность которая предоставляет информацию, связанную с качеством программного обеспечения [2]. Собирая различного рода информацию, мы стремимся иметь возможность к различным интерпретациям и получить способности оценить проблему с разных сторон. В музыке, импровизация может иметь негативный эффект, если используется в неуместном месте или в несоответствующей манере (когда музыкант извлекает неверную ноту, мы замечаем это). В тестировании, исследование и импровизация, даже если выполняются неверно, часто могут привести к замечательным источникам информации. Неуместные импровизации могут быть рискованными при исполнении музыки, но в проектах разработки ПО, случайности или "взятие неверной ноты", может привести к важным открытиям. Кроме того, проекты по разработке ПО стоят лицом перед рисками, и исследовательское тестирование позволяет мгновенно адаптироваться к новым рискам.

На что похоже квалифицированное исследовательское тестирование? Представим сценарное и исследовательское тестирование в действии. Среди прочего, я натыкаюсь на ручной тест и аналогичный автоматический, которые написаны несколько релизов назад. Они были подготовлены для приложения, с которым я плохо знаком, используя технологии, которые я едва знаю. Я никогда не выполнял эти тесты раньше, поэтому я запустил автотест первым, чтобы узнать, что же там тестируется. Он выполняется успешно, но само выполнение и его результаты не предоставляют какой-либо полезной информации, кроме как "тест пройден". По мне, это равносильно получению письма в котором говорится: "Поздравляем! Возможно, вы уже победитель!". Подобного рода заявления несут очень малую смысловую нагрузку.

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

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

Я выполнил другой тест, и свободный от ограничения заранее записанных тестов, заметил нечто, что привлекло мое внимание: приложение стало подтормаживать. Зная, что с течением времени причины некоторых проблем проявляются сильнее, я решил попробовать тест другого рода. Я смог бы проследовать до последней части ручного теста, подождать несколько минут, и досконально проверить систему. Я выполнил этот новый тест и система, как оказалось, стала тормозить ещё сильнее. Сообщения приложения говорили мне, что всё в порядке, однако "тормозное" поведение было симптомом более крупной проблемы, не покрываемой первоначально выполненным тестом.

Заглянув дальше интерфейса пользователя, я обнаружил, что приложение молча сбоило; в то время, как считалось что выполнение транзакции записи в базу данных прошло успешно, на самом деле данные удалялись. Мы каждый раз теряли данный с момента запуска первого теста. Даже если тест казался пройденным, в приложении происходил серьезный сбой. Если бы я прогонял только ручной и авто тесты, проблема оставалась бы незамеченной и привела бы к катастрофическим последствиям при поставке продукта. К тому же, если бы я тратил время, на запись тестов, а затем выполнял их, я бы, скорее всего, упустил возможность, позволившую мне найти источник проблемы. Простое выполнение записанных текстов это всего лишь "разрешение" идеи и не позволяет обнаружить что-либо интересное. С другой стороны, во взаимодействии "разрешения" и "напряжения" идей исследовательского тестирования быстро приводит к важным находкам. Благодаря подобным результатам, я не склонен использовать большое количество методичных, заранее записанных ручных тестов в своей работе.

Как я обнаружил проблему, работающую как часовая мина с которой мог столкнуться заказчик? Я рассматривал тестовые скрипты как они есть: неполноценные источники информации, которые могли бы ограничить мои возможности в получении полезной информации о приложении. Перед, во время и после выполнения я разрабатывал и переделывал тесты основываясь на своих наблюдениях. Также, у меня были плохие предчувствия, когда я запускал текст. Я научился изучать эти предчувствия, а не подавлять их, потому что чувство "напряжения", не включено заранее в скрипт или процесс; часто такое быстрое исследование приводит к важным находкам. Я не позволил скрипту диктовать мне что делать или что называть успешным результатом. Я был уверен, что исследовательское тестирование подтвердит или опровергнет ответы, представленные в записанных тестах.

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

Музыканты используют схожие техники, и могут распознать "the circle of fifth" как эвристику которой надо следовать если они заблудились в своей импровизации. (Это вовсе не гарантирует, что эвристика будет работать или нет. Когда эвристика не подходит, вы просто пробуете другую.) Музыканты стремятся иметь большой набор эвристик и в той же мере используют мнемонику. Как пример - "Every Good Boy Does Fine", который используется для запоминания нот "EGBDF" по аналогии с нотным станом. искус6ные тестировщики используют похожий инструментарий для запоминания тестовых идей и техник.

Меня иногда приглашают как внешнего тестировщика чтобы протестировать почти готовое приложение. Если продукт новый для меня, я использую эвристику "Первое использование". С малым количеством информации о приложении, и используя информацию, доступную только при первом использовании, я начинаю тестирование. Для меня важно знать как можно меньше о приложении, так как если я больше о нем знаю, тем меньше это будет похоже на первое использование.

Чтобы начать тестирование в таких условиях, я часто использую разработанную мной мнемонику "MUTII" (РПЗИР). (Композитор Nicolo Mutii (Коля Рпзир) помогает мне вспоминать это название.) Эта мнемоника помогает мне сохранять логичность в размышлениях о тестировании. Расшифровка мнемоники:

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

Users (пользователи) - реальные пользователи, которые будут использовать приложение. Кто они? Что делают? Какие у них мотивы использовать наш продукт?

Tasks (задачи) - Для решения каких задач пользователь будет использовать продукт? Какие его типичные рабочие задачи?

Information (информация) - Как продукт расскажет мне о задачах которые он автоматизирует и как я смогу выполнить их?

Implementation (реализация) - Легко ли использовать продукт первый раз? Он надежный? Могу ли я легко выполнить свои задачи с учетом дизайна продукта и предоставляемой им информации.

Перед началом тестирования, я собираю информацию о рынке и целевой аудитории. Это позволяет определить рамки тестов, которые я буду разрабатывать для использования продукта первый раз. Если я плохо знаком с рынком и пользователями, я изучаю типовые задачи, которые приходится выполнять пользователям.

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


Рисунок 1: Помечай объяснения тестовой сессии.

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

В ходе работы с приложением, Я могу находить нестыковки между приложением и рынком, а также информацией предоставляемой пользователям. Если у меня появляется проблема выяснения целей программы и способов её применения, с тем же самым столкнется конечный пользователь. Это очень важная информация об удобстве использования, которую я записываю. Если программа не удобна в использовании, она не будет продаваться. Я постоянно нахожу ошибки в ходе первой тестовой сессии. Я исследую их, помечаю проблемы, о которых могу сообщить позже, и разрабатываю новые тесты касаемо этих проблем. После окончания сессии, у меня есть дефекты, о которых необходимо сообщить и вопросы по юзабилити, которые необходимо задать. Также, у меня в голове сформируется модель тестирования данного продукта. Я буду постоянно работать над этой моделью, даже когда я не тестирую, а другие мои тестировочные виды деятельности будут помогать достраивать её и другие модели.

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

Развитие навыков исследовательского тестирования показывает вам все издержки вашего подхода к тестированию. Квалифицированное тестирование, также, как квалифицированное музицирование часто относят к магии, просто потому, что это сложно понять. Музыка основана на наборе шаблонов, эвристик и техник. Если вы знаете немного, вы без труда можете сыграть. Получение их путем проб и ошибок - долгий процесс, и вам будет очень сложно объяснить как у вам удалось их приобрести. Тестирование использует чистое наблюдение, и метод проб и ошибок может быть эффективным, но может быть гораздо более эффективным, если есть система, в которое оно вписывается.
Искусное исследовательское тестирование может быть важнейшим способов мышления в тестировании. Однако его часто не понимают, боятся и отказываются от него. Когда мы настаиваем, что все тесты должны быть записаны, мы отказываемся от удивительных "напряжения" и "разрешения" в тестировании, ведомых любознательным мыслителем. Мы ограничиваем возможности нашего тестирования, которое может привести к новым важным находкам. Мы также препятствуем нашей возможности определять и адаптировать появившиеся риски. Не удивительно, что в окружении технологий мы постоянно ищем новые инструменты и процессы. Но инструменты и процессы сами по себе "тупые". Они требуют приложения человеческого интеллекта. Прямо говоря, инструменты и процессы, также как и музыкальные инструменты, лишь помогают нам добиться нужного результата. Есть много способов исполнить музыку, и много способов протестировать ПО. Квалифицированное исследовательское тестирование это ещё один эффективный мыслительный инструмент для добавления в репертуар тестирования.

Сссылки:
1. Bach, James. (2003) Exploratory Testing Explained
http://www.satisfice.com/articles/et-article.pdf
2. Kaner, Cem. (2004). The Ongoing Revolution in Software Testing. Presented at Software Test & Performance Conference, December, 2004, Baltimore, MD
http://www.kaner.com/pdfs/TheOngoingRevolution.pdf
3. Bach, James. (1999, November) Heuristic Risk-Based Testing. Software Testing and Quality Engineering Magazine http://www.satisfice.com/articles/hrbt.pdf

18 авг. 2009 г.

51 основное качество успешного проекта


У нас в офисе, над кофе-машиной висит бумажка:
Чтобы стать успешным, проект должен сочетать в себе 51 основное качество (переводить не буду):
1. Accessibility
2. Affordability
3. Beauty
4. Build
5. Caching
6. Code Coverage
7. Compatibility
8. Complexity
9. Consistency
10. Credibility
11. Cyclomatic complexity
12. Discoverability
13. Documentation
14. Efficiency
15. Ethics
16. Extensibility
17. Honesty
18. Integration
19. Licensing
20. Logging and instrumentability
21. Maintainability
22. Marketability
23. Memorability
24. Modularity
25. Open-ness
26. Optimisibility
27. Originality
28. Parallelability
29. Performance
30. Platform versatility
31. Popularity
32. Power
33. Practicality
34. Predictability
35. Purity
36. Readability
37. Reliability
38. Remarkability
39. Responsiveness
40. Reusability
41. Robustness
42. Scalability
43. Scriptability (automatability)
44. Security
45. Simplicity
46. Testability
47. Transparency
48. Trustworthiness
49. Usability
50. User eXperience
51. Versatility

Вы можете позволить себе три.
Два из них - безопасность (44 - security) и удобство использования (49 - usability).
Выберите ещё одно.

Источник http://secretgeek.net/core51.asp

Затравка: Исследовательское тестирование: В поисках музыки исследования ПО


Хочу представить анонс перевода очередной, в этот раз довольно большой, статьи на тему исследовательского тестирования от Jonathan Kohl, которая в оригинале называется "Exploratory Testing: Finding the Music of Software Investigation". Ссылку, как обычно, не даю, а любителям прочитать в оригинале, найти не составит труда. Может быть, среди читателей есть люди, знающие конкретный перевод для музыкальных терминов tension и resolution? Был бы весьма признателен за подсказку. Поскольку сама статья довольно длинная, слишком скоро остальную часть не ждите, надеюсь за неделю справлюсь.

************************************

Мой друг Стив незаурядный игрок на классической гитаре. Наблюдение за его игрой вдохновляющее зрелище - он потратил годы на оттачивание сноровки и исключительно мастерски владеет инструментом. Также, Стив может рассказать о технике своей игры, дать несколько уроков и показать ученикам, как усовершенствовать свои умения. Он может петь под гитару и говорит что музыка это напряженность (tension, кто знает верный перевод , подскажите - прим. пер) и разрешение (resolution, переход в консонанс - прим. пер). Если вся музыка будет напряженная, слушателю станет не по себе. Если будет только разрешаться - то это скучные, утомительные повторения. Стив расширяет эту идею до фактических физических действий, которые гитарист использует для извлечения определенных звуков. К примеру, если вы играете с большим преобладанием напряженности, вы будете ограничены в возможностях выполнить определенные действия. Чтобы играть музыку, вам необходимо найти баланс между напряженностью и разрешением, а, чтобы найти этот баланс, вам необходимо сочетание знаний, навыков и творческого подхода.

Как и Стив, мой друг Джеймс Бах тоже исключительно искусен. Он не гитарист, он тестировщик. Джеймс так же вдохновляет, когда демонстрирует свою технику. Он мастер квалифицированного исследовательского тестирования: одновременного проектирования и выполнения тестов и познания (см. прошлую заметку - прим. пер.). Джеймс также может объяснить используемые им техники тестирования чтобы обучить учеников-тестировщиков. Увидев первый раз как он тестирует софт, я сразу вспомнил Стива. Но в этом случае, напряженность и разрешение не было связано с музыкой или техникой игры на музыкальном инструменте. Вместо этого, напряженность и разрешение вращались вокруг идей. Джеймс одновременно разрабатывал и выполнял тесты, основанные на любознательности по отношению к приложению. Все его тесты обладали обратной связью, посредством которой он получал познания для разработки следующего теста. Напряженность происходила от исследования характера его тестов, а разрешение проявлялось в их результатах. Это была музыка взаимодействи ума тестировщика и тестируемого приложения. И это не было неожиданностью; как тестировщик, Джеймс имеет хорошо развитое сочетание знаний, навыков и творческого подхода.

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

Сссылки

1. Bach, James. (2003) Exploratory Testing Explained
http://www.satisfice.com/articles/et-article.pdf
2. Kaner, Cem. (2004). The Ongoing Revolution in Software Testing. Presented at Software Test & Performance Conference, December, 2004, Baltimore, MD
http://www.kaner.com/pdfs/TheOngoingRevolution.pdf
3. Bach, James. (1999, November) Heuristic Risk-Based Testing. Software Testing and Quality Engineering Magazine http://www.satisfice.com/articles/hrbt.pdf

13 авг. 2009 г.

Exploratory testing: Развитие понимания об исследовательском тестировании. Часть 3


Часть 1
Часть 2

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

Как обращал наше внимание Jerry Weinberg в своей к ниге Perfect Software And Other Illusions About Testing, много важных тестов проводится без нажатий кнопок на клавиатуре или запуска автотестов. Исследовательский подход может быть применен к любому аспекту процесса разработки, а не только к выполнению тестов (т.е. конфигурация, управление, наблюдение и оценка работающего продукта). Ревью может быть проведено как исследовательским, так и сценарным методом, с учетом того, что рецензент сам определяет что наблюдать. Например, ревью может быть проведено в свободном стиле (в этом случае оно может быть весьма исследовательским); руководствуясь сводом идей, оформленных в виде чек листа (в данном случае подход немного более сценарный и менее исследовательский); или руководствуясь набором строгих условий, таких, как те, что используются статическими анализаторами кода (в этом случае подход будет совершенно сценарный).

Для разработчиков, тестирование (как мы помним "обследование продукта в целях его оценки") является естественным элементом парного программирования, и так как проектирование, исполнение, интерпретация и познание сильно переплетены, парное программирование есть исследовательский процесс. TDD (test-driven development) имеет сильно выраженные исследовательские черты по той же причине. В натуре, Elisabeth Hendrickson цитирует момент прояснения одного программиста: "Я понял! Это же разработка через тестирование! (TDD)". Меня аналогично осенило, когда я понял, что TDD весьма и весьма исследовательский стиль разработки.

Такая, вот, история. И тестирование, и познание, весьма расширяемый и исследовательский процесс, поэтому, вероятно, было бы неплохо нам побольше изучать, познавать и проверять в деле эти идеи.

Источник DevelopSense Blog, автор Michael Bolton

12 авг. 2009 г.

Exploratory testing: Развитие понимания об исследовательском тестировании. Часть 2


Часть 1

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

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

Для тех, кто неизбежно спросит "Чем отличается исследовательское тестирование от ad hoc тестирования?" я отвечу так, что не смогу провести различия, пока вы не объясните что вы понимаете под "ad hoc". Некоторые полагают, что "ad hoc" является синонимом "небрежный" или "поспешный" (прим. пер. - у нас чаще встречаются "свободный" и "случайный"). Исследовательское тестирование, конечно же, не поспешное и не небрежное (так же, как не случайное и не свободное, прим. пер.). Когда я смотрю в словарь, я вижу, что "ad hoc" буквально значит "к случаю", и в полном понимании "специальный, устроенный для данной цели, для данного случая". Комиссия Роджерс по Челленджеру была ad hoc-комиссией (прим. пер. - чрезвычайной?), созванная для выполнения конкретных целей и распущенная после того, как цели были достигнуты. В этом смысле, ad hoc и exploratory не такие уж и разные. Почти все выполняемое тестирование, исследовательское ли, или сценарное, будет ad hoc (специальное, для данной цели); оно выполняется для обеспечения неких целей и прекращается по мере их достижения. Таким образом, я не могу быть уверенным, что вы подразумеваете под "ad hoc" пока вы мне не скажете. Я даю здесь определение исследовательскому тестированию; вы можете сравнить его со своим представлением об "ad hoc", если хотите.

Часть 3

11 авг. 2009 г.

Exploratory testing: Развитие понимания об исследовательском тестировании. Часть 1.


Представляю вашему вниманию очередной перевод. На этот раз статья посвящена исследовательскому тестированию (exploratory testing). Тема эта весьма интересная, и, как я вижу, слабо освещенная в нашем русскоязычном сегменте. Поскольку статья немалая, выкладываю пока первую часть, всего планируется три. Отдельное спасибо Алексею Никулину за безвозмездный перевод первого абзаца :) Итак, поехали!

Одним из заметных событий конференции CAST 2008 стал доклад Кема Канера "О пользе чеклистов и опасности сценариев: что предлагает традиционная система обучения тестировщикам". Большую часть доклада заняло сравнение исследовательского и сценарного процессов, в котором Кем противопоставил сценарии - готовые пошаговые инструкции, исполняемые более или менее автоматически - машиной или человеком, заменяющим её, и чеклисты - перечисление особенностей, которые могут быть интересны, и решение об их целесообразности находится во власти человека, пользующегося этим списком. Что по мне, самое ценное в докладе было развитие сюжета о природе исследования и исследовательского тестирования. Итак, по состоянию на 21 сентября 2008 года, моя (как обычно, тесно связанная с Кема и Джеймса Баха) актуальная на данный момент версия сюжета. Еще одна из целей - возможность сослаться на этот пост, чтобы не повторяться на форумах.

По определению Джеймса:
"тестирование - это обследование продукта в целях его оценки".
По Кему, современное исследовательское тестирование это (делаем глубокий вдох:
"стиль тестирования, подразумевающий определенную свободу и ответственность конкретного тестировщика в постоянной оптимизации качества его работы, воспринимающего проектирование, выполнение , оценку результатов тестов и познание (прим. пер. - изучение продукта; накопление опыта; развитие навыков; далее - познание) как взаимодополняющие активности, которые протекают параллельно на протяжении всего проекта".
Это было определение, которое он предложил на симпозиуме Heuristic and Exploratory Techniques в Palm Bay, Флорида, в марте 2006 (в котором James Bach, Jonathan Bach, Scott Barber, Tim Coulter, Rebecca Fiedler, David Gilbert, Marianne Guntow, James Lyndsay, Robert Sabourin, Adam White, Cem и я принимали участие). Короткая версия Джеймса:
"одновременное проектирование, выполнение тестов и познание".
Оба означают одно и то же. Одно более точное, другое краткое по содержанию.

Противоположность исследовательскому тестированию - сценарное тестирование. Причем оба они не являются техниками, это подходы к тестированию. Независимо от любых других аспектов, мы называем тест более исследовательским и менее сценарным если:
  • Элементы проектирования, выполнения и оценки результатов тестов и познание выполняются одним и тем же лицом

  • Процессы проектирования, выполнения и оценки результатов тестов и познание протекают вместе, нежели раздельно во времени

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

  • Все, что познано на данный момент, включая результаты самого последнего теста, определяет какой следующий тест выберет тестировщик

  • Тестировщик ориентирован на выяснение новой информации, нежели подтверждение имеющейся

  • В целом, тестировщик предпочитает разнообразить аспекты своих тестов, нежели повторять их, если повторение теста специально не направлено на раскрытие новой информации


Часть 2
Часть 3

9 авг. 2009 г.

Вы считаете себя экспертом в тестировании?


Тогда проанализируйте следующие утверждения:
1. Я должен составлять тест-план.
2. Важно, чтобы тестирование обладало свойством повторяемости.
3. Каждый тест-кейс должен иметь ожидаемый результат.
4. Автоматизация экономит деньги и время.
5. Все тесты основываются на модели того, что должно быть протестировано.
6. Достаточно хорошее качество (good enough) недостаточно хорошее.
7. Недокументированный тест не может быть улучшен.
8. Лучше использовать термин дефект нежели баг/ошибка.
9. Exploratory testing - полезная практика.
10. Неопределенность и двусмысленность должны быть исключены из требований.

Из доклада J.Bach "Becoming a Software Testing Expert"

25 мар. 2009 г.

7 навыков высокоэффективных тестировщиков (часть 2)

Навык 4 - Мыслить Win\Win
Во многих организациях, команды разработчиков и тестировщиков переводят стрелки друг на друга, тем самым создавая напряженность между командами. Это наносит большой вред и существенно влияет на качество. У команд разработчиков и тестировщиков должна быть одна общая цель - обеспечить клиенту
поставку продукта высочайшего качества. Если это становится общей целью команды, все начинают помогать и всячески поддерживать друг друга, в результате, когда счастливый клиент получает высококачественный продукт, все в команде счастливы не меньше этого самого клиента. Если вы хотите поспособствовать созданию атмосферы доверия, уважения и развить команду Win\Win, вот несколько советов:

  • Делитесь знаниями - не скрывайте свои знания от других, делитесь ими.
  • Общайтесь - обедайте с различными должностными лицами в вашей компании. Узнавайте больше о них,
  • Поощряйте труд остальных - хвалите и восхищайтесь великолепной работой коллег. Расскажите об этом своему (и их) начальнику. Расскажите им, как вы цените их работу.
  • Спасайте утопающих - если вы видите что кто-то погряз в работе, предложите ему свою помощь. Если предложили - помогайте и обеспечьте, чтобы коллега действительно получил ту помощь, которая ему необходима.
Навык 5 - Сначала понять самому, потом искать понимание
Многие из нас имеют плохую привычку переставать слушать то, что говорит собеседник, потому что нам очень сильно хочется высказать свое мнение. Каждый тестировщик или любой другой член команды имеют различный опыт, точки зрения и интересы. Перед решением любой проблемы, очень важно внимательно и взвешенно понять саму проблему. Когда вы почувствуете что обладаете всеми фактами, генерируйте различные идеи для решения проблемы. Наличие нескольких вариантов подразумевает конструктивное обсуждение, а также позволяет команде выработать из начальных решений наиболее внятное и решающее проблему с наименьшими потерями. Если вам не нравится чей-то подход, не нападайте на него. Вместо этого, поясните, основываясь на своем опыте, почему возможен более лучший подход.

Навык 6 - Синергизм
Командное сотрудничество это ключ к синергичной команде. Синергичная команда состоит из людей с различными сильными сторонами, профессиональным уровнем и точками зрения. Всячески поощряйте эти различия и предоставьте команде инструменты, которые позволят вам увеличить их эффективность. В крайне объединенных командах общаются друг с другом путем обмена календарей, публикацией статуса в дискуссионных форумах, чтобы другие могли видеть текущую занятость и выполненные задачи. Такие команды отслеживают все задачи, над которыми они работают каждый день, часы отработанные и оставшиеся, а также следят за расхождением с планом. Они также делятся друг с другом документами, отражающими передовую практику, готовят доклады, чтобы обучить других тому, что они узнали.

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

Об авторе
Стив Миллер является президентом Pragmatic Software. Имея 24 года опыта за спиной, Стив обладает обширными знаниями в областях управления проектами, архитектуры ПО и тест-дизайна. Стив публикует ежемесячный бюллетень для компаний - разработчиков ПО. Вы можете прочесть другие бюллетени по адресу http://www.pragmaticsw.com/Newsletters.asp

20 мар. 2009 г.

7 навыков высокоэффективных тестировщиков (часть 1)

Отсебятина: Мне показалось занимательной данная статья, поэтому я решил её перевести. Нахрапом взять не удалось, поэтому разбиваю на две части. Возможно, вы не согласитесь с некоторыми утверждениями, но никто не мешает включить мозг и подогнать их под себя. Ссылка на источник будет во второй части. Скоро :)


Опубликованная в 1989 году книга Стивена Кови "7 навыков высокоэффективных людей" помогла миллионам людей повысить свою эффективность как в жизни, так и в работе. В данной статье обсуждаются 7 навыков, характерных для высокоэффективных тестировщиков. Итак, навыки:
  1. Проактивность (упреждение)
  2. Видеть результат работы в её начале
  3. Начинать с самого главного
  4. Мыслить Win\Win
  5. Сначала понять самому, потом искать понимание
  6. Синергизм
  7. Точить пилу


Навык 1 - Проактивность
Цель тестировщика в любом проекте - добиться поставки ПО высокого качества. Когда проекты терпят неудачу из-за их плохого качества, вы либо упреждаете проблемы либо реагируете на последствия после анализа причин. Если вы реагируете, вы будете обвинять в проблемах и препятствиях других людей и обстоятельства. Если вы проактивны, вы берете ответственность на себя и ищете возможность предотвратить такие проблемы в будущем. На завершающей стадии каждого проекта ваша команда проводит "post mortem" или "retrospective" митинги на которых открыто обсуждается что было сделано хорошо а что плохо. Ниже представлены несколько идей, как быть проактивным:
  • Будь ответственным за требования. Не критикуй других за плохие требования. Вместо этого, работай с командой над полным анализом требований чтобы обеспечить их полноту, точность и тестируемость.
  • Анализируй отслеживаемость (traceability). Создание матрицы отслеживаемости позволит тебе проанализировать тест-кейсы на покрытие, тестируемость и полноту. Обсуждай на общих митингах свои тест-кейсы, чтобы удостовериться в понимании требований и адекватном тестовом покрытии. Отправляй свои тесты на ревью команде разработчиков до начала тестирования, это может сократить количество исправлений и сэкономить время.
  • Общайся эффективно. Во время тестирования, необходимо, чтобы все знали состояние дел в тестировании. Сообщай различными способами свой ежедневный статус. Включай в него метрики, такие как количество дефектов, покрытие требований, количество пройденных кейсов и т.п.
  • Описывай дефекты эффективно. Когда пишешь отчет об ошибке, не жалей времени на составление хорошего описания, шагов воспроизведения и ожидаемых результатов. Добавляй снимки экранов и другую полезную для воспроизведения ошибки информацию.
Навык 2 - Видеть результат работы в её начале
Конечной целью должна быть поставка высококачественного продукта, отвечающего всем требованиям клиента. До начала кодирования необходимо составить список критериев, который позволит судить об успешности продукта. Например, таким критерием может быть то, что продукт выполняет определенные задачи, не содержит известных дефектов (или небольшое количество малокритичных), хорошо задокументирован, прост в использовании и т.д. Определяя критерии успеха наперед, вы сможете объективно оценить, удовлетворяет ли им ваш продукт или нет. Просите помощи в определении критериев у всех членов команды. Выработанные командой критерии будут лучше и более измеримыми и в итоге вы получите неплохой "прикуп" от своей команды.

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

4 мар. 2009 г.

10 практик юзабилити

В свежей заметке на DevelopSense Blog, где Майкл Болтон и Бен Симо совершенно справедливо склоняют глаголы над интерфейсом последней версии Skype, проскакивает несколько, как мне показалось, интересных ссылок. Текст одной из них я сподобился перевести. Многие вещи, несомненно очевидны и стали уже нормой, но пруфлинки и имена дядек на которых можно сослаться, часто бывает полезным аргументом если вы практикуете такую вещь как Bug Advocacy. Также материал может служить неплохим подспорьем для тест-планов по юзабилити. Дисклаймер: я долго сомневался при переводе слова heuristics и решил перевести его как практики. Вы можете понимать как вам удобно или предложить лучший на ваш взгляд вариант.

автор Jakob Nielsen
Оригинал http://www.useit.com/papers/heuristic/heuristic_list.html#

Ниже перечислено 10 основных принципов для проектирования пользовательского интерфейса. Они называются практики потому что они по характеру ближе к практическим методам нежели к каким либо руководствам по юзабилити (guidelines).



Очевидность статуса системы
Система должна постоянно держать пользователя в курсе происходящего путем соответствующих откликов в пределах разумных промежутков времени
Приближенность системы к реальности
Система должна "говорить" на языке пользователя, словами, фразами и понятиями близкими пользователю, а не специализированными системными терминами. Следуйте общим соглашениям, формируя появление информации в естественном и логичном порядке.
Контроль и свобода пользовательских действий
Пользователи часто ошибочно выбирают функции системы и нуждаются в четко обозначенном запасном выходе, чтобы выйти из неверного состояния без дополнительных диалогов. Поддерживайте отмену и восстановление.
Согласованность и стандарты
Пользователи не должны удивляться различным словам, состояниям или действиям обозначающим одно и то же. Следуйте стандартизированным соглашениям.
Предупреждение ошибок
Лучше хорошего сообщения об ошибке может быть только тщательно спланированный дизайн, предупреждающий пользователя об ошибочных действиях. Либо устранение способствующих ошибкам условий, либо их проверка и предоставление пользователям опции подтверждения перед тем, как они совершат действие.
Распознавание предпочтительнее вспоминания
Минимизируйте загрузку памяти пользователей отображая объекты, действия или опции. Не вынуждайте пользователя запоминать информацию когда он переходит от одной части диалога к другой. Инструкция по использованию системы должна быть доступна постоянно.
Гибкость и эффективность использования
Горячие функции - невидимые для новичков - могут ускорять работу опытных пользователей, таким образом, система в состоянии обслужить новичков и продвинутых. Позвольте пользователям настраивать частые действия.
Эстетичный и минималистичный дизайн
Диалоги не должны содержать не имеющей значения или редко используемой информации. Каждая доля лишней информации в диалоге конкурирует с полезной и уменьшает её относительную заметность.
Помогайте пользователям опознавать, выявлять и восстанавливаться после ошибок
Сообщения об ошибках должны быть написаны простым языком (без кода), точно указывать на проблему и предлагать конструктивное решение.
Помощь и документация
Даже несмотря на то что система может использоваться без документации, она должна быть обеспечена помощью и документацией. Любая подобная информация должная быть легко доступна, ориентирована на задачи пользователя, содержать перечень возможных шагов и не быть слишком большой.

Первоначально автор разработал эти практики для эвристической оценки в сотрудничестве с Rolf Molich в 1990-м [Molich and Nielsen 1990; Nielsen and Molich 1990]. С тех пор они были усовершенствованы на основе анализа факторов 249 проблем юзабилити [Nielsen 1994a] что породило набор практик с максимальной степенью пояснения, которые воплотились в этом пересмотренном перечне практик [Nielsen 1994b].

Обновленные сведения

Я буду представлять мои новейшие руководства по юзабилити на консультации Fundamental Guidelines for Web Usability в рамках Usability Week 2009 conference в Вашингтоне, Сан-Франциско, Лондоне.

Смотрите также:

Список литературы:

  • Molich, R., and Nielsen, J. (1990). Improving a human-computer dialogue, Communications of the ACM 33, 3 (March), 338-348.
  • Nielsen, J., and Molich, R. (1990). Heuristic evaluation of user interfaces, Proc. ACM CHI'90 Conf. (Seattle, WA, 1-5 April), 249-256.
  • Nielsen, J. (1994a). Enhancing the explanatory power of usability heuristics. Proc. ACM CHI'94 Conf. (Boston, MA, April 24-28), 152-158.
  • Nielsen, J. (1994b). Heuristic evaluation. In Nielsen, J., and Mack, R.L. (Eds.), Usability Inspection Methods, John Wiley & Sons, New York, NY.
Copyright © 2005 by Jakob Nielsen. ISSN 1548-5552

18 февр. 2009 г.

Мифы и грабли: Вы не обеспечиваете качество тестированием

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

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

Из книги "Lessons Learned in Software Testing" Kaner, Bach, Pettichord

3 февр. 2009 г.

Мифы и грабли: Цель тестирования - поиск ошибок

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





То есть, этому мифу будет посвящено несколько заметок. Тем не менее, ниже я не озвучу свое видение вопроса, а приведу вольный перевод отрывка из книги Рекса Блэка Pragmatic Software Testing, который в свою очередь цитирует Бориса Бейзера (мне очень льстит такая вложенность :) ). Мне сегодня случайно попалась эта глава на глаза, показалась весьма в тему и я решил не откладывать в долгий ящик. Это неплохая пища для ума, а свое скромное мнение я напишу как-нибудь потом, тем более что с гуру трудно не согласиться.

-------
Один из трех основателей современного тестирования ПО, Борис Бейзер, определил пять стадий становления тестировщика:
  • Стадия 0: Нет никакой разницы между тестированием и отладкой. Цель тестирования - помощь в поиске и исправлении ошибок;
  • Стадия 1: Цель тестирования - доказать что ПО работает;
  • Стадия 2: Цель тестирования - доказать что ПО не работает;
  • Стадия 3: Цель тестирования не в том, чтобы что-то доказать, а в понижении предполагаемых рисков, приводящих к неработающему ПО, до приемлемого уровня;
  • Стадия 4: Тестирование это не этап. Это интеллектуальная деятельность которая приводит к получению надежного и стабильного ПО без больших трудоемких затрат на тестирование.
Первые две стадии можно рассматривать как миф людей и организаций с незрелыми практиками и процессами тестирования (для исчерпывающего описания см. книгу Б.Бейзера Software Testing Techniques).

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

Однако вы можете прогрессировать до стадии 3. На этой стадии тестирование является составляющей всеобъемлющей стратегии управления рисками. Тестирование ориентировано на риски. Тестирование предоставляет информацию, имеющую отношение к рискам. Эта книга может научить вас как достичь и этого.

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

Итак, на какой стадии вы сейчас находитесь и почему? На какой стадии хотят вас видеть коллеги и начальство и почему? На какой стадии нужно вашей организации чтобы вы находились и почему?
-------

Думаю, в следующих заметках на эту тему я опять обращусь к кому-нибудь из классиков.

27 дек. 2008 г.

Обнаруживайте серьезные проблемы быстро

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

Из книги Lessons Learned in Software Testing, Cem Kaner, James Bach, Bret Pettichord

18 дек. 2008 г.

7 основных принципов Context-Driven школы тестирования.

Disclaimer: все переводы это личная забава автора, являются весьма вольными и ни на что не претендуют. Критика в комментариях приветствуется.
  1. Ценность каждого решения зависит от условий его применения.
  2. Есть много вариантов решений, но нет лучшего.
  3. Команда - самая важная составляющая любого проекта.
  4. Часто проекты отнимают много времени там, где мы этого не ждем.
  5. Продукт - это конечное решение. Если задача не решается, продукт не работает.
  6. Грамотное тестирование это сложный интеллектуальный процесс.
  7. Только здравый смысл и мастерство, совместно прилагаемые на протяжении всего проекта, позволят нам сделать все правильно и в срок, чтобы эффективно протестировать наши продукты.
Пояснения принципов в действии:
  • Группы тестирования существуют для выполнения работ связанных с тестированием. Они не участвуют в разработке; они обслуживают проект.
  • Тестирование выполняется от лица заинтересованных сторон - в процессе разработки, испытаний, отладки, исследования или реализации продукта. Совершенно разные стратегии тестирования могут быть применены для этих разных целей.
  • Совершенно нормально разным группам тестирования иметь разные цели. Методы достижения одной цели могут не подойти или быть антипродуктивными для достижения другой.
  • Неправильные метрики опасны.
  • Суть тест-кейса лежит в его возможности предоставить информацию (т.е. уменьшить неопределенность)
  • Все ошибаются. Даже если вам кажется что продукт проходит вашу проверку, он возможно сломается там где вы (или автотесты) этого не проверяли.
  • Автоматизированное тестирование это не автоматическое ручное тестирование: абсурдно подразумевать под автоматизированными тестами имитацию тестирования человеком.
  • Разные типы дефектов вскрываются разными типами тестов - тесты должны усложняться или нацеливаться на различные уязвимости чтобы программа становилась более стабильной.
  • Тестовые артефакты дают хороший результат когда они удовлетворяют соответствующим требованиям заинтересованных сторон.
Пример:

Рассмотрим два проекта:
  1. Разработка системы управления самолетом. Корректное поведение означает высочайшую техническую и математическую точность. Соответствие требованиям Федерального авиационного агентства. Всё, что вы делаете (или не делаете) может стать основанием для суда в течение 20 лет. В команде прививается инженерная культура в которой ценятся такие качества как осторожность, точность, повторяемость и двухсторонний контроль.
  2. Разработка текстового процессора для Веба. Корректное поведение в данном случае значит потакать огромному числу пользователей Microsoft Word для их привлечения к вашему продукту. Нет регулярных требований имеющих значение (кроме отвечающих общим потребностям). Через 20 месяцев надо выпустить продукт, хороший либо плохой. Команда не следует инженерной культуре, попытки следовать культуре из первого случая будут приводить к ущербу для окружающих.
  • Методы тестирования подходящие для первого проекта обречены на провал во втором.
  • Методы подходящие для второго будут выглядеть преступно халатными в первом.
Источник: http://www.context-driven-testing.com/