Тема 3.7 — Тестирование и обеспечение качества

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

Почему это важно в здравоохранении и уходе#

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

Поэтому тестирование в медицинских ИТ неотделимо от клинической безопасности. Опасности, записанные в журнале опасностей DCB0129/0160 (см. тему 1.6 — Клиническая безопасность и управление рисками), действительно смягчены только тогда, когда тест доказывает, что смягчение работает и продолжает работать после каждого последующего изменения. Обоснование безопасности, утверждающее «система предотвращает дублирующие назначения» без повторяемого теста за ним, — утверждение, а не гарантия. Тестирование — база доказательств под аргументом клинической безопасности.

Ставки касаются и равенства, и общественного доверия. Услуга, никогда не тестировавшаяся по стандартам доступности, по умолчанию исключит пользователей с инвалидностью (см. тему 1.9 — Цифровая инклюзия и доступность). Услуга, тестируемая только с копиями действующих записей пациентов, рискует нарушением данных, разъедающим доверие, от которого зависит NHS. А деньги нетривиальны: исправление дефекта, найденного в действующей эксплуатации, стоит во много раз больше, чем его выявление при проектировании, а серьёзный клинический инцидент стоит гораздо больше обоих. Недостаточное тестирование — не экономия; это отложенный и раздутый счёт, порой оплачиваемый вредом.

Ключевые понятия#

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

Пирамида тестов и сдвиг влево (shift-left). Здоровая стратегия тестирования имеет много быстрых, дешёвых модульных тестов (проверка отдельных функций), меньше интеграционных тестов (проверка совместной работы компонентов) и небольшое число медленных, дорогих сквозных тестов (проверка целых пользовательских путей). Эта «пирамида тестов» держит обратную связь быстрой, а поддержку доступной. Она сочетается со сдвигом тестирования влево, перемещением тестирования раньше в жизненном цикле, так что дефекты устраняются проектом дёшево, а не находятся в лихорадочной предрелизной суматохе. Перевёрнутая пирамида (в основном ручные сквозные тесты) медленна, хрупка и является тревожным признаком.

Функциональное и нефункциональное тестирование. Функциональное тестирование спрашивает «делает ли система то, что должна?»: верные расчёты, верные рабочие процессы, верные данные. Нефункциональное тестирование спрашивает «насколько хорошо она себя ведёт?»: производительность и нагрузка (остаётся ли она отзывчивой, когда весь траст входит в 08:00?), безопасность (можно ли её взломать?), надёжность и доступность. В здравоохранении и уходе нефункциональные сбои часто самые опасные: система, функционально безупречная, но зависающая во время вызова реанимации, клинически провалилась.

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

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

Приёмочное тестирование. Приёмочное тестирование, и в частности приёмочное тестирование пользователями (UAT), — то место, где реальные клиницисты и пользователи подтверждают, что система работает в их реальном контексте до запуска. Операционное приёмочное тестирование (OAT) подтверждает, что услугу можно вести, резервировать и восстанавливать. UAT с подлинными конечными пользователями ловит несоответствия рабочих процессов, которых не поймает никакой тест разработчика.

Тестовые среды и безопасные тестовые данные. Среда развёртывания — система, где работает ПО, обычно уровни разработки, тестирования, предпроизводственный и производственный. Тестированию нужны среды, напоминающие производство, но они никогда не должны небрежно использовать действующие данные пациентов. Безопасная практика использует синтетические данные (искусственно сгенерированные) или должным образом анонимизированные, чтобы тестирование формы направления не могло утечь реальному гражданину диагноз.

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

Лучшие практики#

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

  2. Относитесь к регрессионному тестированию как к контролю клинической безопасности. До того как любое изменение достигнет действующей клинической системы, автоматизированный регрессионный набор должен подтвердить, что существующее, релевантное для безопасности поведение по-прежнему работает. Сопоставьте ваши наивысшие опасности из журнала опасностей DCB0129/0160 прямо с названными регрессионными тестами, чтобы изменение, которое вернуло бы известную опасность, автоматически проваливало сборку. Это механизм, позволяющий итерировать на действующих системах, не накапливая тихий клинический риск.

  3. Никогда не тестируйте по умолчанию на действующих данных пациентов. Обеспечьте тестовые и предпроизводственные среды синтетическими или надёжно анонимизированными данными, управляемыми той же дисциплиной управления информацией и DPIA, что и производство (см. тему 1.7 — Управление информацией, защита данных и кибербезопасность). Если конкретный тест действительно требует данных, подобных производственным, рассматривайте это как контролируемое исключение с задокументированным законным основанием, минимизацией и аудитом, а не как рутинное удобство. Тестовая база данных — всё ещё база данных пациентов.

  4. Тестируйте нефункциональные требования так же серьёзно, как функциональные. Проводите тесты производительности и нагрузки относительно реалистичного пикового спроса (передача смен, входы в понедельник утром, региональный сбой, перенаправляющий трафик), потому что клиническая система, ползущая под нагрузкой, подвела, когда это важнее всего. Включайте тестирование безопасности и тестирование доступности относительно Web Content Accessibility Guidelines (WCAG) как постоянные, не необязательные виды тестов. Нефункциональные дефекты легко отложить и дорого обнаруживать в производстве.

  5. Автоматизируйте тестирование доступности, затем проверяйте его с людьми. Автоматические проверки WCAG дёшево ловят значимую долю проблем (отсутствующие подписи, плохой контраст, структура) при каждой сборке, но упускают те, что важнее всего реальным пользователям вспомогательных технологий. Сочетайте автоматическое сканирование с ручным тестированием людьми, использующими программы чтения с экрана, навигацию только с клавиатуры и увеличение. Доступность — юридическая обязанность для государственных органов и вопрос клинической безопасности, когда исключённый пользователь — клиницист или пациент, управляющий собственным уходом.

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

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

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

  9. Встраивайте тестирование в конвейер поставки, а не после него. Подключите автоматизированные тесты, сканирование безопасности и проверки доступности к конвейеру непрерывной интеграции и поставки, чтобы каждое изменение тестировалось, прежде чем сможет продвинуться (см. тему 3.5 — Жизненные циклы поставки). Это делает качество непрерывным и дешёвым и означает, что способность быстро развернуть протестированное исправление, сама по себе мера безопасности, всегда доступна. Ручные фазы тестирования в конце проекта медленны, поздни и первое, чем жертвуют, когда время поджимает.

Вопросы для обсуждения с командой#

  1. Если завтра мы изменим одну вещь в нашей действующей клинической системе, насколько мы уверены, что узнаем до пациента, если это сломало что-то другое? Этот вопрос проверяет зрелость вашего регрессионного тестирования и честность ваших заявлений о безопасности. Большинство серьёзных инцидентов клинического ПО — не экзотические новые сбои, а регрессии: изменение, тихо сломавшее поведение, которое все считали стабильным, обнаруженное только когда на него наткнулся клиницист или пациент. Хорошее обсуждение прослеживает недавнее реальное изменение до тестов, которые поймали бы регрессию, и спрашивает, подкреплена ли каждая из наивысших опасностей в журнале опасностей DCB0129/0160 автоматизированным тестом, падающим, когда опасность возвращается. Напряжение, которое стоит вынести на свет, — между давлением быстро выпускать исправления и дисциплиной доказывать, что ничего другого не сломано: делает ли ваш конвейер это доказательство автоматическим или оставляет тому, кто вспомнит проверить. Подумайте, сколько времени занимает запуск вашего набора тестов, запускается ли он при каждом изменении и не отключил ли кто-то тихо падающие тесты, чтобы успеть к сроку. Честный ответ отличает «у нас есть регрессионный набор, привязанный к нашим клиническим опасностям, и мы ему доверяем» от «мы тестируем изменение, которое сделали, и надеемся на лучшее». Если ответ второй, вы несёте клинический риск, которого не видите.

  2. Откуда у нас берутся тестовые данные и мог бы тест когда-нибудь раскрыть информацию реального пациента? Тестовые среды — распространённый и мало изученный путь к нарушению данных, потому что команды под давлением тянутся к самым лёгким реалистичным данным (копии производства), а получившиеся записи пациентов затем оказываются в менее защищённых тестовых системах, ноутбуках или средах поставщиков. Этот вопрос просит команду проследить каждую тестовую и предпроизводственную среду до источника данных и честно признать, не стали ли копии действующих данных «только в этот раз» рутиной. Компромисс для обсуждения — реалистичность против безопасности: синтетические и анонимизированные данные безопаснее, но могут упустить неаккуратные крайние случаи, которые содержат реальные данные, тогда как действующие данные реалистичны, но создают обязательство по управлению и нарушению, а подлинная анонимизация труднее, чем кажется, потому что записи можно повторно идентифицировать при сочетании. Конкретные ракурсы включают: кто имеет доступ к тестовым средам, зашифрованы ли и проверяются ли тестовые базы данных, как производственные, и соответствуют ли тестовые среды ваших поставщиков той же планке. Сильный ответ описывает сознательную стратегию (синтетические данные по умолчанию, анонимизация, проведённая должным образом, действующие данные только как задокументированное, минимизированное, ограниченное по времени исключение), а не случайность, ожидающую расследования по управлению информацией.

  3. Когда дата запуска и планка качества сталкиваются, что на самом деле уступает и кто решает? Каждая поставка в конце концов сталкивается с моментом, когда тестирование не закончено, дефект не устранён или соответствие доступности неполно, а дата запуска надвигается; то, как ваша организация ведёт себя в этот момент, показывает, является ли качество подлинным контролем или лишь желанием. Этот вопрос просит команду вспомнить, когда это случилось последний раз, и честно описать, что было вырезано: косметический бэклог или регрессионное тестирование, UAT или аудит доступности? Напряжение реально, и его нельзя отмахнуть: даты важны, циклы финансирования неумолимы, а бесконечное тестирование само может быть видом сбоя, но разрешение должно определяться клиническим риском и риском для равенства, а не тем, кто кричит громче. Обсудите, у кого есть полномочия задержать запуск по соображениям качества без карьерного риска, отменяется ли когда-нибудь формально ваше определение готовности и кем и записываются ли известные дефекты, выпущенные при запуске, как принятые риски или тихо хоронятся. Хороший ответ показывает ясный, названный путь решения, жёсткую линию, ниже которой дефект блокирует релиз независимо от даты (всё, что могло бы способствовать вреду пациенту), и культуру, где сказать «ещё нет, это небезопасно» вознаграждается, а не наказывается.

  4. Покрывают ли наши тесты то, что могло бы навредить пациенту, или только то, что легко тестировать? Зелёная сборка успокаивает, только если тесты за ней проверяют реальные клинические опасности, а неловко часто здоровый на вид показатель покрытия сидит поверх набора, проверяющего тривиальные геттеры и сеттеры, пока шкала ухудшения состояния, сопоставление идентичности и показ аллергий остаются непротестированными. Этот вопрос просит команду поставить набор тестов против журнала опасностей DCB0129/0160 и пользовательских путей наивысшего риска и спросить, опасность за опасностью: «какой названный тест упал бы, если бы это пошло не так?» Напряжение в том, что метрики покрытия вознаграждают объём, а не релевантность риску, и команды соблазнены гнаться за процентом, а не сталкиваться с неловкими, трудно автоматизируемыми случаями (граничные значения, отсутствующие входы, необычные клинические сочетания), где именно и страдают пациенты. Конкретные ракурсы включают: проверку, тестируются ли граничные и крайние случаи, есть ли место исследовательскому и клиническому тестированию (суждению, которое машины не заменят) рядом с автоматизацией и прослеживал ли кто-нибудь реальный инцидент до пробела, который тесты должны были поймать. Честный ответ говорит о покрытии, взвешенном по риску, и может назвать тесты, охраняющие главные опасности, а не цитирует единый процент, как будто это гарантия.

  5. Когда мы тестируем доступность, в комнате реальные пользователи с инвалидностью и реальные клиницисты или только автоматический сканер? Автоматические проверки WCAG дёшевы и принадлежат каждой сборке, но обнаруживают лишь долю барьеров, которые на самом деле исключают людей, а услуга может пройти каждое автоматическое правило, оставаясь непригодной с программой чтения с экрана или только с клавиатуры. Этот вопрос спрашивает, достигают ли ваши тестирование доступности и приёмочное тестирование реальных людей, использующих вспомогательные технологии, и реальных клиницистов, проходящих подлинные рабочие процессы, или «мы протестировали доступность» тихо означает «сканер был зелёным». Компромисс, который стоит вынести на свет, — цена и логистика против честности: набор пользователей вспомогательных технологий и замена клиницистов для реалистичного UAT дороги и легко пропускаются, но их пропуск — способ, которым нарушается юридическая обязанность и опасное несоответствие рабочего процесса (предупреждение не в тот момент, значение по умолчанию, приглашающее к ошибке) достигает действующего отделения. Обсудите, кого вы вовлекаете, насколько они репрезентативны, происходит ли тестирование в обстановке, отражающей клинику, а не тихую переговорную, и что вы делаете с тем, что они находят. Сильный ответ описывает автоматические проверки в сочетании с ручным тестированием пользователями с инвалидностью и UAT под руководством клиницистов как постоянную, бюджетную практику, а не разовую галочку перед запуском.

  6. Когда изменение пересекает границу между нашей системой и чьей-то ещё, кто тестирует стык и узнали бы мы, если бы он сломался? Современные услуги здравоохранения и ухода — сборки интегрированных систем (ЭМК, национальная служба-хребет, поток патологии, модуль стороннего поставщика), и самые опасные дефекты часто живут не внутри одного компонента, а в швах между ними, где изменение с одной стороны интерфейса молча ломает другую. Этот вопрос просит команду нанести на карту её критичные интеграции и спросить по каждой, кто владеет сквозным тестом, какие синтетические данные текут через границу и как ломающее изменение в релизе поставщика было бы обнаружено до того, как оно достигнет пациентов. Напряжение в том, что ни одна команда не чувствует себя полностью ответственной за общий интерфейс, контракты и советы по изменениям движутся с разной скоростью, а тестирование через организационные границы медленно, политично и его легко оставить на волю случая. Конкретные ракурсы включают контрактные и интерфейсные тесты, общие тестовые среды, то, как обрабатываются уведомления поставщика об изменениях, и упражняет ли ваш регрессионный набор интегрированный путь (направление отправлено, получено, подтверждено), а не только вашу собственную половину. Честный ответ называет, кто отвечает за каждый стык, и показывает механизм (автоматизированный там, где возможно), ловящий регрессию через границу, а не предполагает, что другая сторона это покрыла.

На практике: пример из здравоохранения и ухода#

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

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

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

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

Отраслевые перспективы#

Стартап#

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

Малый бизнес#

Устоявшийся небольшой поставщик (практика врача общей практики, общественная аптека, дом престарелых или клиника в одном месте) обычно покупает свои клинические системы, а не строит их, поэтому его работа по тестированию — приёмка, а не построение: подтверждение, что обновление поставщика или новая интеграция всё ещё безопасно работают в реальном рабочем процессе, прежде чем персонал на них положится. При малой или нулевой выделенной ИТ-мощности практическая дисциплина — короткий, повторяемый контрольный список, запускаемый по путям наивысшего риска (запись, назначение, регистрация наблюдений) после каждого изменения поставщика, в идеале в тестовой или учебной среде с синтетическими пациентами, а не на действующих записях. Те же обязанности по безопасности внедрения DCB0160 и доступности применяются, как и к крупному тресту, но без команды тестирования, поэтому реалистичный ход — опираться на гарантии поставщика, сохраняя горстку местных приёмочных проверок, которые можете сделать только вы: вписывается ли это в то, как эта клиника на самом деле работает? Небольшой поставщик, пропускающий даже это и тестирующий изменения прямо на действующих пациентах, — в одном плохом обновлении от инцидента безопасности, который у него нет способа поймать.

Крупная организация#

Траст NHS или крупный поставщик ведёт тестирование в масштабе и под полными гарантиями: выделенные тестовые среды, формальное UAT с заменой клиницистов, операционное приёмочное тестирование, тестирование на проникновение безопасности и советы по изменениям, ограничивающие релизы в действующие клинические системы. Характерный вызов — унаследованные системы: большие, старые системы с тонким автоматизированным покрытием тестами, где каждое изменение вызывает страх, потому что никто не уверен, что оно может сломать, порождая медленные, дорогие ручные регрессионные циклы. Стратегический ход — устойчиво инвестировать в автоматизированное покрытие тестами вокруг областей наивысшего риска, превращая страх в уверенность, а медленные релизы в быстрые, безопасные. Крупные организации также несут бремя координации тестирования по интегрированным системам, где изменение в продукте одного поставщика может сломать продукт другого.

Государство#

Национальный орган поставляет тестирование под Service Standard, опубликованными оценками услуг и высочайшей планкой публичной подотчётности, где сбой тестирования в общенациональной системе может затронуть миллионы и дойти до парламента. Тестирование доступности по WCAG — юридическая обязанность, обеспечиваемая для государственных органов, а нефункциональное тестирование в национальном масштабе (нагрузка, устойчивость, безопасность) экзистенциально, а не необязательно. Вызов — координация обеспечения качества по многим поставщикам и интегрированным услугам и удержание единого определения готовности по разросшейся программе. Национальные услуги также формируют экосистему: тестовые данные, инструменты и стандарты, которые государственный орган предписывает или публикует, становятся нормой, по которой строят поставщики.

Типичные способы сбоя#

  • Перевёрнутая пирамида. Тестирование — в основном медленные, ручные, сквозные проверки; обратная связь медленна, покрытие тонко, а регрессионное тестирование пропускается под давлением времени. Противоядие: инвестировать в широкое основание быстрых автоматизированных модульных и интеграционных тестов.
  • Тестирование как конечная фаза. Тестирование — этап, втиснутый перед запуском и первое, что режут при сдвиге графика. Противоядие: сдвигать влево и встраивать тестирование в конвейер непрерывной интеграции, чтобы оно было непрерывным и дешёвым.
  • Действующие данные в тестовых средах. Реальные записи пациентов копируются в менее защищённые тестовые системы для реалистичности, создавая нарушение, ждущее своего часа. Противоядие: синтетические и анонимизированные данные по умолчанию; действующие данные только как управляемое исключение.
  • Зелёная сборка, нет уверенности. Тесты проходят, но покрывают мелочи, пока реальные клинические опасности не тестируются. Противоядие: явно сопоставлять тесты с журналом опасностей и путями наивысшего риска.
  • Доступность как автоматическая галочка. Прохождение автоматического сканирования принимается за соответствие, пока реальные пользователи вспомогательных технологий никогда не вовлекаются. Противоядие: сочетать автоматические проверки с ручным тестированием пользователями с инвалидностью.
  • Отменяемое определение готовности. «Готово» определено, но регулярно отменяется под давлением сроков, запуская небезопасную работу как завершённую. Противоядие: автоматизировать ворота и дать кому-то полномочия задержать запуск по соображениям качества.

Модель зрелости#

Измерение Начало Развитие Стандартизация Управление Оркестрация
Стратегия тестирования Ситуативное ручное тестирование перед релизом Некоторые автоматизированные тесты; перевёрнутая пирамида Пирамида тестов с автоматизацией на всех уровнях Покрытие и доля прохождений отслеживаются по целям; стратегия измеряется и активно управляется Культура сдвига влево; быстрая, заслуживающая доверия обратная связь по каждому изменению
Связь регрессии и безопасности Нет систематического регрессионного тестирования Ручные регрессионные циклы, неполные Автоматизированный регрессионный набор, сопоставленный с журналом опасностей Покрытие опасность-тест измеряется и гарантируется; пробелы помечаются и закрываются относительно цели Тесты, привязанные к опасностям, автоматически закрывают воротами каждый релиз
Тестовые данные Действующие данные пациентов копируются небрежно Смесь действующих и анонимизированных, неуправляемая Синтетические/анонимизированные по умолчанию, управляемые Происхождение и доступ к тестовым данным проверяются и докладываются; исключения отслеживаются и ограничены по времени Надёжные синтетические данные с реалистичными крайними случаями; действующие данные никогда не используются
Нефункциональное тестирование Нет или запоздалая мысль Эпизодические проверки нагрузки/безопасности Производительность, безопасность, доступность тестируются рутинно Нефункциональные результаты измеряются относительно определённых порогов, контроли гарантируются Непрерывное нефункциональное тестирование в реалистичном пиковом масштабе
Дефекты и готовность Нет определённой «готовности»; дефекты не отслеживаются «Готово» определено, но часто отменяется Обеспечиваемые ворота; дефекты сортируются по клинической тяжести Тренды дефектов и соблюдение ворот отслеживаются как KPI и управляются по цели Качество заложено; релизы скучны и обратимы

Контрольный список#

  • Существует пирамида тестов: широкое автоматизированное покрытие модульными/интеграционными тестами, немного сквозных тестов, все запускаются в непрерывной интеграции.
  • Наивысшие опасности в журнале опасностей DCB0129/0160 сопоставлены с названными автоматизированными регрессионными тестами.
  • Регрессионный набор запускается и должен пройти до того, как любое изменение достигнет действующей клинической системы.
  • Тестовые и предпроизводственные среды используют синтетические или анонимизированные данные; действующие данные пациентов никогда не используются небрежно.
  • Тестирование производительности и нагрузки проводится относительно реалистичного пикового спроса для критичных клинических путей.
  • Тестирование безопасности и доступности WCAG (автоматическое плюс ручное с пользователями вспомогательных технологий) — постоянные виды тестов.
  • Приёмочное тестирование пользователями проводится с реальными клиницистами в реалистичных условиях, с заложенным в бюджет временем замены.
  • Определение готовности и обеспечиваемые ворота качества существуют и не отменяются тихо под давлением сроков.
  • Дефекты сортируются по клиническому воздействию, а известные проблемы, выпущенные при запуске, записываются как принятые, смягчённые риски.
  • Доказательства тестирования прямо цитируются в отчёте об обосновании клинической безопасности.

Ключевые источники#

  • NHS England Digital — стандарты управления клиническими рисками DCB0129 и DCB0160; журнал опасностей и отчёт об обосновании клинической безопасности.
  • NHS England — NHS Service Standard и NHS Digital Service Manual (доступность, тестирование и эксплуатация надёжной услуги).
  • GOV.UK Service Manual (Government Digital Service) — руководство по тестированию, тестовым данным и средам, доступности и непрерывной поставке.
  • W3C Web Accessibility Initiative — Web Content Accessibility Guidelines (WCAG) 2.2 и техники тестирования.
  • NHS England — Digital Technology Assessment Criteria (DTAC), включая клиническую безопасность, техническую гарантию и удобство использования/доступность.
  • ISTQB (International Software Testing Qualifications Board) — основополагающая терминология тестирования и уровни тестов.
  • Public Sector Bodies (Websites and Mobile Applications) Accessibility Regulations 2018.
  • Mike Cohn — концепция пирамиды тестов; Martin Fowler / Continuous Delivery (Humble & Farley) — практика автоматизации тестирования и CI/CD.

Ссылки#

  1. Software testing — Wikipedia — https://en.wikipedia.org/wiki/Software_testing
  2. Quality assurance — Wikipedia — https://en.wikipedia.org/wiki/Quality_assurance
  3. Unit testing — Wikipedia — https://en.wikipedia.org/wiki/Unit_testing
  4. Integration testing — Wikipedia — https://en.wikipedia.org/wiki/Integration_testing
  5. Shift-left testing — Wikipedia — https://en.wikipedia.org/wiki/Shift-left_testing
  6. Non-functional testing — Wikipedia — https://en.wikipedia.org/wiki/Non-functional_testing
  7. Regression testing — Wikipedia — https://en.wikipedia.org/wiki/Regression_testing
  8. Test automation — Wikipedia — https://en.wikipedia.org/wiki/Test_automation
  9. Continuous integration — Wikipedia — https://en.wikipedia.org/wiki/Continuous_integration
  10. Acceptance testing — Wikipedia — https://en.wikipedia.org/wiki/Acceptance_testing
  11. Web Content Accessibility Guidelines — Wikipedia — https://en.wikipedia.org/wiki/Web_Content_Accessibility_Guidelines
  12. Deployment environment — Wikipedia — https://en.wikipedia.org/wiki/Deployment_environment
  13. Synthetic data — Wikipedia — https://en.wikipedia.org/wiki/Synthetic_data
  14. Clinical risk management standards DCB0129 and DCB0160 — NHS England (Clinical Safety) — https://digital.nhs.uk/services/clinical-safety
  15. NHS service standard and NHS digital service manual — NHS England — https://service-manual.nhs.uk/
  16. Testing your service, and test data and environments — Government Digital Service, GOV.UK Service Manual — https://www.gov.uk/service-manual/technology
  17. Web Content Accessibility Guidelines (WCAG) 2.2 — W3C Web Accessibility Initiative — https://www.w3.org/WAI/standards-guidelines/wcag/
  18. Digital Technology Assessment Criteria (DTAC) — NHS England — https://www.nhs.uk/digital-tools/digital-technology-assessment-criteria-dtac/
  19. Public Sector Bodies (Websites and Mobile Applications) Accessibility Regulations 2018 — UK Government / GOV.UK — https://www.legislation.gov.uk/uksi/2018/952/contents/made
  20. Continuous Delivery — Jez Humble and David Farley — https://continuousdelivery.com/

Редактировать эту страницу на GitHub — источник истины — книга; этот сайт лишь отображает её.