Тестирование в больших компаниях, в enterprise, чаще всего дело сложное и неблагодарное. Разрыв между бизнес-подразделениями и IT огромный: когда разработчик имеет видение на уровне кода, а проверку – на уровне модульных тестов, а заказчик мыслит работающими или неработающими даже не услугами, а целыми процессами, выходящими за рамки одной команды разработки, а то и целого подразделениякомпании. И просит организовать бизнес-тестирование, или сквозное тестирование, или тестирование на основании сценариев от начала и до конца (end 2 end).
Давайте начнём с самого начала – с двух столпов, откуда появилось это пресловутое «сквозное бизнес-тестирование», а именно с пирамиды тестирования и со стандарта ISO9000.
Пирамида тестирования
С пирамидой тестирования, наверняка знаком любой тестировщик, поднаторевший в своей профессии и набившей шишек при общении со смежными подразделениями. Особенно часто к ней приходится апеллировать при обосновании автоматизации тестирования. Какие тесты дешевле и важнее разработать? А запустить?
Суть пирамиды тестирования не хитрая: в основе тестирования следует использовать самые простые и самые быстрые в написании и исполнении тесты – модульные тесты. Конечно, проверка интерфейсов классов и функций вряд ли та вещь, которую можно показать заказчику, но без этого прочного, монолитного, безотказного фундамента вряд ли что-то получится выстроить выше. Как правило несколько десятков функций, методов, классов реализуют какую-либо функциональность для заказчика, и по сути десяток модульных тестов можно свести к каким-то верхнеуровневым тестам. Заказчику нужна уже красивая квартира с отделкой, но при этом вряд ли он останется довольным, когда перекошенные окна в его квартире перестанут открываться, а пол и потолок пойдёт трещинами от первого подувшего ветерка. Однако самому заказчику зайти в квартиру и проверить её качество может быть не самой лучшей идеей. Согласитесь, сложно пользователю проверить качество бетона в фундаменте, так и воспроизвести все погодные условия. Так и в тестировании, конечно, верхнеуровневое тестирование нужно, то только тогда, когда у нас отработали модульные тесты, так и тесты уже более высокого уровня.
Сложнее в разработке и дольше в исполнении более высокоуровневые тесты – интеграционные тесты, которые проверяют корректность работы одновременно работающих модулей, над которыми трудилась вся команда, выпуская свой продукт (систему). То есть проверяется интеграция кода, тестируется система без учёта взаимодействия со внешними системами. Такие тесты уже подразумевают проверку высокоуровневую, скорее всего через обращение к систему через системное API или даже GUI (фронт). Работа с таким типом тестов сложнее – чтобы покрыть все ветки и нюансы кода нужно, скорее всего, задействовать большое количество сильно пересекающихся проверок на различных тестовых данных, а при автоматизации зачастую разрабатывать целый ворох условий и ветвлений в скриптах. То есть, с одной стороны мы уже приблизились к пользователю, усложнив себе жизнь, но с другой стороны, нам ещё сложно находить общий язык, нам это обходится дороже, а качества проверок всё ещё недостаточно. То есть мы можем запустить заказчика в новую квартиру, он может всё проверить, но без учёта взаимодействия с другими жильцами, погодными условиями и коммунальными службами. Согласитесь, толка от идеального мира, модели, в реальной жизни, как правило, немного.
Если мы добавим и эти условия – посмотрим как наша система взаимодействует со внешними системами – поставщиками и потребителями, с нашим окружением, то есть проведём системное тестирование, то легко увидим, что сложность тестирования тоже возрастёт. Нам нужно будет добиваться одновременной работоспособности всех взаимодействующих систем, хотя и без привлечения специалистов по ним. Нам пока что достаточно просто принять какие-то данные от наших поставщиков и передать наши данные нашим потребителям. В правильной последовательности и формате. Дальнейшая судьба данных нас не волнует. Главное – наша система работает правильно в правильном окружении. И всё бы тут хорошо – для нашего заказчика мы можем провести уже полномасштабную демонстрацию, да только в реальной жизни это ещё не все критерии успеха для нашей разработки. Конечно хорошо, что у заказчика появилась его квартира в прочном доме, но если от неё надо добираться, перелезая через колючую проволоку, затем на каноэ по озеру с крокодилами в шалаши, кишащие змеями, то, возможно, мы что-то не то и не там сделали?
Поэтому тут первая идея для сквозного тестирования – проверять не только наше окружение, но и все взаимосвязанные системы, через которые проходят данные принимаемые или отправляемые нашей системой. А это, в свою очередь, означает, что мы должны будем совместить несколько таких «пирамид тестирования» между собой. Постройка хрупкого моста, по которому мы проведём за ручку данные, ценные для пользователя.
Вот только вопрос как это делать? Кому это делать? Как собирать воедино?
ISO9000
Серия стандартов, описывающих системы менеджмента качества, в том числе говорит о том, что любой процесс в организации должен быть описан, задокументирован, даже если это процесс выдачи граблей по осени дворнику. А раз так, что ни один процесс, который проходит внутри ПО, используемого и разрабатываемого в организации, не может не быть описан. Вопрос в том, как это делать? Конечно, лучшее описание, с точки зрения BDD — это описание поведения тестами, под которыми будет лежать пирамида тестирования. Но мы сразу же вернёмся к нашей дилемме с объединением нескольких пирамид тонкими канатами от верхушки к верхушке, по которым без страховки будет ходить наш канатоходец-заказчик и его пользователи.
Process approach is a management strategy that requires organisations to manage its processes and the interactions between them. Thus you need to consider each major process of the company and their supporting processes.
Поэтому проще всего воспользоваться абстракциями – создать хотя бы схему процесса, и указать её входы и выходы, сделать процесс контролируемым и измеряемым, обеспечить взаимосвязь с родительскими и дочерними процессами, как того и требует ISO9000
All processes have:
• inputs;
• outputs;
• operational control;
• appropriate measurement & monitoring.
Each process will have support processes that underpin and enable the process to become realised
Для этой цели лучше всего подходят бизнес-диаграммы, и чаще всего используются стандарты вроде UML, BPMN, ARIS и пр. А сами процессы становятся блок-схемами с нанизанными на них «кубиками». Между «кубиками» происходит взаимодействие, в стандарте BPMN — это поток действий и поток сообщений. И вот это как раз то, что нам нужно!
Любая компания, которая хочет иметь сертификат и следует стандарту ISO9000, скорее всего, обзавелась такими схемами, и они являются неотъемлемой частью верхнеуровневых требований. Если в компании работают хорошие аналитики, то, скорее всего, к низкоуровневым требованиям будут спускаться ссылки-требования на отдельные действия из схем. Они-то нам и нужны.
Фактически, на схемах мы можем увидеть процесс целиком, и понять, какой сценарий нам нужно построить, и к какой системекоманде бежать с какими данными в какой момент.
Я тут не преуменьшаю труд разработчиков, которые пишут грамотный код, который пересылает сообщения между разными частями программно-аппаратных комплексов, но всё держать в уме невозможно. И когда процесс используется во множестве других процессов, лучше иметь такую «карту» при себе для проведения грамотного тестирования, и, тем более для построения тестовой модели.
Что на практике
Итак, мы имеем две вводных – у каждой командысистемы должна быть подготовлена пирамида из тестов – от самых мелких, модульных тестов, до сложных системных тестов, а так же тот факт, что в рамках организации у нас обязаны быть описаны требования в виде бизнес-процессов. Этот факт нам позволит быстро ответить заказчику, какой бизнес-процесс как работает, и на каком моменте из-за чего ломается, а самим, при получения дефектов с промышленной эксплуатации быстро произвести root cause analysis (анализ корневых причин возникновения дефектов). В теории.
А на практике всё опять ложится на тестировщика – как из вороха тестов, тем более чужих, выбрать нужные, выстроить их в цепочку, а на вход каждой из систем подать нужные данные и сверить с корректно определённым ожидаемым результатом?
Самый простой вариант – изначально разрабатывать тесты на основании бизнес-моделей, а деление команд делать по проектам, реализующим тот или иной бизнес-процесс. Для этого в некоторых инструментах управления тестированием есть уже возможность загружать BPMN-схемы (например для HPE ALM – поддерживается загрузка в формате XPDL). HP ALM сам разобьет схему на набор требований (действий), а при желании создаст иерархию требований (модуль Requirements->Business Models). Далее наше дело покрыть требования тестами, а далее выстроить требования, а значит и тесты в цепочки, покрывающие наш бизнес-процесс. Эти цепочки в HPE ALM называются «путями» (path), и позволяют увидеть все комбинации последовательностей. При желании требования, цепочки можно сразу сконвертировать в тесты.
Но даже если не использовать инструменты тестирования, всё равно придётся из бизнес-процесса составлять цепочки. Тем более учитывая несовершенство инструментов (не всё так радужно), а так же тот факт, что, скорее всего, тестовую модель нужно будет собирать пост-фактум, а исполнять и вовсе в виде регресса «общей командой», не прилепленной к новым проектам.
Сколькими путями может дойти белочка до шишки?
В этом случае нам нужно будет открыть тесты каждой из команд, найти привязанные к фигурирующим в бизнес-модели требованиям, и выстроить из них цепочки, сохранив в «общем пространстве». Создание общего пространства – это какой-то суррогат, но в любом случае оно должно быть, пусть в виде амбарной книги, excel, или проектной области в инструменте управления тестированием. Если снова говорить о HPE ALM, то за данный функционал отвечает модуль BPT (Business Process Testing), заодно позволяющий передавать результаты одного теста в параметры другого. Впрочем, при желании и упорном труде на HPE ALM это возможно и реализовать через перестроения тестовых наборов (Test set) в поток выполнения (Execution flow). Тогда при запуске полного набора будут по очереди вызываться тестировщики, ответственные за прохождения каждой из компонент сквозного сценария.
И, увы, одним лишь средством управления тестирования не обойтись. Из моей практики, почти что все инструменты имеют какие-то фатальные недостатки, и поэтому, если вы дойдёте до этапа автоматизации тестирования по бизнес-процессу – то придёте к созданию скрипта, который будет дёргать в нужной последовательности тесты.
В итоге, можно сделать два вывода:
1) для сквозных сценариев используются с большой долей вероятности уже ранее разработанные тесты для каждой из систем, входящей в цепочку (сценарий) бизнес-процесса
Можно все полные тестовые наборы компании представить в виде разреженной матрицы, где по столбцам распределены тесты для каждой системы (для простоты – системные), а по строкам – бизнес-процессы. То есть для тех или иных бизнес-процессов надо выбратьсоздать тесты, покрывающие бизнес-процесс, установить взаимосвязи. Если покрытия нет – это повод восполнить пробелы в тестовой модели, либо удостовериться, что качество обеспечивается другими уровнями тестирования (интеграционное тестирование, модульное тестирование, ревью кода и прогон его через анализаторы).
2) Необходим инструмент наблюдения, трассирования и актуализации бизнес-процесса на предмет синхронизации с тестовой моделью.
И если с созданием тестовой модели инструменты тестирования более-менее сносно справляются, то с актуализацией всё в действительности очень плохо, зачастую проще модель пересоздать заново, чем пытаться увидеть изменения в процессе и тестовой модели. И опыт реальных команд говорит о том, что лучше создавать живую визуализацию архитектуры. Проще всего это сделать в общей зоне, воспользовавшись простой маркерной доской и стикерами. Тогда, команды, которые участвуют в бизнес-процессе могут наглядно видеть, как видоизменяется процесс (убираются и добавляются связи, убираются и добавляются действия). Главное – чтобы все имели доступ к доске. Плюс, обратите внимание, что если в процессе подразумевается сообщений между системами, то, как правило, хотя бы должно быть два теста от каждой системы – на отправку и на приём данных. Впрочем, вместо стикеров можно использовать целый лего-город (из крупных блоков), или что-то ещё более креативное. Главное тут – один язык и одно информационное пространство, чего очень в enterprise не хватает.
В заключение
Организация наглядного и правильного тестирования по бизнес-процессам – сложная и очень дорогая вещь. Обратите внимание, что E2E тестирование – это не просто приёмка, пользовательское тестирование, которое будет выполнять заказчик, это выстраивание мостика, с учётом всех возможных ситуаций, по которому пойдёт заказчик и поведёт за собой в ногу пользователей.
Ещё раз – E2E – это не прогулка на Ладе-Калине через мост, и даже не проезд на двух камазах. Это сложная инженерная работа, обвешивание мостов датчиками и проведение всех возможных проверок и ситуаций — по крайней мере описание этих сценариев.
Нужно или нет вашей компании такой идеальный чистовой прогон – дело исключительно ваших целей и потребностей. Всегда, как и при любом тестировании, следует оценить потенциальные риски от пропущенных дефектах на этой стадии, так и стоимость работ по подготовке и проведения сквозного тестирования. Оценить, что из этого обойдётся вам дороже и только потом действовать. Но в случае сквозного тестирования по бизнес-процессам следует помнить, что оно не имеет смысла без прочного фундамента в виде 100% passrate unit-тестов (~90-100% coverage), без интеграционных тестов (~60-80% coverage, 90-100% passrate), без системных тестов (20-40% coverage, 80-100% passrate). Устанавливать критерии успешности (quality gates) – это больше требования к качеству выпускаемого продукта, главное здесь помнить, что объем E2E тестов – лишь верхушка пирамиды (1-2% coverage, ~99% passrate), которая не должна быть больше его основания, не быть при этом затычкой дыр с предыдущих этапов. Это – дополнение, которое априори считается закрытым на предыдущих этапах.
Организация подобного тестирования – главным образом работа по подготовке и синхронизации тестовых случаев и данных (тест-аналитика), а так же комплекс организационных мероприятий, синхронизация команд в одном месте в одно время на работоспособном тестовом полигоне. Помня это, не следует пробовать показывать заказчику «сквозное тестирование» раньше срока, чтобы не тратить время сразу большого количества людей без всех работающих компонентов, собранных воедино.
P.S. описанные инструменты, а так же практики – сугубо для примера, автор не ставил цели себе рекламировать продукты и декламировать единственно верным данный подход к сквозному тестированию.
Владимир Репин
Член ABPMP Russia
Доцент
Консультант по управлению
Бизнес-тренер
Кандидат технических наук
В статье Владимира Репина рассмотрена методика формирования модели сквозного процесса масштаба компании в среде Business Studio. Приводится пример модели в нотации IDEF0. Рассматриваются сценарии выполнения сквозного процесса. Представленная методика может быть использована при работе с любым программным продуктом, предназначенным для проектирования архитектуры бизнес-процессов организации.
Введение
С точки зрения повышения эффективности бизнеса важно уметь строить и использовать для оптимизации модель сквозного процесса масштаба компании.
В качестве примера я выбрал процесс «Разработка нового изделия: от идеи до постановки на производство» и создал его модель в Business Studio.
Обращаю внимание, что у меня не было цели создавать модель «идеального» процесса с претензией на «лучшую практику». Цель построения модели — показать возможности методологии моделирования сквозных процессов масштаба компании в среде Business Studio.
Модель сквозного процесса в нотации IDEF0
На рис. 1 представлена контекстная модель этого процесса. Видно, что стрелки приходят «ниоткуда» и уходят в «никуда». Понятно, что у сквозного процесса есть внутренние поставщики и потребители (процессы). Но на контекстной диаграмме Business Studio, увы, нельзя показать междиаграммные ссылки на другие процессы модели (техническое ограничение). С этим придется мириться. С другой стороны, в данном случае важно разработать модель отдельного сквозного процесса, а не всей компании.
Рис. 1. Диаграмма процесса «Разработка нового продукта». Контекст.
Сквозной процесс строится из кусков — функциональных процессов подразделений разного уровня. Предполагается, что, перед тем, как начать строить модель сквозного процесса, вы четко понимаете структуру процессов (функций), выполняемых в подразделениях. Более того, желательно иметь все эти процессы в виде иерархического справочника в Business Studio (только реестр, диаграммы можно сгенерировать, но они будут без связей).
На модели А0 сквозного процесса можно использовать блоки (процессы), которых нет в функциональной модели (реестрах функциональных процессов подразделений). Почему так?
Дело в том, что видение сквозного процесса масштаба компании, его структуры является предметом для обсуждения и согласования топ-менеджеров, например, в рамках проведения Процессного комитета (создание которого рекомендует BPM CBOK).
Другими словами, группировка процессных категорий на диаграмме А0 сквозного процесса (см. рис. 2) может отличатся от существующих структурных подразделений компании. Это две большие разницы.
Рассмотрим диаграмму процесса «Разработка нового продукта» (рис. 2). Видно, что рассматриваемый сквозной процесс является весьма масштабным. Он состоит из блоков (процессных категорий), которые сами по себе являются сложными.
Рис. 2. Диаграмма процесса «Разработка нового продукта».
Очевидно, что процесс такого уровня сложности невозможно представить в виде какой-то одной цепочки операций (Work Flow — поток работ, в нотации eEPC или BPMN), выполняемых конкретными сотрудниками. (Теоретически, это сделать можно, но модель будет включать несколько тысяч шагов и сотни шлюзов, что сделает ее абсолютно нечитаемой и практически неприменимой.)
Если мы декомпозируем, например, «Выполнение НИОКР», то, скорее всего, на диаграмме увидим процессы, которые тоже нерационально представлять в виде диаграмм Work Flow.
Очевидно, что сквозной процесс такого масштаба нуждается в постоянном административном управлении. Поэтому наличие на схеме блока «Управление разработкой новых и изменением текущих продуктов» представляется вполне оправданным.
На рис. 2 некоторые блоки показаны розовым цветом. Это сделано специально, чтобы обратить ваше внимание на тот факт, что эти процессы (полностью или частично) выполнятся не только в рамках рассматриваемого сквозного процесса, но и задействованы при выполнении других процессов.
На рис. 3 показана диаграмма процесса «Разработка требований к новому продукту».
Рис. 3. Диаграмма процесса «Разработка требований к новому продукту».
Семь процессов, представленные на диаграмме, выполняются последовательно только в идеальном случае (кроме блока «Анализ необходимости внесения изменений в существующий продукт»).
В реальности часть из них может работать одновременно, с разными задачами. Видно, что возможны возвраты и переделки, например, «Анализ возможности и необходимости создания нового продукта», «Разработка ТЗ на новый продукт» и «Принятие решения по новому продукту».
Если рассматривать блоки деятельности, представленные на схеме 3, как Work Flow (т. е. на следующем уровне), то для каждого такого процесса возможные различные условия:
- старта в части запуска предыдущими процессами;
- завершения в части запуска других процессов.
Сценарии выполнения сквозного процесса
На рис. 4 цветом показаны различные сценарии последовательного запуска процессов. На практике, конечно, их гораздо больше, чем три.
Рис. 4. Диаграмма процесса «Разработка требований к новому продукту». Сценарии.
Желтый сценарий — «идеальный», когда всё делается с первого раза и продукт получается удачный.
Оранжевый сценарий — когда нужна консультация с клиентом с последующей повторной оценкой идей, а также, повторное выполнение разработки требований и принятия решений по результатам выпуска опытных партий продукта.
Третий, розовый сценарий, запускается при получении рекламаций, анализ которых может потребовать радикальных мер, приводящих к созданию, по сути, нового продукта и т. д.
Очевидно, что сценариев выполнения сквозного процесса в части блока «Разработка требований к новому продукту» может быть множество.
Зачем нужна информация о том, какие процессы в рамках конкретного сценария должны запускаться? Ответ может быть следующий:
- для понимания процесса и возможностей его оптимизации;
- для определения требований в рамках регламентации сквозного процесса;
- для автоматизации сквозного процесса в BPMS системе — нужна архитектура процессов и понимание того, при каких условиях и с какими данными эти процессы будут последовательно запускаться в работу.
Часто бывает, что при построении модели выхватывают какой-то один сценарий или микс 2–3 сценариев. При этом забывают о том, что возможны и другие сценарии. Результат — рыхлая, фрагментарная модель, которая никуда не годится (процесс не может быть выполнен).
Попытка регламентировать, а уж тем более автоматизировать такой «дырявый» сценарий приведет к тому, что постоянно будет требоваться ручное управление. При этом я не хочу сказать, что для начала автоматизации нужно знать всё. Нет. Можно начинать автоматизировать процесс по частям. Но при этом понимание архитектуры сквозного процесса в целом поможет существенно сократить время на последующие переделки.
Для анализа некоторых возможных сценариев выполнения сквозного процесса можно построить соответствующую матрицу — см. пример ниже.
№ | Наименование процесса | Сценарий А | Сценарий Б | Сценарий В |
---|---|---|---|---|
1 | Управление разработкой новых и изменением текущих продуктов | |||
1.1. | Планирование разработки новых видов продукции | + | + | − |
1.2. | Управление проектом разработки нового вида продукции | + | + | − |
1.3. | Анализ инвестиционной привлекательности новых видов продукции | + | + | − |
1.4. | Формирование отчетов по разработке новых видов продукции | + | + | − |
2 | Разработка требований к новому продукту | |||
2.1. | Управление разработкой требований к новому продукту | + | + | + |
2.2. | Поиск идей по новым продуктам | + | + | − |
2.3. | Оценка и отбор идей по новым продуктам | + | + | + |
2.4. | Проведение консультаций с постоянными клиентами по новому продукту | − | + | − |
2.5. | Анализ возможности и необходимости создания нового продукта | + | + | − |
2.6. | Анализ необходимости внесения изменений в существующий продукт | − | − | + |
2.7. | Разработка ТЗ на новый продукт | + | + | − |
2.8. | Принятие решения по новому продукту | + | + | + |
3 | Выполнение НИОКР | |||
3.1. | Управление процессами НИОКР | + | + | − |
3.2. | Анализ инновационных технологий и продуктов конкурентов | + | + | − |
3.3. | Разработка/изменение дизайна продукта | − | + | + |
3.4. | Выполнение научно-исследовательских работ | + | + | − |
3.5. | Выполнение опытно-конструкторских работ | + | + | − |
3.6. | Проведение верификации на компьютерной модели | − | + | − |
4 | Разработка технологии производства нового продукта | |||
4.1. | Управление разработкой технологии производства | + | + | + |
4.2. | Разработка НТД по продукту | + | + | + |
4.3. | Тестирование новых видов сырья и упаковки | + | + | − |
4.4. | Разрабокта нормативов по новому продукту | + | + | − |
5 | Подготовка и производство пробных партий нового продукта | |||
5.1. | Управление подготовкой и производством пробных партий | + | + | − |
5.2. | Подготовка оборудования | + | + | − |
5.3. | Подготовка остатки | + | + | − |
5.4. | Закупка сырья для пробных партий | − | + | − |
5.5. | Изготовление пробной партии | + | + | − |
5.6. | Тестирование пробной партии | + | + | − |
6 | Запуск нового продукта в серийное производство | |||
6.1. | Управление запуском серийного производства нового продукта | + | + | − |
6.2. | Заключение договоров с поставщиками | − | + | − |
6.3. | Закупка, монтаж и пуско-наладка оборудования | − | + | − |
6.4. | Модернизация оборудования | + | − | − |
6.5. | Сертификация продукта | + | + | − |
6.6. | Внесение изменений в НТД | + | + | + |
6.7. | Внесение изменений в НМД | + | + | − |
6.8. | Определение цены на новый продукт | + | + | − |
6.9. | Обучение производственного персонала | + | + | − |
6.10. | Обучение сбытового персонала | + | + | − |
Некоторые процессы в этой таблице требуют декомпозиции еще на один уровень, прежде чем их можно будет описать в формате Work Flow (например, в нотации BPMN).
Анализ сценариев
Далее, если все процессы будут описаны в формате Work Flow, можно будет для каждого процесса рассчитать показатели выполнения одного экземпляра:
- минимальное, нормативное, максимальное время выполнения;
- затраты на выполнение.
(Кстати, для целей анализа времени выполнения и затрат можно использовать функционал имитационного моделирования в Business Studio).
Затем, с учетом среднего количества запусков каждого процесса (возможны итерационные повторения), можно рассчитать показатели конкретного сценария сквозного процесса в целом:
- общее время выполнения;
- совокупные затраты.
Полученную информацию можно использовать для анализа эффективности производства нового продукта. Например, при заданном размере планируемой партии может оказаться, что затраты на выполнение соответствующего сценария сквозного процесса будут больше, чем маржа от производства этой партии под конкретный заказ клиента. В этом случае, нужно будет принять решение о целесообразности разработки и производства этого нового продукта.
Если не брать в расчет стоимость всех процессов сценария, а только учесть стоимость сырья и материалов и разнести накладные (как это может сделать планово-экономический отдел), то картина окажется совершенно другой. Как следствие — будет принято ошибочное управленческое решение.
Также, результаты анализа можно использовать для определения целей и показателей оптимизации процессов, входящих в сценарий с точки зрения сокращения времени и затрат сквозного процесса в целом. Можно будет выявить процессы, которые являются узким местом как по времени, так и по затратам.
Очевидно, что общие показатели для «сквозного процесса в целом» (а не отдельного типового сценария) будут, в значительной мере, «средней температурой по больнице». Выбор и расчет показателей для сквозного процесса такого масштаба является весьма сложной задачей.
Резюме.
Если цель проекта — повышение эффективности сквозного процесса, то можно и нужно сразу браться за его описание и анализ, не пытаясь создать полную, комплексную архитектуру процессов в Business Studio. Используя функциональные возможности системы, можно:
- построить архитектуру сквозного процесса;
- описать всего его подпроцессы в нотации BPMN и увязать их по входам/выходам и условиям запуска;
- провести анализ процессов с использование движка имитационного моделирования (или без него), определить время выполнения процессов и соответствующие затраты;
- построить матрицу сценариев выполнения сквозного процесса;
- выполнить анализ и оптимизацию сквозного процесса;
- регламентировать сквозной процесс;
- разработать систему целей и показателей для управления сквозным процессом (для основных сценариев);
- разработать техническое задание на автоматизацию сквозного процесса.
Опубликовано по материалам:
http://www.finexpert.ru/view/stsenarii_vypolneniya_skvoznogo_protsessa/956
Март 2019 г.
Рекомендуемые материалы по тематике
Современные методы разработки системы корпоративных регламентов
Декомпозиция процессов в нотации BPMN в Business Studio
Процессные команды как основа культуры эффективности
Глоссарий. Положение о структурном подразделении
Сквозное тестирование, оно же End-to-end или E2E, — это процесс тестирования, при котором происходит подробная эмуляция пользовательской среды. То есть при данном тестировании имитируют:
щелчки мышью,
нажатия на кнопки,
заполнение форм,
переходы по страницам и ссылкам,
и другие поведенческие факторы.
Суть этого тестирования — посмотреть, так ли работает программа для конечного клиента, как рассчитывалось изначально? При этом нужно учитывать, что пользователю все равно, функционирует ли программа «как надо», ему главное, чтобы программа функционировала и оправдывала ожидания, поэтому основной упор делается на корректное функционирование.
Е2Е—процесс — это конечный этап тестирования, после него никакого тестирования не проводят. Он самый трудозатратный и дорогой, именно поэтому находится на вершине пирамиды тестирования.
Е2Е—процесс — что это?
Е2Е—процесс происходит при помощи сложных программ для тестирования, написанных специально для тестирования или «вручную», от этого данный процесс требует много времени и затрат. Поэтому до его применения обычно проводят более дешевые и нетребовательные виды тестирования.
К примеру, компания Гугл при разработке своих продуктов следует правилу «70-20-10», цифры которого показывают процентное соотношение от общего количества тестов, то есть:
70% занимают юнит-тесты;
20% занимают интеграционные тесты;
10% занимают Е2Е—тесты.
Конечно, такая комбинация тестов не является эталонной. Для каждого проекта она будет своя. Но идея в том, что количество Е2Е—тестов должно быть куда меньше, чем остальных тестов. В некоторых проектах сквозного тестирования вообще может не быть, так как unit-тесты и интеграционные тесты покрывают все процессы программы. А иногда просто их нецелесообразно проводить из-за того, что проект небольшой и тестируемый функционал может быть еще много раз переписан. Поэтому можно сказать, что E2E — это процесс больших и сложных проектов.
Какие бывают Е2Е—тесты
Нет единого алгоритма сквозного тестирования, так как многое будет зависеть от сложности самого проекта и что конкретно нужно тестировать. Е2Е — это лишь название процесса тестирования, а не его метод или алгоритм. Но при этом выделяют два основных типа сквозного тестирования, на которых мы немного остановимся.
Типы Е2Е—тестирования:
Метод «черного ящика». Это специальный E2E-процесс тестирования, при котором само тестирование проводится только с интерфейсом пользователя. «Черным ящиком» называется, потому что тестировщика интересуют только проблемы интерфейса: работоспособность функций, ошибки при взаимодействии, ошибки при определенном поведении пользователей и т. д., и его абсолютно не интересует, как это все работает внутри программы. В большинстве случаев тестировщик даже не понимает, как с помощью кода получается тот или иной функционал. Такой тип тестирования считается самым распространенным.
Метод «белого ящика». В этом типе тестирования тестировщику известна «внутренняя кухня» программы. А это значит, что ему известно, как себя должна повести программа при определенном действии пользователя. Он анализирует, совпадает ли задуманный результат поведения с реально происходящим, и понимает, где нужно вносить необходимые корректировки.
Любой сквозной тест — это:
в первую очередь тестирование UI;
тяжелый и медленный тест;
применение метода «черного ящика» и найм сторонних тестировщиков, никак не связанных с разработкой программы;
тяжелый «отлов» найденной проблемы;
тестирование всех модулей и всех систем целиком, поэтому требуется сложный и эффективный софт или работа «руками»;
гарантия, что программа работает так, как задумано, или нет.
Заключение
Е2Е — это дорогой и сложный процесс тестирования, к которому нужно подготавливаться основательно. Давайте проведем аналогию с мостом. Мост через реку — это тестируемая программа. Так вот Е2Е—тестирование — это не просто проехать по мосту груженными КАМАЗами и смотреть издалека: выдержит или не выдержит. Е2Е — это куча всевозможных датчиков, расставленных по всему мосту, которые сигнализируют о каждом шаге и готовы фиксировать любой сценарий развития на «мосту»:
перегруз;
колебания;
микротрещены;
нагрузку на каждый трос или балку;
поведение моста при наводнении, землетрясении, пожаре или аварии на нем;
и др.
Нужен или нет Е2Е именно вашей компании/программе/разработке? Это дело индивидуальное и зависит только от поставленных целей и потребностей. Практика показывает, что до сквозного тестирования должно проводиться множество других более простых тестов и на основе полученных от них результатов решается, нужен ли проекту Е2Е—тест или нет.
Что такое сквозное тестирование?
КОНЕЦ-КОНЕЦ ТЕСТИРОВАНИЯ — это тип тестирования программного обеспечения, который проверяет программную систему вместе с ее интеграцией с внешними интерфейсами. Целью сквозного тестирования является создание полного производственного сценария.
Наряду с системой программного обеспечения, она также проверяет пакетную обработку / обработку данных из других восходящих / нисходящих систем. Отсюда и название «Сквозной конец» . Сквозное тестирование обычно выполняется после функционального и системного тестирования . Он использует реальные данные, такие как данные и тестовая среда, для имитации настроек в реальном времени. Сквозное тестирование также называется цепным тестированием .
Зачем заканчивать тестирование?
Современные программные системы являются сложными и взаимосвязаны с несколькими подсистемами
Подсистема может отличаться от текущей системы или может принадлежать другой организации. Если какая-либо из подсистем выйдет из строя, вся система программного обеспечения может рухнуть . Это серьезный риск, и его можно избежать путем сквозного тестирования. Сквозное тестирование проверяет весь системный процесс. Это увеличивает тестовое покрытие различных подсистем. Это помогает обнаруживать проблемы с подсистемами и повышает доверие к общему программному продукту.
Сквозной процесс тестирования:
Следующая диаграмма дает обзор процесса сквозного тестирования.
Основные виды деятельности, участвующие в сквозном тестировании:
- Изучение сквозных требований к испытаниям
- Настройка тестовой среды и требования к аппаратному и программному обеспечению
- Опишите все системы и процессы их подсистем.
- Описание ролей и обязанностей для всех систем
- Методология и стандарты тестирования
- Комплексное отслеживание требований и разработка тестовых случаев
- Входные и выходные данные для каждой системы
Как создать сквозные тестовые случаи?
Сквозная структура тестирования тестирования состоит из трех частей
- Сборка пользовательских функций
- Условия сборки
- Сборка тестов
Давайте посмотрим на них подробно: —
Создание пользовательских функций
Следующие действия должны быть выполнены как часть пользовательских функций сборки:
- Перечислите особенности системы и их взаимосвязанных компонентов
- Перечислите входные данные, действие и выходные данные для каждой функции или функции
- Определите отношения между функциями
- Определите, может ли функция быть многоразовой или независимой
Например, рассмотрите сценарий, когда вы входите в свой банковский счет и переводите деньги на другой счет из другого банка ( подсистема третьей стороны)
- Вход в банковскую систему
- Проверьте сумму остатка на счете
- Перевести некоторую сумму со своего счета на другой банковский счет ( подсистема третьих лиц)
- Проверьте свой последний баланс счета
- Выход из приложения
Условия построения на основе пользовательских функций
Следующие действия выполняются как часть условий строительства:
- Создание набора условий для каждой определенной пользовательской функции
- Условия включают последовательность, время и условия данных
Например, проверка большего количества условий, таких как
Страница авторизации
- Неверное имя пользователя и пароль
- Проверка с действительным именем пользователя и паролем
- Проверка надежности пароля
- Проверка сообщений об ошибках
Сумма остатка
- Проверьте текущий баланс через 24 часа. (Если перевод отправлен в другой банк)
- Проверьте сообщение об ошибке, если сумма перевода больше текущей суммы баланса
Создайте тестовый сценарий
Построение сценария тестирования для определенной пользовательской функции
В этом случае,
- Войти в систему
- Проверка суммы банковского баланса
- Перевести сумму банковского баланса
Построить несколько тестовых случаев
Создайте один или несколько контрольных примеров для каждого определенного сценария. Контрольные примеры могут включать каждое условие как отдельный контрольный пример.
Метрики для сквозного тестирования:
Ниже приведены некоторые из многих показателей, используемых для сквозного тестирования.
- Статус подготовки к тест-кейсу: он дает прогресс в подготовке к тест-кейсу относительно запланированного
- Еженедельный прогресс теста — Предоставляет еженедельные сведения о процентном завершении теста — Сбой, не выполнено и выполнено в сравнении с запланированными для выполнения тестами.
- Состояние дефектов и детализация — показывает процент открытых и закрытых дефектов по неделям. Кроме того, недельное распределение дефектов в зависимости от серьезности и приоритета
- Доступность среды — общее количество часов «вверх» / общее количество часов, запланированных в день для тестирования
Сквозное тестирование против системного тестирования
Сквозное тестирование |
Тестирование системы |
---|---|
Проверяет программную систему, а также взаимосвязанные подсистемы | Проверяет только программную систему в соответствии со спецификациями требований. |
Он проверяет весь процесс сквозного процесса. | Он проверяет функциональные возможности и функции системы. |
Все интерфейсы, бэкэнд-системы будут рассмотрены для тестирования | Функциональное и нефункциональное тестирование будет рассматриваться для тестирования |
Он выполняется после завершения тестирования системы. | Выполняется после тестирования интеграции . |
Сквозное тестирование включает проверку внешних интерфейсов, которые могут быть сложными для автоматизации. Следовательно, ручное тестирование является предпочтительным. | Как ручное, так и автоматическое могут быть выполнены для тестирования системы |
Вывод
В программной инженерии сквозное тестирование — это процесс проверки программной системы вместе с ее подсистемами. Самая большая проблема в этом тестировании состоит в том, чтобы иметь достаточно знаний обо всей системе, а также о взаимосвязанной подсистеме.
Оригинальная публикация
У вас наверняка было такое, когда вы и ваши друзья очень хотели посмотреть какой-нибудь фильм, а после жалели о том, что потратили на него время. Или, может быть, вы помните тот момент, когда ваша команда думала, что нашла «киллер фичу» и обнаруживала ее «подводные камни» только после выпуска продукта.
Хорошие идеи часто терпят неудачу на практике, и в мире тестирования хорошим примером этого может служить стратегия тестирования, построенная на автоматизации end-to-end тестов.
Тестировщики могут инвестировать свое время на написание многих типов автоматических тестов, включая модульные тесты, интеграционные тесты и end-2-end тесты, но эта стратегия в основном направлена на end-2-end тесты, которые проверяют продукт или услугу в целом. Как правило, эти тесты имитируют реальные пользовательские сценарии.
Источник
Хотя полагаться в первую очередь на end-2-end тесты — плохая идея, но теоретически можно придумать несколько доводов в пользу этого утверждения.
Итак, номер один в списке Google из десяти вещей, которые, как мы знаем, являются правдой: «Интересы пользователей превыше всего». Таким образом, использование end-2-end тестов, которые фокусируются на реальных пользовательских сценариях, выглядит отличной идеей. Кроме того, эта стратегия в целом привлекательна для многих участников процесса.
- Разработчикам эта стратегия нравится, потому что можно перенести бОльшую часть тестирования, если вообще не всю, на других.
- Руководителям и лицам, принимающим решения, она нравится, потому что тесты, имитирующие реальные пользовательские сценарии, могут помочь им легко определить, как неудачный тест повлияет на пользователя.
- Тестировщикам такая стратегия нравится, потому что они беспокоятся как бы не пропустить ошибки влияющие на пользователей и как бы не не написать тест, который не проверяет реальное поведение; написание тестов отталкиваясь от сценариев работы пользователя часто позволяет избежать обеих проблем и дает тестировщику чувство выполненного долга.
End-2-end тесты на практике
Итак, если эта стратегия тестирования выглядит так хорошо в теории, то что же с ней не так на практике? Чтобы продемонстрировать это, я ниже приведу выдуманный сценарий, но который основан на реальных ситуациях, знакомых как мне, так и другим тестировщикам.
Допустим команда создает сервис для редактирования документов в режиме онлайн (например, Google Docs). Давайте предположим, что у команды уже есть какая-то фантастическая инфраструктура для тестирования. Каждую ночь:
- выполняется сборка последней версии сервиса,
- затем эта версия развертывается в среде тестирования команды,
- затем в этой среде тестирования прогоняются все сквозные тесты,
- команда получает по электронной почте отчет с кратким изложением результатов тестирования.
Крайний срок приближается быстро. Чтобы поддерживать высокую планку качества продукции, допустим, мы решаем, что требуется по крайней мере 90% успешных end-2-end тестов, чтобы мы считали что версия готова. Допустим, крайний срок наступает через один день.
Несмотря на многочисленные проблемы, тесты в конечном итоге выявили реальные ошибки.
Что прошло хорошо
Ошибки, влияющие на пользователя, были выявлены и исправлены до того, как они к нему попали.
Что пошло не так
- Команда завершила свой этап программирования на неделю позже (и много работала сверхурочно).
- Поиск основной причины неудачного end-2-end теста является трудоемким и может занять много времени.
- Неудачи параллельной команды и сбои в оборудовании сдвинули результаты тестов на несколько дней.
- Многие мелкие ошибки были спрятаны за большими ошибками.
- Результаты end-2-end тестов временами были ненадежными.
- Разработчикам пришлось подождать до следующего дня, чтобы узнать, сработало ли исправление или нет.
Итак, теперь, когда мы знаем, что пошло не так в end-2-end стратегии, нам нужно изменить наш подход к тестированию, чтобы избежать многих из вышеперечисленных проблем. Но каков правильный подход?
Истинная ценность тестов
Как правило, работа тестировщика заканчивается, когда тест провален. Ошибка регистрируется, и затем задача разработчика — исправить ошибку. Однако чтобы определить, где end-2-end стратегия не срабатывает, нам нужно выйти за рамки этого мышления и подойти к проблеме используя наши базовые принципы. Если мы «сосредоточимся на пользователе (а все остальное приложится)», мы должны спросить себя: приносит ли проваленный тест пользу пользователю?
Вот ответ: «Проваленный тест напрямую не приносит пользы пользователю».
Хотя это утверждение, на первый взгляд, кажется шокирующим, оно верно. Если продукт работает, он работает, независимо от того, говорит ли тест, что он работает или нет. Если продукт сломан, он сломан, независимо от того, говорит ли тест, что он сломан или нет. Итак, если проваленные тесты не приносят пользы пользователю, то что же приносит ему пользу?
Исправление ошибок напрямую приносит пользу пользователю.
Пользователь будет счастлив только тогда, когда это непредсказуемое поведение (ошибка) исчезнет. Очевидно, чтобы исправить ошибку, вы должны знать, что она существует. Чтобы узнать, что ошибка существует, в идеале у вас должен быть тест, который ее обнаруживает (потому что если тест не выявит ошибку, то ее найдет пользователь). Но во всем этом процессе, от провала теста до исправления ошибки, добавленная стоимость появляется на самом последнем шаге.
Таким образом, чтобы оценить любую стратегию тестирования, вы не можете просто оценить, как она находит ошибки. Вы также должны оценить, как это позволяет разработчикам исправлять (и даже предотвращать) их.
Построение правильной обратной связи
Тесты создают цикл обратной связи, который информирует разработчика о том, работает продукт или нет. Идеальный цикл обратной связи имеет несколько свойств.
- Он должен быть быстрым. Ни один разработчик не хочет ждать часами или днями, чтобы узнать, работает ли его изменение. Иногда изменение не работает (никто не совершенен), и цикл обратной связи должен выполняться несколько раз. Более быстрый цикл обратной связи приводит к более быстрым исправлениям. Если цикл достаточно быстр, разработчики могут даже запустить тесты перед проверкой изменений.
- Он должен быть надежным. Ни один разработчик не хочет тратить часы на отладку теста, только для того, чтобы выяснить, что сам тест был ошибочным. Ненадежные тесты снижают доверие разработчика к ним, и в результате такие тесты часто игнорируются, даже когда они обнаруживают реальные проблемы с продуктом.
- Он должен позволять быстро находить ошибки. Чтобы исправить ошибку, разработчикам необходимо найти конкретное строки кода, вызывающие ошибку. Когда продукт содержит миллионы строк кодов, а ошибка может быть где угодно, это все равно что пытаться найти иголку в стоге сена.
Думайте о малом, а не о большем
Так как же нам создать этот идеальный цикл обратной связи? Думая о малом, а не о большем.
Модульное тестирование
Модульные тесты берут небольшой фрагмент продукта и тестируют его изолированно от всего остального. Они почти создают тот самый идеальный цикл обратной связи:
- Модульные тесты быстрые. Нам нужно написать небольшой блок кода и мы уже можем тестировать его. Модульные тесты, как правило, довольно маленькие. На самом деле, одна десятая секунды — слишком долго для модульных тестов.
- Модульные тесты надежны. Простые системы и небольшие модули кода, как правило, гораздо более устойчивые. Кроме того, лучшие практики модульного тестирования — в частности, практики, связанные с герметичными тестами — полностью устраняют такие проблемы.
- Модульные тесты позволяют быстро найти ошибки. Даже если продукт содержит миллионы строк кода, если модульный тест не пройден, то вы, скорее всего, взглянув на тестируемый модуль сразу поймете в чем ошибка.
Написание эффективных модульных тестов требует навыков в таких областях, как управление зависимостями, написание заглушек/ mock-ов и герметичное тестирование. Я не буду описывать эти навыки здесь, но для начала типичный пример, предлагаемый новому Googler -у (или как их называют в Google — Noogler-у), — это то, как Google создает и тестирует секундомер.
Модульные тесты против end-2-end тестов
При end-2-end тестах вам нужно подождать: сначала создания всего продукта, затем его развертывания и, наконец, выполнения всех end-2-end тестов. Когда тесты все же заработали, вероятнее всего, они периодически будут сбоить. И даже если тест обнаружит ошибку, она может быть в любом месте продукта.
Хотя сквозные тесты лучше справляются с моделированием реальных пользовательских сценариев, это преимущество быстро перевешивается всеми недостатками сквозного цикла обратной связи:
Интеграционные тесты
У модульных тестов есть один существенный недостаток: даже если модули работают хорошо по отдельности, вы не знаете, хорошо ли они работают вместе. Но даже тогда вам не обязательно проводить end-2-end тесты. Для этого вы можете использовать интеграционный тест. Интеграционный тест берет небольшую группу модулей, часто два, и тестирует их поведение как единого целого.
Если два блока не интегрируются должным образом, зачем писать сквозной тест, когда вы можете написать гораздо меньший, более сфокусированный интеграционный тест, который обнаруживает ту же ошибку? Конечно, вы должны понимать весь контекст при тестировании, но для того, чтобы проверить работу двух модулей вместе вам всего лишь нужно совсем чуть-чуть расширить перспективу.
Пирамида тестов
Даже при проведении и модульных, и интеграционных тестов вам, скорее всего, потребуется небольшое количество end-2-end тестов для проверки системы в целом. Чтобы найти правильный баланс между всеми тремя типами тестов, лучше всего использовать визуальную пирамиду тестирования. Вот упрощенная версия пирамиды тестирования из вступительной речи конференции Google Test Automation 2014 года.
Основная часть ваших тестов — это модульные тесты в нижней части пирамиды. По мере того как вы продвигаетесь вверх по пирамиде, ваши тесты становятся более всеобъемлющими, но в то же время количество тестов (ширина вашей пирамиды) уменьшается.
По-хорошему, Google предлагает разделение 70/20/10: 70% модульных тестов, 20% интеграционных тестов и 10% end-2-end тестов. Точное соотношение будет отличаться для каждой команды, но в целом она должна сохранять форму пирамиды. Старайтесь избегать следующих «форм»:
- Перевернутая пирамида / рожок мороженого. Команда опирается в основном на сквозные тесты, используя несколько интеграционных тестов и совсем немного модульных тестов.
- Песочные часы. Команда начинает с большого количества модульных тестов, а затем использует сквозные тесты там, где должны использоваться интеграционные тесты. Песочные часы имеют много модульных тестов в нижней части и много сквозных тестов в верхней части, но мало интеграционных тестов в середине.
Точно так же, как обычная пирамида имеет тенденцию быть самой стабильной структурой в реальной жизни, пирамида тестирования также имеет тенденцию быть самой стабильной стратегией тестирования.
Вакансии
Если вы любите и умеете писать модульные тесты, то вам к нам! В компании ЛАНИТ открыта вакансия разработчика Java в DevOps команду, где вы найдете себе единомышленников.
Обсудить в форуме
В статье Владимира Репина рассмотрена методика формирования модели сквозного процесса масштаба компании в среде Business Studio. Приводится пример модели в нотации IDEF0. Рассматриваются сценарии выполнения сквозного процесса. Представленная методика может быть использована при работе с любым программным продуктом, предназначенным для проектирования архитектуры бизнес-процессов организации.
Введение
С точки зрения повышения эффективности бизнеса важно уметь строить и использовать для оптимизации модель сквозного процесса масштаба компании.
В качестве примера я выбрал процесс «Разработка нового изделия: от идеи до постановки на производство» и создал его модель в Business Studio.
Обращаю внимание, что у меня не было цели создавать модель «идеального» процесса с претензией на «лучшую практику». Цель построения модели – показать возможности методологии моделирования сквозных процессов масштаба компании в среде Business Studio.
Модель сквозного процесса в нотации IDEF0
На рис. 1 представлена контекстная модель этого процесса. Видно, что стрелки приходят «ниоткуда» и уходят в «никуда». Понятно, что у сквозного процесса есть внутренние поставщики и потребители (процессы). Но на контекстной диаграмме Business Studio, увы, нельзя показать междиаграммные ссылки на другие процессы модели (техническое ограничение). С этим придется мириться. С другой стороны, в данном случае важно разработать модель отдельного сквозного процесса, а не всей компании.
Сквозной процесс строится из кусков – функциональных процессов подразделений разного уровня. Предполагается, что перед тем, как начать строить модель сквозного процесса, вы четко понимаете структуру процессов (функций), выполняемых в подразделениях. Более того, желательно иметь все эти процессы в виде иерархического справочника в Business Studio (только реестр, диаграммы можно сгенерировать, но они будут без связей).
На модели А0 сквозного процесса можно использовать блоки (процессы), которых нет в функциональной модели (реестрах функциональных процессов подразделений). Почему так?
Дело в том, что видение сквозного процесса масштаба компании, его структуры является предметом для обсуждения и согласования топ-менеджеров, например, в рамках проведения Процессного комитета (создание которого рекомендует BPM CBOK).
Другими словами, группировка процессных категорий на диаграмме А0 сквозного процесса (см. рис. 2) может отличатся от существующих структурных подразделений компании. Это две большие разницы.
Рассмотрим диаграмму процесса «Разработка нового продукта» (рис. 2). Видно, что рассматриваемый сквозной процесс является весьма масштабным. Он состоит из блоков (процессных категорий), которые сами по себе являются сложными.
Очевидно, что процесс такого уровня сложности невозможно представить в виде какой-то одной цепочки операций (Work Flow – поток работ, в нотации eEPC или BPMN), выполняемых конкретными сотрудниками. (Теоретически, это сделать можно, но модель будет включать несколько тысяч шагов и сотни шлюзов, что сделает ее абсолютно нечитаемой и практически неприменимой).
Если мы декомпозируем, например, «Выполнение НИОКР», то, скорее всего, на диаграмме увидим процессы, которые тоже нерационально представлять в виде диаграмм Work Flow.
Очевидно, что сквозной процесс такого масштаба нуждается в постоянном административном управлении. Поэтому наличие на схеме блока «Управление разработкой новых и изменением текущих продуктов» представляется вполне оправданным.
На рис. 2 некоторые блоки показаны розовым цветом. Это сделано специально, чтобы обратить ваше внимание на тот факт, что эти процессы (полностью или частично) выполнятся не только в рамках рассматриваемого сквозного процесса, но и задействованы при выполнении других процессов.
Пример. Внутри блока «Разработка технологии производства нового продукта» находятся следующие подпроцессы:
• Управление разработкой технологии производства.
• Разработка НТД по продукту.
• Тестирование новых видов сырья и упаковки.
• Разработка нормативов по новому продукту.
• …
Например, «Тестирование новых видов сырья и упаковки» может проводиться не только в рамках сквозного процесса создания нового продукта, а по ходу выполнения рутинной функциональной деятельности в случае необходимости смены поставщика сырья по каким-то причинам. Продукт останется тот же, но сырье будет от другого поставщика. С точки зрения технолога, в любом случае, надо тестировать, подойдет ли новое сырье или нет.
На рис. 3 показана диаграмма процесса «Разработка требований к новому продукту».
Семь процессов, представленные на диаграмме, выполняются последовательно только в идеальном случае (кроме блока «Анализ необходимости внесения изменений в существующий продукт»).
В реальности часть из них может работать одновременно, с разными задачами. Видно, что возможны возвраты и переделки, например, «Анализ возможности и необходимости создания нового продукта», «Разработка ТЗ на новый продукт» и «Принятие решения по новому продукту».
Если рассматривать блоки деятельности, представленные на схеме 3, как Work Flow (т.е. на следующем уровне), то для каждого такого процесса возможные различные условия:
• старта в части запуска предыдущими процессами;
• завершения в части запуска других процессов.
Сценарии выполнения сквозного процесса
На рис. 4 цветом показаны различные сценарии последовательного запуска процессов. На практике, конечно, их гораздо больше, чем три.
Желтый сценарий – «идеальный», когда всё делается с первого раза и продукт получается удачный.
Оранжевый сценарий – когда нужна консультация с клиентом с последующей повторной оценкой идей, а также, повторное выполнение разработки требований и принятия решений по результатам выпуска опытных партий продукта.
Третий, розовый сценарий запускается при получении рекламаций, анализ которых может потребовать радикальных мер, приводящих к созданию, по сути, нового продукта и т.д.
Очевидно, что сценариев выполнения сквозного процесса в части блока «Разработка требований к новому продукту» может быть множество.
Зачем нужна информация о том, какие процессы в рамках конкретного сценария должны запускаться? Ответ может быть следующий:
• для понимания процесса и возможностей его оптимизации;
• для определения требований в рамках регламентации сквозного процесса;
• для автоматизации сквозного процесса в BPMS системе – нужна архитектура процессов и понимание того, при каких условиях и с какими данными эти процессы будут последовательно запускаться в работу.
Часто бывает, что при построении модели выхватывают какой-то один сценарий или микс 2-3 сценариев. При этом забывают о том, что возможны и другие сценарии. Результат – рыхлая, фрагментарная модель, которая никуда не годится (процесс не может быть выполнен).
Попытка регламентировать, а уж тем более автоматизировать такой «дырявый» сценарий приведет к тому, что постоянно будет требоваться ручное управление. При этом я не хочу сказать, что для начала автоматизации нужно знать всё. Нет. Можно начинать автоматизировать процесс по частям. Но при этом понимание архитектуры сквозного процесса в целом поможет существенно сократить время на последующие переделки.
Для анализа некоторых возможных сценариев выполнения сквозного процесса можно построить соответствующую матрицу – см. пример ниже.
Таблица. Сценарии выполнения сквозного процесса. Пример.
№ | Наименование процесса | Сценарий А | Сценарий Б | Сценарий В |
1 | Управление разработкой новых и изменением текущих продуктов | |||
1.1. | Планирование разработки новых видов продукции | + | + | — |
1.2. | Управление проектом разработки нового вида продукции | + | + | — |
1.3. | Анализ инвестиционной привлекательности новых видов продукции | + | + | — |
1.4. | Формирование отчетов по разработке новых видов продукции | + | + | — |
2 | Разработка требований к новому продукту | |||
2.1. | Управление разработкой требований к новому продукту | + | + | + |
2.2. | Поиск идей по новым продуктам | + | + | — |
2.3. | Оценка и отбор идей по новым продуктам | + | + | + |
2.4. | Проведение консультаций с постоянными клиентами по новому продукту | — | + | — |
2.5. | Анализ возможности и необходимости создания нового продукта | + | + | — |
2.6. | Анализ необходимости внесения изменений в существующий продукт | — | — | + |
2.7. | Разработка ТЗ на новый продукт | + | + | — |
2.8. | Принятие решения по новому продукту | + | + | + |
3 | Выполнение НИОКР | |||
3.1. | Управление процессами НИОКР | + | + | — |
3.2. | Анализ инновационных технологи и продуктов конкурентов | + | + | — |
3.3. | Разработка/изменение дизайна продукта | — | + | + |
3.4. | Выполнение научно-исследовательских работ | + | + | — |
3.5. | Выполнение опытно-конструкторских работ | + | + | — |
3.6. | Проведение верификации на компьютерной модели | — | + | — |
4 | Разработка технологии производства нового продукта | |||
4.1. | Управление разработкой технологии производства | + | + | + |
4.2. | Разработка НТД по продукту | + | + | + |
4.3. | Тестирование новых видов сырья и упаковки | + | + | — |
4.4. | Разработка нормативов по новому продукту | + | + | — |
5 | Подготовка и производство пробных партий нового продукта | |||
5.1. | Управление подготовкой и производство пробных партий | + | + | — |
5.2. | Подготовка оборудования | + | + | — |
5.3. | Подготовка остатки | + | + | — |
5.4. | Закупка сырья для пробных партий | — | + | — |
5.5. | Изготовление пробной партии | + | + | — |
5.6. | Тестирование пробной партии | + | + | — |
6 | Запуск нового продукта в серийное производство | |||
6.1. | Управление запуском серийного производства нового продукта | + | + | — |
6.2. | Заключение договоров с поставщиками | — | + | — |
6.3. | Закупка, монтаж и пуско-наладка оборудования | — | + | — |
6.4. | Модернизация оборудования | + | — | — |
6.5. | Сертификация продукта | + | + | — |
6.6. | Внесение изменений в НТД | + | + | + |
6.7. | Внесение изменений в НМД | + | + | — |
6.8. | Определение цены на новый продукт | + | + | — |
6.9. | Обучение производственного персонала | + | + | — |
6.10 | Обучение сбытового персонала | + | + | — |
Некоторые процессы в этой таблице требуют декомпозиции еще на один уровень, прежде чем их можно будет описать в формате Work Flow (например, в нотации BPMN).
Анализ сценариев
Далее, если все процессы будут описаны в формате Work Flow, можно будет для каждого процесса рассчитать показатели выполнения одного экземпляра:
• минимальное, нормативное, максимальное время выполнения;
• затраты на выполнение.
(Кстати, для целей анализа времени выполнения и затрат можно использовать функционал имитационного моделирования в Business Studio).
Затем, с учетом среднего количества запусков каждого процесса (возможны итерационные повторения), можно рассчитать показатели конкретного сценария сквозного процесса в целом:
• общее время выполнения;
• совокупные затраты.
Полученную информацию можно использовать для анализа эффективности производства нового продукта. Например, при заданном размере планируемой партии может оказаться, что затраты на выполнение соответствующего сценария сквозного процесса будут больше, чем маржа от производства этой партии под конкретный заказ клиента. В этом случае, нужно будет принять решение о целесообразности разработки и производства этого нового продукта.
Если не брать в расчет стоимость всех процессов сценария, а только учесть стоимость сырья и материалов и разнести накладные (как это может сделать планово-экономический отдел), то картина окажется совершенно другой. Как следствие – будет принято ошибочное управленческое решение.
Также, результаты анализа можно использовать для определения целей и показателей оптимизации процессов, входящих в сценарий с точки зрения сокращения времени и затрат сквозного процесса в целом. Можно будет выявить процессы, которые являются узким местом как по времени, так и по затратам.
Очевидно, что общие показатели для «сквозного процесса в целом» (а не отдельного типового сценария) будут, в значительной мере, «средней температурой по больнице». Выбор и расчет показателей для сквозного процесса такого масштаба является весьма сложной задачей.
Резюме. Если цель проекта – повышение эффективности сквозного процесса, то можно и нужно сразу браться за его описание и анализ, не пытаясь создать полную, комплексную архитектуру процессов в Business Studio. Используя функциональные возможности системы, можно:
• построить архитектуру сквозного процесса;
• описать всего его подпроцессы в нотации BPMN и увязать их по входам/выходам и условиям запуска;
• провести анализ процессов с использование движка имитационного моделирования (или без него), определить время выполнения процессов и соответствующие затраты;
• построить матрицу сценариев выполнения сквозного процесса;
• выполнить анализ и оптимизацию сквозного процесса;
• регламентировать сквозной процесс;
• разработать систему целей и показателей для управления сквозным процессом (для основных сценариев);
• разработать техническое задание на автоматизацию сквозного процесса.
В.В. Репин,
к.т.н., доцент, консультант по управлению, тренер,
Генеральный директор ООО «Владимир Репин Менеджмент»
Март 2019 г.
Сквозное тестирование
Сквозное тестирование (End-to-end, E2E, Chain testing) — это вид тестирования, используемый для проверки программного обеспечения от начала до конца, а также его интеграцию с внешними интерфейсами. Цель сквозного тестирования состоит в проверке всего программного обеспечения на предмет зависимостей, целостности данных и связи с другими системами, интерфейсами и базами данных для проверки успешного выполнения полного производственного сценария.
Наряду с программной системой тестирование также обеспечивает проверку пакетной обработки и обработки данных из других вышестоящих и нижестоящих систем. Отсюда и название «End-to-End». Сквозное тестирование обычно проводится после функционального и системного тестирования. Для его проведения используются реальные данные и тестовая среда для имитации рабочего режима.
Зачем нужно сквозное тестирование?
Сквозное тестирование проверяет весь системный флоу и повышает уверенность за счет своевременного обнаружения проблем и увеличения покрытия тестами подсистем. Современные системы ПО сложны и взаимосвязаны с большим количеством подсистем, которые могут существенно отличаться от существующих систем. Вся система может разрушиться из-за отказа любой подсистемы, что представляет собой серьезный риск. Этого риска мы как раз и стремимся избежать с помощью сквозного тестирования.
Процесс сквозного тестирования:
На схеме ниже представлен обзор процесса сквозного тестирования.
Основные виды деятельности, связанные со сквозным тестированием:
-
Изучение требований к сквозному тестированию;
-
Настройка тестовой среды и требования к оборудованию/программному обеспечению;
-
Описание всех процессов системы и ее подсистем;
-
Описание ролей и ответственности для всех систем;
-
Методология и стандарты тестирования;
-
Сквозное отслеживание требований и разработка тест-кейсов;
-
Входные и выходные данные для каждой системы.
Как писать тест-кейсы для сквозного тестирования?
Фреймворк сквозного тестирования включает в себя три части:
-
Создание пользовательских функций
-
Создание условий
-
Создание тест-кейсов
Рассмотрим каждую из них подробно.
Создание пользовательских функций
Как часть построения пользовательских функций, должны быть выполнены следующие действия:
-
Перечислить функции системы и их взаимосвязанные компоненты;
-
Перечислить входные данные, действия и выходные данные для каждой характеристики или функции;
-
Определить отношения между функциями;
-
Определить, является ли функция многократно используемой или независимой.
Например, рассмотрите сценарий, при котором вы входите в свой банковский аккаунт и переводите деньги со своего счета на счет в другой банк (сторонняя подсистема):
-
Войти в банковскую систему.
-
Проверить сумму остатка на счете.
-
Перевести определенную сумму со своего счета на другой банковский счет (сторонняя подсистема).
-
Проверить текущий баланс счета.
-
Выйти из приложения.
Построение условий на основе пользовательских функций
В рамках построения условий выполняются следующие действия:
-
Построение набора условий для каждой определенной пользовательской функции;
-
Условия включают последовательность, время и условия данных.
Например, проверка дополнительных условий, таких как:
Страница авторизации
-
Неверное имя пользователя и пароль
-
Проверка с действительным именем пользователя и паролем
-
Проверка надежности пароля
-
Проверка сообщений об ошибках
Сумма остатка
-
Проверьте текущий баланс через 24 часа (Если перевод отправляется в другой банк)
-
Проверьте сообщение об ошибке, если сумма перевода больше суммы текущего баланса.
Создайте тестовый сценарий
Построение тестового сценария для определенной пользовательской функции
В нашем случае,
-
Войти в систему
-
Проверить сумму остатка на банковском счете
-
Перевести сумму остатка на банковском счете
Создание нескольких тест-кейсов
Создайте один или несколько тест-кейсов для каждого определенного сценария. Тест-кейсы могут включать каждое условие как отдельный тестовый пример.
Инструмент сквозного тестирования
testRigor
В мире сквозного тестирования лидером отрасли является testRigor. Он помогает создавать тесты без кода для веб-интерфейса, нативных и гибридных мобильных приложений, мобильных браузеров и API. С его помощью можно тестировать электронную почту и SMS, загруженные файлы .XLS, .DOC, .PDF и т. д.
Функции:
-
Написание тестов без кода просто на английском языке.
-
Покрытие Web + Mobile + API в одном тесте. Кроссплатформенная и кроссбраузерная поддержка.
-
Создание тестов в 15 раз быстрее по сравнению с Selenium.
-
Сокращение обслуживания тестов до 99,5%.
-
testRigor безопасен и соответствует стандарту SOC 2 Type 2.
-
Интеграция с CI/CD и управлением тест-кейсами.
-
Выполнение 1000 тестов и получение результатов менее чем за 30 минут.
Метрики сквозного тестирования:
Ниже приведены некоторые метрики, используемые для оценки прогресса сквозного тестирования.
-
Статус подготовки тест-кейса: показывает реальный прогресс подготовки тест-кейса по сравнению с запланированным.
-
Еженедельный прогресс тестирования. Дает подробную информацию о завершении теста за неделю в процентах. Неудачные, не выполненные и выполненные тесты по сравнению с запланированными для выполнения тестами.
-
Статус и детали дефектов — показывает процент открытых и закрытых дефектов понедельно. Кроме того, распределение дефектов по неделям в зависимости от серьезности и приоритета.
-
Доступность среды — общее количество часов доступности / общее количество часов, запланированных в день для тестирования.
Сквозное тестирование vs системное тестирование
Сквозное тестирование |
Системное тестирование |
Проверяет программную систему, а также взаимосвязанные подсистемы. |
Проверяет только программную систему в соответствии со спецификациями требований. |
Проверяет весь сквозной поток процессов. |
Проверяет функциональные возможности и функции системы. |
Для тестирования рассматриваются все интерфейсы и серверные системы. |
Рассматриваются функциональное и нефункциональное тестирование |
Выполняется после завершения тестирования системы. |
Выполняется после интеграционного тестирования. |
Сквозное тестирование включает в себя проверку внешних интерфейсов, которую сложно автоматизировать. Следовательно, ручное тестирование предпочтительнее. |
Для тестирования системы можно выполнять как ручное, так и автоматизированное тестирование. |
В заключение
Сквозное тестирование — это процесс проверки программной системы вместе с ее подсистемами. Самая большая трудность при этом типе тестирования состоит в том, что необходимо располагать достаточным количеством информации о всей системе, а также о взаимосвязанных подсистемах.
Приглашаем всех желающих на открытое занятие, на котором мы познакомимся с фреймворком Selenide и перепишем существующие тесты на него. Регистрация доступна по ссылке.
Сквозное тестирование
Сквозное тестирование — это метод тестирования программного обеспечения, который проверяет все программное обеспечение от начала до конца вместе с его интеграцией с внешними интерфейсами. Целью сквозного тестирования является тестирование всего программного обеспечения на предмет зависимостей, целостности данных и взаимодействия с другими системами, интерфейсами и базами данных для реализации полного производственного сценария.
Наряду с программной системой он также проверяет обработку пакетов / данных из других вышестоящих / последующих систем. Отсюда и название «Сквозной» . Сквозное тестирование обычно выполняется после функционального тестирования и тестирования системы. Он использует фактическое производство, такое как данные и тестовую среду, для моделирования настроек в реальном времени. Сквозное тестирование также называется цепным тестированием .
Зачем нужно непрерывное тестирование?
Сквозное тестирование проверяет полный поток системы и повышает уверенность, обнаруживая проблемы и увеличивая тестовое покрытие подсистем. Современные программные системы сложны и взаимосвязаны с несколькими подсистемами, которые могут отличаться от существующих систем. Вся система может рухнуть из-за отказа любой подсистемы, что представляет собой серьезный риск, которого можно избежать с помощью сквозного тестирования.
Сквозной процесс тестирования:
На следующей диаграмме представлен обзор процесса сквозного тестирования.
Основные виды деятельности, связанные с непрерывным тестированием:
- Изучение требований к непрерывному тестированию
- Настройка тестовой среды и требования к оборудованию / программному обеспечению
- Опишите все процессы в системе и ее подсистемах.
- Описание ролей и обязанностей для всех систем
- Методология и стандарты тестирования
- Сквозное отслеживание требований и разработка тестовых примеров
- Входные и выходные данные для каждой системы
Как создать сквозные тестовые случаи?
Структура проектирования сквозного тестирования состоит из трех частей.
- Создавайте пользовательские функции
- Условия сборки
- Сборка тестовых случаев
Давайте рассмотрим их подробнее: —
Создание пользовательских функций
Следующие действия должны быть выполнены как часть пользовательских функций сборки:
- Перечислите функции системы и их взаимосвязанные компоненты.
- Перечислите входные данные, действие и выходные данные для каждой функции или функции.
- Определите отношения между функциями
- Определите, можно ли использовать функцию повторно или независимо
Например рассмотрят сценарий , в котором вы войдите в свой банковский счет и перевести деньги на другой счет из другого банка (3 — й участник суб-системы)
- Авторизуйтесь в банковской системе
- Проверить остаток на счете
- Перенести некоторую сумму со своего счета на какой — либо другой банковский счет (3 — й участник подсистемой)
- Проверьте последний баланс вашего счета
- Выход из приложения
Условия сборки на основе пользовательской функции
В рамках условий сборки выполняются следующие действия:
- Создание набора условий для каждой определенной пользовательской функции
- Условия включают последовательность, время и условия данных.
Например -Проверка дополнительных условий, таких как
Страница авторизации
- Неверное имя пользователя и пароль
- Проверка с действующим именем пользователя и паролем
- Проверка надежности пароля
- Проверка сообщений об ошибках
Сумма остатка
- Проверьте текущий баланс через 24 часа. (Если перевод отправлен в другой банк)
- Проверьте сообщение об ошибке, если сумма перевода превышает текущий баланс.
Создайте тестовый сценарий
Создание сценария тестирования для определенной пользовательской функции
В этом случае,
- Войти в систему
- Проверка суммы банковского баланса
- Перевести сумму остатка в банке
Создание нескольких тестовых случаев
Создайте один или несколько тестовых примеров для каждого определенного сценария. Тестовые наборы могут включать каждое условие как один тестовый набор.
Метрики для сквозного тестирования:
Ниже приведены некоторые из многих показателей, используемых для сквозного тестирования.
- Статус подготовки тестового набора: показывает прогресс подготовки тестового набора по сравнению с запланированным.
- Еженедельный прогресс теста — Предоставляет еженедельные подробности о процентном завершении теста — Неудачный, невыполненный и выполненный по сравнению с запланированными для выполнения тестов.
- Статус и детали дефектов — показывает процент открытых и закрытых дефектов по неделям. Также еженедельное распределение дефектов в зависимости от серьезности и приоритета.
- Доступность среды — общее количество часов «наработки» / общее количество часов, запланированных в день для тестирования.
Сквозное тестирование против тестирования системы
Сквозное тестирование | Системное тестирование |
---|---|
Проверяет программную систему, а также взаимосвязанные подсистемы | Проверяет только систему программного обеспечения в соответствии со спецификациями требований. |
Он проверяет весь процесс от начала до конца. | Он проверяет функциональность и особенности системы. |
Все интерфейсы, бэкэнд-системы будут рассматриваться для тестирования. | Функциональное и нефункциональное тестирование будет рассматриваться для тестирования. |
Он выполняется после завершения тестирования системы. | Выполняется после интеграционного тестирования. |
Сквозное тестирование включает проверку внешних интерфейсов, автоматизация которых может быть сложной задачей. Следовательно, ручное тестирование предпочтительнее. | Для тестирования системы можно использовать как ручное управление, так и автоматизацию. |
Вывод
В программной инженерии сквозное тестирование — это процесс проверки программной системы вместе с ее подсистемами. Самая большая проблема в этом тестировании — получить достаточно знаний обо всей системе, а также о взаимосвязанной подсистеме.