Лекция 7. Контроль качества программного продукта

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

Как бы нам убедиться, что наш продукт нормальный? На прошлой лекции было про то, как убедиться, что код нормальный -- писать в соответствии с полиси и стайлгайдом, и т. п.

Определим места, в которых надо убеждаться в нормальности.

Как все это собрать в единую кучу? Много инструменов, все разные, как организовать непрерывный процесс разработки. Перечислим стадии.

  1. Верификация исходного кода.
  2. Сборка. В процессе сборки -- модульное тестирование.
  3. Формирование дистрибутива (чего-то, что будет передано и где-то установлено)
  4. Деплоймент. Не обязательно это инсталяция, мало ли, как вы помещаете свой код в рабочую среду. Процедура введения кода в строй. Как именно это происходит не важно, важно, что он может не пройти.
  5. Приемочное тестирование функциональности
  6. Публикация.

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

Рекомендуется поглядеть на buildbot.

Замечание. Этап сборки не должен происходить на компьютере программиста. Черт знает, что программист себе поставил, во-первых. Во-вторых, не дело программиста собирать проект под 8 разных архитектур, например. Это дело сборочника, который должен собирать и доносить до программиста проблемы.

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

LecturesCMC/LinuxApplicationDevelopment2012/Conspects/07 (last edited 2012-12-21 02:36:01 by eSyr)