コードインテグリティ は、ソフトウェアデリバリーライフサイクルで使用される測定指標です。これは、ソースコードが QA に渡された時点でその品質がどの程度高いかを測定するもので、コードが(手動か自動かを問わず)正当性チェックプロセスによってどの程度徹底的に処理されたかに影響されます。このような正当性チェックプロセスの例としては、単体テスト と統合テスト 、コードレビュー 、テスト自動化 、AIベースのコード分析などがあります。 [ 1 ] コードインテグリティは、コードの正当性プロセス(ソフトウェア品質)を適用することと、コードカバレッジ など、これらの正当性チェックプロセスの完全性を測定する指標を組み合わせることで実現されます。コードインテグリティは通常、ソースコードを単体テストして高いコードカバレッジを達成することで実現されますが、これはコードインテグリティを実現する唯一の方法でも、最良の方法でもありません。実際、単体テストの徹底性を測定する一般的な指標であるコードカバレッジは、実際のコードインテグリティの測定値との相関が限られていることが知られています。[ 2 ]
開発者の自信コードの整合性とは、単にコードの正しさだけでなく、開発者が自分のコードの正しさについて抱く自信も含まれます。コードの整合性があれば、開発者は自分のコードがQAに渡されたときに正しく書かれていることを確信できます。これはまさに、コードに期待される品質レベルです。コードの整合性は、開発者や企業がバグの少ない、より優れた製品をより短い時間でリリースするのに役立ちます。[ 3 ]
シフトレフトテストとシフトレフトコード整合性 コードの整合性を重視する企業は、開発段階が遅れ、品質保証段階が遅れ、リリース段階が遅れるという典型的なシナリオを回避できます。コードの整合性を重視しない企業の製品は、時間的制約のためにバグが多く含まれた状態でリリースされ、ユーザーから開発チームに大量のバグが報告され、バージョン1.0のリリース後すぐにバージョン1.1の開発に着手し、本来なら回避できたはずのバグを修正することになります。
シフトレフトテストは、QA部門がすべてのテストを実行した後でもコードの整合性を測定できないため、ソフトウェア開発の初期プロセス中に関連テストを実行する方法です。シフトレフトテストとコードの整合性は密接に関連していますが、整合性は、シフトレフトコード整合性というより大きなプロセスのサブタスクであるテスト部分だけで構成されます。このプロセスでは、より多くの単体テストと高いコードカバレッジが適用されるだけでなく、関連データに対するさまざまなその他の正当性チェックプロセスも含まれます。[ 4 ] 以下にいくつかの例を示します。
コードの単体テスト 統合テスト コードレビュー AIベースのコード分析 自動テスト コード整合性マネージャの割り当て 正確性チェックの完全性指標の例 純粋なコード整合性の指標の式は次のとおりです。1 − (未カバーのバグ) / (総バグ数)。言い換えると、完全なコード整合性から単体テストでカバーされなかったバグの数を差し引き、開発を含む製品サイクル全体で見つかった総バグ数で割ったものが、整合性のないコードです。 さまざまな種類のコードカバレッジ(行カバレッジ、分岐カバレッジなど) 変異検査 左シフトによるコード整合性の利点 開発期間の短縮 ― 開発段階で発見されたバグは、後の段階で発見されたバグよりも迅速かつ容易に修正できる。 開発コストの削減 – 開発段階で発見されたバグは、後の段階で発見されたバグよりも修正コストが安い。 コードの品質に対する自信 ― コードの整合性が高い製品をリリースすることで、顧客からの肯定的なフィードバックが増えます。 QA担当者の作業効率が大幅に向上します。QA担当者は、適切な単体テストで容易に発見できたはずのバグを気にすることなく、システムのテストに集中できます。
シフトレフトによるコード整合性の有効化 この概念は、開発者が最初から適切なテストツールを利用できれば、技術的な優位性を最大限に活用できるという事実に基づいています。新しいソフトウェアがますます複雑化し、依存関係が増えるにつれて、Vモデル の右側を開発者の役割に含めることで、開発者は単体テストと統合プロセスを制御できるようになります。[ 3 ] [ 5 ] その結果、開発者は多くのソフトウェア企業で完全な環境を構築できるようになります。多くの場合、システム全体のコンテキストなしでは単体テストや統合テストを実行することは不可能であるため、この傾向は継続すると予想されます。[ 6 ]
参考文献 ↑ Sharma, Tushar; Kechagia, Maria; Georgiou, Stefanos; Tiwari, Rohit; Vats, Indira; Moazen, Hadi; Sarro, Federica (2021). "ソースコード解析のための機械学習技術に関する調査". arXiv : 2110.09610 [ cs.SE ]. ↑ Hemmati, Hadi (2015). "コードカバレッジ基準はどの程度効果的か?". 2015 IEEE International Conference on Software Quality, Reliability and Security . pp. 151–156 . doi : 10.1109/QRS.2015.30 . ISBN 978-1-4673-7989-2 . S2CID 7305779 . 1 2 Gadi Zimerman (2022年11月11日)。 「テストだけでは不十分 - コードの整合性が重要な理由」 。 2023年 3月16日 取得 。 ↑ ビェルケ・グルストゥエン、クリスチャン。ラーセン、エミール・ウィック。ストールヘイン、トール;ディンソイル、トルゲイル (2015)。 「高レベルのテスト駆動開発 – シフトレフト」 。 ソフトウェア エンジニアリングおよびエクストリーム プログラミングにおけるアジャイル プロセス 。ビジネス情報処理の講義ノート。 Vol. 212. pp. 239–247 . 土井 : 10.1007/978-3-319-18612-2_23 。 ISBN 978-3-319-18611-5 2023年3月15日 に取得 。↑ Rook, Paul, E. Rook (1986). "ソフトウェアプロジェクトの管理" . Software Engineering Journal . 1 (1): 7– 16. doi : 10.1049/sej.1986.0003 . 2023年 3月15日 取得 . {{cite journal}}: CS1 maint: 複数の名前: 著者リスト (リンク)↑ Mowad, Abrar Mohammad; Fawareh, Hamed; Hassan, Mohammad A. (2022). "DevOpsにおける継続的インテグレーション(CI)と継続的デリバリー(CD)導入による開発者と運用担当者間のギャップ縮小効果". 2022 International Arab Conference on Information Technology (ACIT) . pp. 1– 8. doi : 10.1109/ACIT57182.2022.9994139 . ISBN 979-8-3503-2024-4 . S2CID 255419041 .