Как занимаются тестированием в Google

Гойко Аджич в своем блоге пересказывает выступление директора по тестированию Google, Джеймса Уиттакера, на конференции Agile Cambridge, ну, а я перевожу его пересказ.

Джеймс Уиттакер, директор по тестированию в Google, рассказывал вчера на конференции Agile Cambridge о том, как в Google занимаются «Инжинирингом тестирования». Он сравнил тестирование программного обеспечения с медициной – в частности, с уходом за пациентами в больницах.

Уиттакер начал с того, что 20 лет назад разработка программного обеспечения была похожа на массовое производство, и стоимость исправления проблемы после выпуска был гораздо выше, чем до него. «Мы уже не делаем программное обеспечение таким способом», сказал Уиттакер, добавив: «вы можете использовать приложение Google Docs, в это же время оно будет обновляться, и вы даже не заметите этого». Уиттакер делает вывод, что время, требующееся, чтобы исправить ошибку до и после выпуска, для их программного обеспечения в настоящее время абсолютно одинаково (обратите внимание — время, но не цена).

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

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

В результате, команды разработчиков Google создали несколько инструментов, предоставляющих функциональность карты пациента и мониторов жизнедеятельности (при этом они избежали ситуации «тащите самую крутую машину, начальник идет»).

Характеристики, возможности и компоненты

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

Как выяснилось, для вывода о состоянии программного продукта, информация должна быть структурированной и упорядоченной. «Докторам проще — все их пациенты выглядят одинаково», говорит Уиттакер. Чтобы иметь возможность делать осмысленные заключения о состоянии программного обеспечения, они стали собирать желаемые характеристики своих продуктов. Например, в число желаемых атрибутов Chrome OS входят стабильность и надежность. «Всякий раз, когда продажники используют наречие или прилагательное, мы создаем характеристику», говорит Уиттакер. Эти характеристики затем собираются в облако тегов, чтобы обеспечить видимость относительной важности разных характеристик.

Для каждой характеристики собрали список программных компонентов, которые на неё влияют. Для Chrome ОС это заняло около 20 минут. После этого, собираются возможности, начиная с глаголов, которые используются при описании функциональности. Например, возможностями Chrome OS являются «подключается к Интернету», «показывает веб-страницу». Получение списка 304 возможностей Chrome ОС заняло около двух часов. Сомневаясь, что возжности на этом исчерпываются, они провели ревью списка, и получили в конечном итоге 314 возможностей.

Возможности, компоненты и характеристики «определяют нашего пациента», говорит Уиттакер. По его словам, особенность Google в том, что у них очень низкое соотношение числа тестировщиков к разработчикам. В «богатых» командах оно достигает одного тестировщика на четверых или шестерых разработчиков, типичным является соотношение один к четырнадцати, а в некоторые командах один тестировщик на двадцать восемь разработчиков. Виттакер говорит: «Если разработчикам нужно что-то протестировать, они должны попросить вежливо и быть готовым к отказу. Команде тестирования нужно понять, что тестировать, и вы должны убедиться, что весь ваш код связан с набором возможностей, связанных с компонентом, связанным с характеристикой». [Тестировщики] расставляют риски по матрице возможностей и характеристик, и риск определяет, куда направляются ресурсы тестирования. В результате, разработчики уделяют большое внимание качеству своих продуктов.

Использование «обходов» в качестве тестовых стратегий

Подобно тому, как врачи используют виды лечения (например, витаминотерапию или химиотерапию), чтобы обсудить весь комплекс действий с коллегами и пациентами, Уиттакер рекомендует использовать «обходы» (tours) для описания тестовых стратегий. Он привел несколько примеров «обходов», использующихся в Google — таких, как: проход по переулкам (посещение мест, куда до этого мало кто заглядывал), ночная экскурсия (запуск программного обеспечения в лаборатории на ночь, без выключения) и поход по шотландским пабам (охватить тестами всю систему целиком). Эти обходы служат языком паттернов высокого уровня для действий и проверок в течение тестовой сессии, без углубления в детали низкого уровня. Они помогают команде обсуждать глобальные проблемы и общаться более эффективно.

Head-Up дисплеи

Монитор в комнате больного говорит зашедшему врачу все необходимое о жизненных характеристиках пациента. Ему не нужно куда-то идти, чтобы выяснить подробности. Уиттекер считает, что видеоигры являются отличным примером того, как head-up-дисплеи представляют сложные данные на экране в очень доступной форме. «[Игрокам] не приходится писать SQL запросы во время игры», говорит Уиттакер, доказывая, что тестировщики тоже не должны писать SQL запросы, чтобы получить важные показатели программного обеспечения. Затем он показал несколько примеров систем, которые они разработали в Google для отображения основных показателей своих продуктов.

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

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

Значит, тестирование похоже на медицину?

Уиттакер заключает, что тестирование является «непрерывной деятельностью, подобной врачебному обходу в больнице».

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

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

Губная гармошка для здоровья и хорошего настроения

Оригинальная статья с сайта Harmonica Masterclass в архиве

Счастливые жители Великобритании // goodnewsnetwork.org
Счастливые жители Великобритании // goodnewsnetwork.org

В течение многих лет я слышал положительные отзывы о гармошечных программах для пациентов с легочными заболеваниями и о пользе, полученной их участниками. Из разговора с доктором Дэннисом Бако во время обеденного перерыва на моем Harmonica Masterclass Workshop в Long Beach California, получилось то, что вы видите ниже. До выхода этой книги, не существовало специальной гармошечной методики для легочных больных, но было очевидно, что для обучения таких людей должен применяться методический подход. Представленные обучающие материалы заполняют этот пробел.

Для начала нужно было разобраться в легочных заболеваниях. После некоторых изысканий стало понятно, что ориентироваться нужно в первую очередь на больных с ХОЗЛ (хроническими обструктивными заболеваниями легких). Обычно в эту группу включают больных эмфиземой, хроническим бронхитом и астмой. Ниже приводится основная информация об этих заболеваниях.

Дыхание

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

Эмфизема

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

Хронический бронхит

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

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

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

Проблема №1 – ХОЗЛ вызывают задержку воздуха в альвеолярных мешочках. При эмфиземе – из-за потери упругости, и при бронхите – в результате раздражения и опухоли, воздушные проходы стремятся сузиться или сжаться во время выдоха. Это приводит к затруднениям при выдыхании и к застаиванию воздуха.

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

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

Проблема №2 – потеря эффективности мышц диафрагмы. Диафрагма – основной «дыхательный» мускул. Это большая куполообразная мышца, расположенная сразу за легкими и отделяющая грудь от брюшной полости. До 80% усилия при дыхании – результат работы диафрагмы. Другой способ – «грудное дыхание». Сайт DHD Healthcare утверждает, что «реберное дыхание раздвигает кости грудной клетки вверх и в стороны при помощи внешних межреберных мышц, увеличивая объем груди и создавая частичные вакуум. Расширения легких из-за пониженного давления недостаточно для вентиляции нижних легочных долей, и вентиляция легких ухудшается, так как именно нижние доли взаимодействуют с большей частью крови благодаря силе тяжести. Дыхание неглубокое, с небольшим перемещением живота». Больные часто используют «вспомогательные дыхательные мышцы» – шею, грудь, руки и плечи. Из-за чрезмерного вздутия легких, у больных эмфиземой и бронхитом развивается плоская диафрагма, которая не может работать достаточно эффективно для циркуляции воздуха в легких, и человек использует вспомогательные мускулы для компенсации этого.

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

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

Проблема №3 – больные ХОЗЛ испытывают трудности как при вдохе, так при выдохе. В большинстве случаев это объясняется потерей упругости легких и жесткостью нижней части грудной клетки, включая мышцы, хрящи, сухожилия и кожу. Подвижность грудной клетки особенно страдает из-за неглубокого дыхания.

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

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

Проблема №4 – потеря радости жизни, независимости, депрессия. Многие больные с хроническими заболеваниями страдают от депрессии и понижения качества жизни.

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

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

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

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

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

Игра на гармошке – не единственный способ борьбы с болезнью, но она помогает вести здоровый и активный образ жизни. Не отказывайтесь от специальных упражений, рекомендованных вашим врачом, используйте гармошку как дополнение к ним. Клинически не подтверждено, что игра на гармошке оказывает серьезную помощь при ХОЗЛ, но глядя на людей, знакомящихся с этим инструментом, становится очевидно, что польза его безгранична.

Дополнительные материалы (на английском языке):

Губная гармошка: упражнения для дыхания

Отрывок из Chromatic Harmonica Exercise, автор Greg Dyer.

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

Кроме того, объем дыхания определяет, насколько долго вы можете держать ноту, и как громко вы можете её играть. А умение контролировать дыхание определяет, насколько мягко вы можете сыграть ноту, и как быстро вы можете сыграть сложное сочтание вдохов и выдохов в быстром проигрыше. Без хорошего контроля дыхания не получится держать темп и играть то, что хочется, так, как хочется.

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

В статье «Лечебные гармошки» рассказывается о позитивном влиянии игры на гармошке на больных астмой и другими заболеваниями дыхательных путей.

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

  1. Мягко наберите полные легкие, дайте груди максимально расправиться.
  2. Сделайте еще несколько маленьких вдохов, расслабляя для этого живот
  3. Задержите дыхание на 30 секунд, или насколько получится без напряжения. Расслабьтесь!
  4. Медленно выпустите воздух, при этом удерживая грудь расправленной
    • Когда последний выздух выйдет наружу, грудь все еще будет максимально расправленной, а диафрагма хорошо сжата, но не напряжена.
    • поначалу захочется выдохнуть все разом; используйте живот или диафрагму, чтобы немного придержать поток
    • по мере выдоха, поток воздуха будет терять силу; поддержите его, выталкивая воздух диафрагмой; старайтесь поддерживать равномерность выдоха
    • держите грудь расправленной
    • ближе к завершению придется с большей силой выталкивать воздух, чтобы поддерживать равномерный выдох.
    • С силой выдохните остатки воздуха из легких.
  5. Задержите дыхание секунд на 15, но не до потери сознания
  6. Используя диафрагму, вдохните воздух, поддерживая постоянную скорость потока
  7. Переходим к пункту 2, и продолжаем упражнение в течение 5 минут

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

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