Целостность кода
Целостность кода — это показатель, используемый в жизненном цикле поставки программного обеспечения. Он измеряет, насколько высоким является качество исходного кода , когда он передается в отдел контроля качества , и зависит от того, насколько тщательно код был обработан процессами проверки правильности (ручными или автоматическими). Примерами таких процессов проверки правильности могут быть модульное тестирование и интеграционное тестирование , проверка кода, автоматизация тестирования, анализ кода на основе искусственного интеллекта и т. д. [1] Целостность кода — это комбинация применения процессов корректности кода (качества программного обеспечения) вместе с метриками, измеряющими полноту этих процессов проверки правильности, такими как, например, покрытие кода. Хотя целостность кода обычно достигается путем модульного тестирования исходного кода для достижения высокого покрытия кода, это определенно не единственный и не лучший способ достижения целостности кода. Фактически, известно, что покрытие кода, популярный показатель для измерения тщательности модульных тестов, имеет ограниченную корреляцию с показателем реальной целостности кода. [2]
Уверенность застройщика
[ редактировать ]Целостность кода — это не только правильность кода, но и уверенность разработчиков в правильности своего кода. Благодаря целостности кода разработчик может быть уверен, что его/ее код написан правильно при передаче в отдел контроля качества. Это, по сути, ожидаемый уровень качества кода. Целостность кода помогает разработчикам и компаниям выпускать более качественные продукты с меньшим количеством ошибок и в более короткие сроки. [3]
Тестирование при сдвиге влево и целостность кода при сдвиге влево
[ редактировать ]Компании, которые практикуют целостность кода, избегают классического сценария, когда этап разработки задерживается, этап контроля качества, этап выпуска задерживается. Продукты компаний, которые не поддерживают целостность кода, выпускаются с большим количеством ошибок (из-за нехватки времени), пользователи сообщают о множестве ошибок команде разработчиков и начинают работать над версией 1.1 вскоре после выпуска версии 1.0, просто чтобы исправить ошибки, которые можно было бы избежать. [ нужна ссылка ]
Тестирование со сдвигом влево — это метод выполнения связанного тестирования на начальных этапах разработки программного обеспечения, поскольку отдел контроля качества не может измерить целостность кода даже после запуска всех своих тестов. Тестирование со сдвигом влево и целостность кода тесно связаны, но целостность состоит не только из части тестирования, которая является подзадачой более крупного процесса обеспечения целостности кода со сдвигом влево. Этот процесс не только применяет больше модульных тестов вместе с более высоким покрытием кода, но также включает в себя различные другие процессы проверки правильности на основе соответствующих данных. [4] Вот несколько примеров:
- Модульное тестирование кода
- Интеграционное тестирование
- Обзор кода
- Анализ кода на основе искусственного интеллекта
- Автоматическое тестирование
- Назначение менеджера целостности кода
- Примеры показателей полноты проверки правильности
- Формулировка метрики чистой целостности кода следующая: 1 — (Непокрытые ошибки) / (Общее количество ошибок). Другими словами: идеальная целостность кода минус количество ошибок, которые не были покрыты модульным тестированием, разделенное на общее количество ошибок, обнаруженных в ходе модульного тестирования. Весь цикл продукта, включая разработку, представляет собой не целостный код.
- Различные типы покрытия кода (покрытие строк, покрытие ветвей и т. д.)
- Мутационное тестирование
- Преимущества целостности кода со сдвигом влево
- Сокращение времени разработки — ошибки, обнаруженные на этапе разработки, исправляются быстрее и проще, чем ошибки, обнаруженные на более поздних стадиях.
- Снижение затрат на разработку. Исправлять ошибки, обнаруженные на этапе разработки, дешевле, чем на более поздних этапах.
- Уверенность в качестве вашего кода. Выпуск продуктов с высокой целостностью кода означает получение более положительных отзывов от ваших клиентов.
- Делает работу QA намного более эффективной. QA концентрируется на тестировании системы, не беспокоясь об ошибках, которые можно было бы легко обнаружить при правильном модульном тестировании.
Включение целостности кода с сдвигом влево
[ редактировать ]Эта концепция основана на том факте, что разработчики смогут в полной мере использовать технологическое преимущество, если у них с самого начала будут доступны соответствующие инструменты тестирования. Поскольку новое программное обеспечение становится все более сложным и включает в себя больше зависимостей, включение правой части V-модели в роли разработчиков поможет им взять на себя контроль над процессами модульного тестирования и интеграции. [3] [5] Результат позволит разработчикам создавать полноценные среды во многих компаниях-разработчиках программного обеспечения. Ожидается, что эта тенденция сохранится, поскольку во многих случаях невозможно выполнить модульное/интеграционное тестирование без полного контекста системы. [6]
Ссылки
[ редактировать ]- ^ Шарма, Тушар; Кечагия, Мария; Георгиу, Стефанос; Тивари, Рохит; Ватс, Индира; Моазен, Хади; Сарро, Федерика (2021). «Обзор методов машинного обучения для анализа исходного кода». arXiv : 2110.09610 [ cs.SE ].
- ^ Хеммати, Хади (2015). «Насколько эффективны критерии покрытия кода?» . Международная конференция IEEE 2015 по качеству, надежности и безопасности программного обеспечения . стр. 151–156. дои : 10.1109/QRS.2015.30 . ISBN 978-1-4673-7989-2 . S2CID 7305779 . Проверено 15 марта 2023 г.
- ^ Jump up to: а б Гади Цимерман (11 ноября 2022 г.). «Тестов недостаточно. Почему важна целостность кода?» . Проверено 16 марта 2023 г.
- ^ Бьерке-Гульстуэн, Кристиан; Ларсен, Эмиль Вийк; Столхане, Тор; Дингсойр, Торгейр (2015). «Разработка через тестирование высокого уровня – сдвиг влево» . Гибкие процессы в программной инженерии и экстремальном программировании . Конспекты лекций по обработке деловой информации. Том. 212. С. 239–247. дои : 10.1007/978-3-319-18612-2_23 . ISBN 978-3-319-18611-5 . Проверено 15 марта 2023 г.
- ^ Рук, Пол, Э. Рук (1986). «Управление программными проектами» . Журнал программной инженерии . 1 (1): 7–16. дои : 10.1049/sej.1986.0003 . Проверено 15 марта 2023 г.
{{cite journal}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Мовад, Абрар Мохаммад; Фаваре, Хамед; Хасан, Мохаммед А. (2022). «Эффект использования непрерывной интеграции (CI) и непрерывного развертывания (CD) в DevOps для сокращения разрыва между разработчиком и эксплуатацией» . Международная арабская конференция по информационным технологиям (ACIT) 2022 г. стр. 1–8. дои : 10.1109/ACIT57182.2022.9994139 . ISBN 979-8-3503-2024-4 . S2CID 255419041 . Проверено 15 марта 2023 г.