التحقق والتثبت من البرمجيات  التحقق والتثبت من البرمجيات (بالإنجليزية: التحقق والتحقيق)  في إدارة المشاريع البرمجية واختبار البرمجيات وهندسة البرمجيات كذلك للإشارة إلى آلية التدقيق بأن المشروع البرمجي يطابق المواصفات المحددة وبأنه يعمل بالطريقة المتوقعة منه. وكذلك قد يطلق هذا المصطلح على التحكم في جودة البرنامج. وفي العادة، هذه المهمة من مهمات مهندس البرمجيات الذي يقوم بعملية اختبار البرنامج، كجزء من عمليات دورة حياة البرمجيات،   التحقق والتحقيق في إدارة المشاريع البرمجية واختبار البرمجيات وهندسة البرمجيات هو عمليات التأكد من أن المشروع البرمجي يطابق المواصفات المحددة وبأنه يعمل بالطريقة المتوقعة منه. وكذلك قد يطلق على التحكم في جودة البرنامج. هذه المهمة في العادة من مهمات مهندس البرمجيات الذي يقوم بعملية اختبار البرنامج، كجزء من عمليات دورة حياة البرمجيات، بعبارات بسيطة، التحقق من البرمجيات هو: «بافتراض أننا يجب أن نبني برنامج ما (X)، هل يحقق برنامجنا أهدافه دون أي أخطاء أو ثغرات؟» من ناحية أخرى، فإن تحقيق (التحقق من صحة) البرنامج هو: «هل X هو البرنامج الذي أردنا أن نبنيه؟ هل يلبي X المتطلبات رفيعة المستوى؟»  التحقق والتحقيق ليسا نفس الشيء، ولكن يُخلط بينهما في أغلب الأحيان. عبّر بوهم بإيجاز عن الفرق كالتالي:   يتحقق «بناء المنتج بشكل صحيح» من تنفيذ النظام للمواصفات بشكل صحيح، بينما يشير «بناء المنتج المناسب» إلى احتياجات المستخدم. يُلزم في بعض السياقات وجود متطلبات مكتوبة لكل من الإجراءات والبروتوكولات الرسمية لتحديد التوافق.  يتضمن بناء المنتج بشكل صحيح استخدام مواصفات الاحتياجات كمدخلات للمرحلة التالية من عملية التطوير وهي عملية التصميم، والتي يكون مخرجها هو مواصفات التصميم. يتضمن بعدها أيضًا استخدام مواصفات التصميم لتغذية عملية البناء. في كل مرة تُنفذ فيها مخرجات العملية مواصفات المدخلات الخاصة بها بشكل صحيح، يقترب المنتج البرمجي خطوة واحدة من التحقق النهائي. إذا كان مخرج العملية غير صحيح، هذا يعني أن المطورين لا يبنون المنتج الذي يريده أصحاب المصلحة بشكل صحيح. يُسمى هذا النوع من التحقق «التحقق من المنتجات الثانوية أو المواصفات».  يتضمن بناء المنتج المناسب إنشاء مواصفات احتياجات تضم احتياجات وأهداف أصحاب المصلحة في منتج البرنامج. إذا كانت المنتجات الثانوية غير مكتملة أو خاطئة، فلن يتمكن المطورون من بناء المنتج الذي يريده أصحاب المصلحة. هذا شكل من أشكال «تحقيق المنتجات الثانوية أو المواصفات».  ملاحظة: يبدأ التحقق قبل التحقيق ثم يعملان بالتوازي حتى إصدار المنتج البرمجي.  يُطبق التحقق مما إذا كانت المواصفات قد استوفيت من خلال تشغيل البرنامج، لكن هذا غير ممكن (مثلًا، كيف يمكن لأي شخص معرفة ما إذا كانت البنية أو التصميم أو غيرهما. يُنفذان بشكل صحيح من خلال تشغيل البرنامج؟). يمكن استنتاج ما إذا كانت المواصفات قد استوفيت، فقط من خلال مراجعة المنتجات الثانوية المرتبطة بها.  يمكن أن يخضع مخرج كل مرحلة من مراحل عملية تطوير البرامج للتحقق عند فحصه وفقًا لمواصفات المدخلات.  أمثلة على التحقق من المنتجات الثانوية:   يتأكد التثبيت البرمجي من أن المنتج البرمجي يرضي أو يلائم الاستخدام المقصود (التحقق عالي المستوى)، أي هل يلبي البرنامج متطلبات المستخدم، ليس كمنتجات المواصفات أو حسب احتياجات الذين سيشغلون البرنامج فقط؛ ولكن، حسب احتياجات جميع أصحاب المصلحة (مثل المستخدمين والمشغلين والمسؤولين والمدراء والمستثمرين، وغيرهم). هناك طريقتان لإجراء التحقيق البرنامج: طريقة داخلية وطريقة خارجية. أثناء التحقيق البرمجي الداخلي، يُفترض أن أهداف أصحاب المصلحة فُهمت بشكل صحيح وعُبر عنها في منتجات المتطلبات بدقة وشمولية. إذا استوفى البرنامج مواصفات المتطلبات، يكون تم تحقيقه داخليًا.  يحدث التحقيق الخارجي عندما يُنفذ بسؤال أصحاب المصلحة عما إذا كان البرنامج يلبي احتياجاتهم. تتطلب منهجيات تطوير البرمجيات المختلفة مستويات مختلفة من مشاركة وملاحظات المستخدمين وأصحاب المصلحة؛ لذلك، يمكن أن يكون التحقيق الخارجي حدثًا منفصلًا أو مستمرًا. يكون التحقيق الخارجي النهائي ناجحًا عندما يقبل جميع أصحاب المصلحة المنتج البرمجي ويصرحون بأنه لبى احتياجاتهم. يتطلب هذا التحقيق الخارجي النهائي استخدام اختبار القبول وهو اختبار ديناميكي.  ولكن، من الممكن أيضًا إجراء اختبارات داخلية ثابتة لمعرفة ما إذا كان يُلبي مواصفات المتطلبات ولكن يندرج هذا في نطاق التحقق الثابت لأن البرنامج يكون غير شغّال.  يجب تحقيق المتطلبات قبل أن يصبح المنتج البرمجي جاهزًا ككل (تتطلب عمليات التطوير الشلالية تعريفها بشكل كامل قبل بدء التصميم؛ لكن لا تتطلب عمليات التطوير التكرارية ذلك وتسمح بالتحسين المستمر).  أمثلة على تحقيق المنتجات الثانوية:   وفقًا لنموذج نضج القدرة (سي إم إم آي-إس دبليو النسخة 1.1)،   يمكن اعتبار التحقيق أثناء تطوير البرمجيات شكلًا من أشكال تحقيق مواصفات متطلبات المستخدم؛ وهذا يُعادل في نهاية عملية التطوير تحقيق البرامج الداخلي و/ أو الخارجي. أما التحقق، من وجهة نظر سي إم إم آي، هو من نوع المنتجات الثانوية.  بمعنى آخر، يضمن التحقق أن مخرجات كل مرحلة من مراحل عملية تطوير البرنامج تنفذ بفعالية ما تحدده منتجات الدخل المقابلة (المتطلبات -> التصميم -> المنتج البرمجي)، في حين يضمن التحقيق أن المنتج البرمجي يلبي احتياجات جميع أصحاب المصلحة (لهذا، يُعبر عن مواصفات المتطلبات بشكل صحيح ودقيق في المقام الأول). يضمن التحقق أنك «بنيته بشكل صحيح» ويؤكد أن المنتج، كما هو مقدم، يفي بخطط المطورين. يضمن التحقيق البرنامج أنك «بنيت الشيء الصحيح» ويؤكد أن المنتج، كما هو مقدم، يفي بالاستخدام المقصود وأهداف أصحاب المصلحة.  استخدمت هذه المقالة التعريف المحكم أو الضيق للتحقيق.  من منظور الاختبار: