एसी आधारित एमक्यू प्रोजेक्ट के लिए मैं किस यूनिट टेस्ट फ्रेमवर्क का उपयोग कर सकता हूं?


15

मैं सोच रहा हूं कि मैं अपने mcu प्रोजेक्ट में यूनिट टेस्ट का उपयोग कैसे कर सकता हूं, और इसे सरल बनाने के लिए मैं किन रूपरेखाओं का उपयोग कर सकता हूं।

आज मैं एक Linux पीसी से OpenOCD-jtag के साथ एक stm32 का उपयोग कर रहा हूं, जहां यह सब क्लासिक मेकफाइल से नियंत्रित होता है और gcc के साथ क्रॉस-कंपाइल किया जाता है।

मैं खुद कुछ बना सकता था, लेकिन अगर कोई ढांचा है जिसका मैं उपयोग कर सकता हूं तो यह अच्छा होगा। (यह एक बोनस है अगर फ्रेमवर्क एक प्रारूप में परिणाम को आउटपुट कर सकता है जो जेनकिंस / हडसन पढ़ सकता है)।

वहाँ एक stm32 के साथ एक इकाई परीक्षण ढांचे का उपयोग करने का एक तरीका है?


3
मेरे पास एक पूर्ण उत्तर लिखने का समय नहीं है, लेकिन मैंने इन पत्रों और इस ब्लॉग श्रृंखला में पाए जाने वाले बहुत सारे उपकरण और तकनीकों का उपयोग किया है । एक शब्द में: CMock!
केविन वर्मियर

जवाबों:


4

CppUTest, और जेम्स ग्रेनिंग की उत्कृष्ट http://pragprog.com/book/jgade/test-driven-development-for-embedded-c देखें

CppUTest को C और C ++ के लिए समर्थन प्राप्त है, और इसे मेकफाइल टेम्प्लेट का एक अच्छा सेट मिला है जो मुझे बहुत जल्दी शुरू कर दिया है।


EPub संस्करण खरीदा, चलो देखते हैं कि क्या यह कोई अच्छा है :)
जोहान

पुस्तक अच्छी है, लेकिन मुझे लगता है कि एकता (उस पुस्तक में अन्य रूपरेखा) मेरी आवश्यकता को बेहतर बनाएगी।
जोहान

स्वीकार किए जाने के बाद से पुस्तक ने मुझे सही दिशा में धकेल दिया।
जोहान

5

बहुत सारे चर हैं जो आपको स्थिति में उपयोग करने के लिए सर्वोत्तम इकाई परीक्षण रूपरेखा निर्धारित करेंगे। कुछ आइटम जो आपकी पसंद को प्रभावित कर सकते हैं, वे हैं:

  • लक्ष्य भाषा।
  • क्या पुस्तकालय समर्थन उपलब्ध है। उदाहरण के लिए libc या उसके नीचे का कट संस्करण।
  • लक्ष्य का ऑपरेटिंग सिस्टम। जैसे कोई नहीं, FreeRTOS, कस्टम।

अधिकांश एक्सयूनिट प्रकार के ढांचे कुछ आधार स्तर की कार्यक्षमता प्रदान करेंगे जो उपयोगी हो सकते हैं। मैंने उपयोग किया है अतीत में कुछ सफलता के साथ Cunit का । (Ubuntuc / डेबियन पर libcunit1-dev पैकेज)। अधिकांश चौखटे को उपलब्ध होने के लिए libc की आवश्यकता होगी, कुछ को अतिरिक्त OS समर्थन की आवश्यकता होगी।

एक और परिवर्तनकारी जो सिर्फ 3 लाइनों लंबी है Minunit है

मैंने पाया है कि माइक्रोकंट्रोलर का उपयोग करने वाली इकाई परीक्षण लक्ष्य के रूप में काफी बोझिल है क्योंकि आपको परीक्षण डाउनलोड करने, उन्हें चलाने और फिर परिणाम प्राप्त करने के लिए उपयुक्त वातावरण प्रस्तुत करने में सक्षम होना चाहिए। बस प्लेटफ़ॉर्म प्राप्त करना जो आपको ऐसा करने में सक्षम करेगा, यह एक बड़ा काम है।

एक और दृष्टिकोण जो मैंने लिया है, जो मेरे लिए काम कर रहा है वह है होस्ट पर यूनिट परीक्षण करना, ड्राइवरों और एप्लिकेशन कोड के बीच एक अमूर्त परत को लागू करना। चूंकि आप लक्ष्य के लिए gcc का उपयोग कर रहे हैं, इसलिए कोड को होस्ट पर भी संकलित करना चाहिए।

कंपाइल होस्ट पर परीक्षण आम तौर पर इतना आसान होता है क्योंकि आपके पास होस्ट ओएस और उसके सभी उपकरणों का पूरा समर्थन होता है। उदाहरण के लिए, जब मेजबान पर परीक्षण किया जाता है, तो मेरे पास मेरे वायरलेस ड्राइवर का नकली संस्करण होता है, जो वास्तविक चालक के समान इंटरफ़ेस होता है जो लक्ष्य पर चलता है। होस्ट संस्करण वायरलेस पैकेट ट्रांसफर को अनुकरण करने के लिए यूडीपी पैकेट का उपयोग करता है, मॉक ड्राइवर पैकेट छोड़ने की क्षमता का समर्थन करता है ताकि मैं अपने प्रोटोकॉल का परीक्षण कर सकूं।

जिस उत्पाद पर मैं काम कर रहा था, उसमें एक थ्रेडेड ओएस का उपयोग किया जा रहा था, इसलिए होस्ट OS पर परीक्षण के लिए एब्सट्रैक्शन लेयर की जगह पियर्स का उपयोग किया गया।

सही नहीं है, लेकिन आपके लिए परीक्षण लिखना और चलाना जितना आसान है, उतना ही संभव है कि आप अधिक परीक्षण मामलों को लागू करें। विभिन्न प्लेटफार्मों पर कोड चलाने का एक और लाभ यह परीक्षण करना है कि कोड पोर्टेबल है। यदि लक्ष्य और होस्ट आर्किटेक्चर अलग-अलग हैं, तो आप जल्दी से एंडियन गलतियां करेंगे।

अब मैं विषय से थोड़ा हट गया हूं, लेकिन महसूस करता हूं कि ये विचार आपकी पसंद की रूपरेखा और परीक्षण विधियों में आपकी मदद कर सकते हैं।


मैंने हल किया है कि मुझे लक्ष्य पर कोड कैसे मिलता है और मैं स्क्रिप्ट मोड में gdb का उपयोग विभिन्न ब्रेकप्वाइंट जैसे test_ok या test_fail ( fun-tech.se/stm32/TestSuite/index.php ) पर रोकने के लिए कर सकता हूं । इसलिए मैं आधे तरह का हूं। यह अधिक प्रश्न है कि विभिन्न "परीक्षणों" का निर्माण कैसे किया जाए। मेरे विचार आज अप्रभावित करने के लिए थोड़ा सा है, यही कारण है कि मैंने किसी तरह के ढांचे की खोज शुरू कर दी है।
जोहान

1

Check outUnit http://embunit.sourceforge.net/embunit/index.html देखें । यह कम पदचिह्न के साथ एक एम्बेडेड सी इकाई परीक्षण ढांचा है।

हमने इसे सफलतापूर्वक माइक्रोकंट्रोलर परियोजनाओं के एक जोड़े में इस्तेमाल किया। एक डेस्कटॉप यूनिट टेस्ट फ्रेमवर्क के साथ आपको मिलने वाले विकल्पों और सुविधाओं की अपेक्षा न करें। लेकिन यह निश्चित रूप से पर्याप्त शक्तिशाली है।

इसमें आपके लिए परिभाषित अभ्यंतरों का आबंटन है, इसलिए आपको समय-समय पर अभिप्रायों को मिनिटिट के साथ लिखने की आवश्यकता नहीं है।


1

कुछ समय पहले मैंने इस विषय पर एक पूरी तरह से ट्यूटोरियल लिखा: यूनिट-टेस्टिंग (एम्बेडेड) सी अनुप्रयोगों के साथ सीडलिंग ; मैं परियोजनाओं के एक समूह में इन तकनीकों का उपयोग करता हूं, और मैं अब तक काफी खुश हूं।


2
यह लिंक-ओनली उत्तर है, और यदि URL बदल जाता है या लिंक डाउन हो जाता है, तो यह बेकार हो जाएगा। आपको उत्तर में प्रासंगिक जानकारी की व्याख्या करनी चाहिए , फिर आप संदर्भ के रूप में लिंक जोड़ सकते हैं।
पाइप

2
@ हाँ, लेकिन सवाल (उत्पाद की सिफारिश अनिवार्य रूप से) इस तरह के जवाब के लिए भीख माँगता है।
दिमित्री ग्रिगोरीव

0

मैं बस खुद को देख रहा था। मुझे एक तीन भाग का लेख मिला जो यहाँ एक इकाई परीक्षण रूपरेखा की रूपरेखा प्रस्तुत करता है:

http://www.eetimes.com/design/embedded/4007177/Doing-C-code-unit-testing-on-a-shoestring-Part-1-The-basics-and-the-tools

मैं उस हर चीज से भी सहमत हूं जिसका उल्लेख ऑस्टिन ने किया है।


-2

एक प्रकार का वृक्ष की कोशिश करो, लेकिन मुझे लगता है कि यह इकाई विश्लेषण के लिए नहीं है, कोड विश्लेषण के लिए।


2
स्टेटिक कोड विश्लेषण, निष्पादित और कोड का परीक्षण करने में मदद नहीं कर सकता है, इसलिए यह वास्तव में मददगार नहीं है।
जोहान

1
शायद इकाई परीक्षण के संदर्भ में सहायक नहीं है, लेकिन हर किसी को किसी न किसी प्रकार के स्थैतिक विश्लेषण उपकरण का उपयोग करना चाहिए।
टिम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.