Применение научного метода для тестирования программного обеспечения (перевод)

Вы можете прочитать эту статью в оригинале здесь (blog.testlodge.com/)

Почти за тысячу лет до рождения современных вычислительных систем полимат Ибн аль-Хайтам выступал за важность создания гипотезы для последующей её проверки. Галилей построил на этой идее свои экспериментальные методы, которые подробно описал публикации «Две новые науки» 1638 года. Он считал, что знание может быть получено разумом, а затем подкреплено наблюдением и экспериментами. Научный метод был отточен именно для этой цели - получение знания, а здесь я расскажу о шагах и этапах этого метода. Эти шаги не высечены в камне и лучше всего рассматривать их как набор общих принципов для работы; Воспринимайте их как еще один инструмент, а не кандалы.

method scheme

6 Шагов Научного Метода

Делайте наблюдения

“Вы можете открыть многое, просто наблюдая.”
Yogi Berra

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

Задавайте вопросы

Все время что наблюдаете - задавайте любые интересные вопросы. Приемлимо ли время загрузки страницы? Может ли JavaScript здесь работать быстрее? Что будет, если страница недоступна? Функционирует ли эта веб-форма так, как ожидалось? Является ли эта графика слишком тяжёлой? Я однажды протестировал веб-сайт с фоновым изображением очень высокого разрешения, что удваивало размер каждой страницы, на которой оно было использовано, и да, оно использовалось на... каждой странице.

Стройте гипотезы

Продолжайте задавать вопросы и вы начнете понимать, что происходит с тестируемой системой, поэтому у вас сразу появятся гипотезы для проверки. В зависимости от того, насколько вы имеете доступ к исходному коду у вас может быть как и очень хорошее представление о внутренностях программы, так и возможно, вам нужно тестировать чёрный ящик(black-box).

Сбор данных для проверки гипотез

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

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

Будьте готовы менять свою гипотезу

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

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

Разрабатывайте общую теорию

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

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

Вывод

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

Автор: David Evans

Перевод: Visignibraem