Что такое качественный инжиниринг? Ключ к созданию более качественных, быстрых и надёжных продуктов

от автора

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

Каждый ищет “святой грааль” качественных продуктов и услуг: больше клиентов и рост бизнеса, снижение затрат и увеличение прибыли. Инжиниринг качества (Quality Engineering, QE) — дисциплина, возникшая в результате этого поиска, и её развитие далеко не завершено.

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

Что такое качество? Каковы аспекты качества?

Качество трудно определить однозначно, потому что у него много аспектов, и часть из них субъективна. На самом деле, философ и писатель Роберт Пирсиг написал книгу о качестве “Дзэн и искусство ухода за мотоциклом”, в которой изложил свою метафизику качества.

Интересно, что его книга была отклонена 121 издательством, которые сочли ее “некачественной”. Однако Пирсиг настаивал, и издательство № 122 посчитало, что “эта книга невероятно блестящая, это, вероятно, гениальное произведение…”, и опубликовало ее.  В итоге было продано свыше пяти миллионов экземпляров.

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

В промышленности используются различные стандарты качества и подходы к его совершенствованию, такие как ISO 9001, Six Sigma и Total Quality Management.

 

Разработка качества в программном обеспечении

Индустрия программного обеспечения осознала, что корректирующий подход, предписанный QA и QC (системой обеспечения и контроля качества) – поиск и исправление ошибок постфактум – достиг своего предела эффективности.

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

Разработка качества в программном обеспечении затрагивает два аспекта обеспечения высокого качества:

  • Функциональное качество, которое относится к функциональным аспектам программного продукта или решения: выполняет ли оно ожидаемые функции? Соответствует ли требованиям и спецификации?

  • Структурное (нефункциональное) качество, которое касается нефункциональных аспектов программного обеспечения: надежно? Безопасно? Высокодоступно? Просто в обслуживании?

Эволюция и жизненный цикл разработки качества программного обеспечения

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

Это привело к появлению множества новых QE инструментов и методов контроля качества, включая автоматизацию тестирования, тестирование со сдвигом влево, DevOps, DevSecOps, непрерывную интеграцию и непрерывное развертывание (CI/CD), SDET (Software Development Engineer in Test), разработку на основе тестирования (TDD) и разработку на основе поведения (BDD), управление рисками и искусственный интеллект.

Все это в совокупности формирует новый подход к проектированию качества.

 

Роль данных и метрик в проектировании качества

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

Использование метрик для осуществления изменений — нетривиальный процесс.

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

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

  • Объем продаж продукции

  • Удовлетворенность клиентов – в частности, рекомендации клиентов другим пользователям

  • Объем и тип запросов в службу поддержки

Однако получение этих показателей может занять от нескольких месяцев до пары лет после внедрения, а столько времени ни у кого нет!

Чтобы отслеживать улучшение качества по мере его появления, мы используем такие операционные метрики, как:

  • Стоимость качества

  • Плотность дефектов

  • Покрытие тестами

  • Метрики производительности разработки и релизов

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

Почему Quality Engineering имеет значение

РЕАЛЬНАЯ ИСТОРИЯ: В начале своей карьеры я руководил командой разработчиков программного обеспечения, предоставлявшей решения для клиентов. В один прекрасный день я провел предпродажную консультацию с потенциальным клиентом — назовем его “Разочарованная компания Financial Consultants Inc.”, – которому требовалось веб-приложение для учета времени и расходов. У компании Frustrated было более 1000 консультантов, работавших на их различных клиентов.

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

Теперь, как умный инженер по контролю качества, вы, несомненно, заметили проблему размером с Большой каньон в этой форме.

Почему пользователь вообще должен выбирать себя из списка?

Многие пользователи, занятые более важными делами, забывают выбрать свое собственное имя из списка, оставляя его в качестве имени по умолчанию — Эми Адамс, которая, к несчастью, оказалась первой в отсортированном списке.

Но так даже лучше. Бедная Эми Адамс была ужасно недовольна таким положением дел, поэтому она решила исправить его, создав фиктивного сотрудника по имени А. Трубкозуб! Я не шучу!

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

Вот так А. Трубкозуб на протяжении нескольких месяцев подряд становился сотрудником месяца с производительностью от 6 до 10 раз! Клянусь, я не смог бы придумать ничего подобного, даже если бы захотел…

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

Чем занимается инженер по качеству?

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

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

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

ссылка на оригинал статьи https://habr.com/ru/articles/1023484/