четверг, 19 ноября 2009 г.

7 plagues of Software Testing by James Whittaker - The Plague of Homelessness

Порок бездомности


Есть 2 категории людей, которые регулярно находят баги: тестировщики, которым за это платят, и пользователи, которые сталкиваются с багами случайно. Вообще-то, пользователи не делают это специально, просто в процессе нормального использования ПО в ходе работы (или развлечения, или социализации, или ещё чего-то) случаются сбои. Частенько, именно магическая комбинация взаимодействия приложения с реальными данными пользователя на реальном компьютерном окружении пользователя приводит к сбою ПО. Не кажется ли вам очевидным, что тестер должен стремиться воссоздать такие данные и условия окружения в своей тестовой лаборатории, чтобы найти эти баги до выпуска продукта?

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

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

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

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

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





5 комментариев:

Orkin комментирует...

Кажется, в теории такой вид тестирования называется "эксплуатационным".

ITC-exp комментирует...

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

Julia Nechaeva комментирует...

2Orkin
Здесь ещё можно говорить о подходе к тестированию, или о взгляде. К примеру, когда приложение смотрит менеджер - он смотрит именно как домовладелец: с размаху плюхается на диван, курит рядом с бумажной занавеской...
Так что хорошо пускать "какгбе тестировать" людей, не имеющих отношение непосредственно к разработке. Те баги, которые не зависят от времени, но зависят от взгляда, именно от пользовательского подходаю

Orkin комментирует...

2 Julia
Согласен. В случае публичного ресурса есть смысл привлекать бета-тестеров, которые ,были бы рады работать за "морковки". Собирать юзер сторис и обрабатывать вместе с заказчиком.
Но даже при этом, все равно, всем "жильцам" не угодишь! :)

Petya комментирует...

Кстати, если вам вдруг понадобится заблокировать чей-то мобильный телефон или другое средство связи, то попробуйте использовать для этого Блокиратор сотового.