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

1 комментарий:

Галина Романова комментирует...

"В натуре," это сильно :)