مدونة التغطية تحليل جزءا لا يتجزأ من مشاريع C++ [مغلقة]

StackOverflow https://stackoverflow.com/questions/207267

  •  03-07-2019
  •  | 
  •  

سؤال

لقد بدأت مؤخرا العمل على مجموعة كبيرة جدا C++ المشروع أنه بعد الانتهاء من 90% من تنفيذ قررت أنها تحتاج إلى إثبات 100% فرع التغطية أثناء الاختبار.المشروع يتم استضافتها على جزءا لا يتجزأ من منصة (التلال الخضراء سلامة).أنا أبحث عن اقتراحات و الخبرات من الآخرين على ستاكوفيرفلوو التي استخدمت رمز تغطية المنتجات في بيئات مشابهة.أنا مهتم في التعليقات الايجابية والسلبية المتعلقة بهذه الأنواع من الأدوات.

هل كانت مفيدة؟

المحلول

100٪ تغطية الفرع؟ وهذا لا بأس شرط، وخصوصا بعض فروع (التخلف في تصريحات الحال بالنسبة لأجهزة الدولة، على سبيل المثال) لا ينبغي أن يكون من الممكن تشغيل. أتوقع هناك <م> بعض الاستثناءات، وإذا لم تكن هناك قد تحتاج إلى فهم ما اختبار التغطية يمكن وما لا يمكن تحقيقه قبل أن تبدأ - على خلاف ذلك فسوف ينتهي سحب شعرك، أو ما هو أسوأ - إعطاء بيانات غير صحيحة.

ويتم تنفيذ معظم التجارب التغطية للأنظمة المدمجة في الواقع على أجهزة الكمبيوتر. واستدار رمز، ومحاكاة بعض جوانب متحكم في مجال البرمجيات، و نقطة الهدف أو مدونة التغطية PC أخرى مماثلة يتم تشغيل الأداة. السبب يتم ذلك هو أن هناك الكثير من ميكروكنترولر والمجمعين / مصححات / بيئات الاختبار لتطوير أدوات تغطية رمز لكل واحد.

عند موجودة أدوات تغطية رمز لمنصة محددة جزءا لا يتجزأ من أنها ليست قوية كما، شكلي، وسهلة الاستخدام، وعلة الحرة كما تلك التي وضعت لمنصات أجهزة الكمبيوتر الشخصية. غالبا ما لا يكون المعالجات القدرة التتبع (بدون أجهزة محاكاة نهاية عالية) اللازمة لأداء مدونة التغطية جيدة دون إدخال تصحيح رمز إضافي في البرامج الثابتة الخاص بك، والتي لديها ثم العواقب والآثار الجانبية التي يصعب السيطرة عليها، خاصة مع القضايا توقيت في أنظمة الوقت الحقيقي.

وترقية التعليمات البرمجية عبر ليس من الصعب بشكل رهيب طالما يمكنك مجردة رمز معين المعدنية (ومنذ كنت تستخدم C ++ بشكل صحيح، وينبغي أن يكون من السهل، أليس كذلك؟ ؛-D). أكبر مشكلة عليك واجهت هي أنواع، التي حين تحديد أفضل في C ++ مما كانت عليه في C تزال تشكل بعض القضايا. تأكد من أنك تستخدم types.h أو الإعداد مماثل أن أقول تحديدا مترجم بالضبط ما كل نوع كنت تستخدم وكيف ينبغي أن يفسر ذلك.

وبعد ذلك، يمكنك الذهاب إلى بلدة اختبار منطق الأساسية على جهاز الكمبيوتر. يمكنك حتى اختبار برامج تشغيل الأجهزة مستوى منخفض إذا كنت مهتما في تطوير محاكاة البرمجيات اللازمة لذلك، على الرغم من أن القضايا توقيت يمكن أن يكون مزعجا بعض الشيء.

وأدوات اختبار البرمجيات مثل MxVDev تنفيذ الكثير من مضاهاة متحكم لك والمساعدة في القضايا توقيت كما حسنا، ولكن عليك لا تزال لديها قليلا من العمل حتى مع مثل هذه المساعدة.

إذا يجب القيام بذلك على النظام نفسه، سوف تحتاج إلى شراء مقلدا للمعالج مع القدرة على تغطية - وليس عرضا غير مكلفة (العديد من برامج محاكاة تكلف ما يزيد عن 30K $ لمجموعة كاملة من الأدوات والأجهزة مضاهاة) ، ولكن هذا واحد من العديد من الأدوات المستخدمة في بيئات موثوقية عالية مثل صناعة السيارات والصناعات الفضائية.

و-Adam

وإخلاء مسؤولية: أعمل في الشركة التي تنتج MxVDev

نصائح أخرى

ولقد استخدمنا الأنشودة و <لأ href = "HTTP : //www.vectorcast.com/ "يختلط =" نوفولو noreferrer "> vectorcast في الماضي لاختبار وحدة ومدونة التغطية. ونحن أيضا استخدام أدوات غرينهيلز وكل من هذه الأدوات تعمل مع أدوات تطوير غرينهيلز. نحن تشغيل معظم الاختبار على جهاز محاكاة PPC وفقط تشغيل الاختبار التي تعتمد على الأجهزة على الأجهزة المستهدفة عن طريق جراب JTAG. Canatata وناقلات يلقي متشابهة جدا مع catata فقط قليلا أسهل في الاستخدام والحصول على مزيد قليلا الميزات ولكن اشياء صغيرة تحدث فرقا كبيرا في تجربة المستخدم.

وعموما إذا كنت ترغب في تحقيق مستوى عال من التغطية فرع تحتاج إلى تصميم التعليمات البرمجية لقابلية الاختبار. وكلما اختبار هل تعلم المزيد حول كتابة التعليمات البرمجية قابلة للاختبار.

ولقد حاولنا أيضا اختبار PC مقابل الاختبار جزءا لا يتجزأ من قدم لنا مشاكل بسبب endianess ولكن هذه ليست سوى مشكلة في طبقة الأجهزة.

وبالإضافة إلى ذلك معتمدة هذه الأدوات لRTCA / قياسي DO-178B.

كما هو الحال مع آدم ، ونحن ميناء لدينا جزءا لا يتجزأ من التعليمات البرمجية على جهاز كمبيوتر يستند إلى تسخير معظم خارج التغطية و التنميط هناك.لقد استخدمت AutomatedQA AQTime و Compuwares DevPartner ، وكلاهما منتجات جيدة ،

إذا كان عليك أن تفعل التغطية ob-مجلس, كنت بحاجة إلى استخدام التغطية منشئ ملفات التعريف التي تم إنشاؤها على المجهزة نسخة من المصدر.هناك على حد سواء التجارية والمفتوحة المصدر الأدوات المتاحة للقيام بذلك ، ولكن المنظمة البحرية الدولية ، فإنه يضيف الكثير من العمل عن كسب.

تغطية 100% طموح ، كما أنك سوف تحتاج إلى الكثير من حقن خطأ للوصول إلى كل ما تبذلونه من معالجات خطأ و معالجات الاستثناء.المنظمة البحرية الدولية ، وهذا من شأنه أيضا أن يكون من الأسهل القيام به في تسخير من على متن الطائرة.

كما تجدر الإشارة إلى أن كل من لديه طلب 100% مدونة التغطية 100% مدونة التغطية في أي وسيلة يعادل 100% اختبار التغطية.النظر في المثال التالي الدالة ؛

int div(int a, int b)
{
return (a/b);
}

100% مدونة التغطية فقط يتطلب منا أن استدعاء هذه الدالة مرة واحدة ، 100% اختبار التغطية يتطلب المزيد من المكالمات.بلدي اختبار strategey ينطوي النامية الآلي testcases أن تعطيني مستوى مقبول من اختبار التغطية و باستخدام مدونة التغطية أداة بحتة كوسيلة مساعدة في البحث عن تختبر المناطق.إلى حد ما يعتمد على اختبار الميزانية ؛ بالنسبة لي 100% مدونة التغطية هي طريقة مكلفة لما يقدم.

SD C ++ تغطية اختبار . هذه هي عائلة من (فرع) أدوات اختبار التغطية لمجموعة متنوعة من لهجات C ++ (ANSI، GNU، MS ...) الذي يلعب بشكل جيد حتى في الأجهزة النظم جزءا لا يتجزأ الفعلي بحكم وجود بصمة صغيرة جدا، ولها وسيلة سهلة طريقة لتصدير جمع بيانات التغطية الاختبار. هناك عرض تغطية واجهة المستخدم الرسومية التي لا تعتمد على الأجهزة جزءا لا يتجزأ الفعلي، من شأنها أن تنتج أيضا كامل ملخص التقرير التغطية.

[أنا مدير في الشركة التي توفر هذه الأدوات.]

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top