कैसे Arduino स्रोत कोड स्वचालित रूप से (निरंतर एकीकरण) परीक्षण किया जा सकता है?


17

मैं निरंतर परीक्षण के साथ स्रोत नियंत्रण के तहत अपने Arduino स्रोत कोड (परियोजनाओं और पुस्तकालयों) का प्रबंधन करना चाहता हूं। मैं यह सुनिश्चित करने के लिए स्वचालित रूप से कोड को निरंतर एकीकरण उपकरण के साथ कैसे संकलित कर सकता हूं, यह सुनिश्चित करने के लिए कि प्रत्येक संस्करण सफाई से संकलित हो? सबसे अच्छे मामले में एक को कई प्रोसेसर के लिए बिल्ड को कॉन्फ़िगर करने में सक्षम होना चाहिए, वैकल्पिक रूप से इकाई परीक्षण चलाने और अधिकतम बाइनरी आकार की जांच करने के लिए।


इनो से गुजरने के अलावा और avr-size?
इग्नासियो वाज़केज़-अब्राम्स

@ IgnacioVazquez- एब्राम मैं जो उपकरण का उपयोग करने के लिए बुरा नहीं है, लेकिन यह कुछ क्लाउड होस्टिंग या निरंतर एकीकरण सेवा पर स्वचालित रूप से चलना चाहिए।
जकॉब

1
द्विआधारी आकार को संकलित करना कठिन नहीं है, लेकिन इकाई परीक्षण करने के लिए, आपको अपने कोड को इस तरह से संरचना करना होगा कि यह इकाई-परीक्षण योग्य हो, जो कि यदि आप आकार को छोटा रखना चाहते हैं, तो यह काफी कठिन है। इसके अलावा, आपको एक परीक्षण पाने के लिए उन परीक्षणों को एक चिप या एक एमुलेटर पर चलाने की आवश्यकता होगी जो अधिक या कम विश्वसनीय है।
गोलजट्रोल

मुझे github.com/kyab/travis-test-arduino मिला लेकिन इसका प्रयोगात्मक और उत्तर के रूप में एक व्यापक उत्तर / ट्यूटोरियल बेहतर होगा।
जकॉब

3
इसके साथ समस्या यह है कि यह निरंतर एकीकरण के मूल उद्देश्य के खिलाफ जाता है: यह परिवर्तन को धकेलने के लिए है और फिर इसे स्वचालित रूप से मिनटों के भीतर निर्मित और तैनात किया जाता है। यह आपके ग्राहकों को हर दो महीनों के बजाय नवीनतम सुविधाओं और सुधारों को प्राप्त करने की अनुमति देता है। Arduino के लिए यह सिर्फ "बादल बनाने सुनिश्चित करता है कि यह बनाता है।" यूनिट परीक्षणों के लिए आपको फ़ंक्शन बनाने और "पिन" पर उदाहरण डेटा भेजने के लिए Arduino पुस्तकालयों को बायपास करना पड़ सकता है।
अनाम पेंगुइन

जवाबों:


6

Arduino ide का सबसे नया संस्करण कोड बनाने और अपलोड करने के लिए कमांड लाइन इंटरफ़ेस है। लेकिन आप इसे स्पष्ट रूप से मेकफिल और एवरूड द्वारा कर सकते हैं। अब, आपने अपना कोड संकलित कर लिया है लेकिन आपको परीक्षण की आवश्यकता है। जैसा कि सिम्युलेटर जटिल, अधूरा, विस्तृत और .. बस एक सिमुलेशन है, और क्योंकि चिप अपेक्षाकृत सस्ते हैं, एक बोर्ड चुड़ैल का निर्माण एचडब्ल्यू इंटरेक्शन बना देगा और परिणामों को सबसे तेज़ और सबसे आसान तरीके से जांचेगा। उस "विशेष" बोर्ड पर आप कुछ अपलोड कर सकते हैं जैसे कि इंटरप्रेटर चुड़ैल पीसी से एक परीक्षा लेती है और इसे अंजाम देती है, कुछ ऐसा ही है आर्दीनो के लिए फर्मेटा के समान। कम से कम यह है कि मैं इसे कैसे बनाऊंगा। और जहां तक ​​मुझे पता है कि इसका कोई भी कार्यान्वयन नहीं है, भले ही मुझे यकीन है कि कई उद्योगों को ऐसा करना चाहिए और शायद ऐसा करना चाहिए।


4

PlatformIO के निर्माता के रूप में मैं आपको इसे देखने की सलाह दूंगा । यह एक क्रॉस-प्लेटफॉर्म कोड बिल्डर और लापता पुस्तकालय प्रबंधक है। यह कई लोकप्रिय एम्बेडेड विकास प्लेटफार्मों और बोर्डों के लिए एक ही कोड का निर्माण कर सकता है।

प्लेटफ़ॉर्मो को कई लोकप्रिय कंटीन्यूअस इंटीग्रेशन (CI) सिस्टम (या अपने खुद के) के साथ एकीकृत किया जा सकता है । उदाहरण के साथ प्रलेखन देखें ।

आइए .travis.ymlट्रैविस सीआई के लिए विन्यास / टेम्प्लेट देखें:

language: python
python:
    - "2.7"

env:
    - PLATFORMIO_CI_SRC=path/to/source/file.c
    - PLATFORMIO_CI_SRC=path/to/source/file.ino
    - PLATFORMIO_CI_SRC=path/to/source/directory

install:
    - python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"

script:
    - platformio ci --board=TYPE_1 --board=TYPE_2 --board=TYPE_N

उदाहरण

USB_Host_Shield_2.0परियोजना के लिए एकीकरण । .travis.ymlविन्यास फाइल:

language: python
python:
    - "2.7"

env:
    - PLATFORMIO_CI_SRC=examples/acm/acm_terminal
    - PLATFORMIO_CI_SRC=examples/Bluetooth/WiiIRCamera PLATFORMIO_BUILD_FLAGS="-DWIICAMERA"
    - PLATFORMIO_CI_SRC=examples/ftdi/USBFTDILoopback
    - PLATFORMIO_CI_SRC=examples/Xbox/XBOXUSB
    # - ...

install:
    - python -c "$(curl -fsSL https://raw.githubusercontent.com/platformio/platformio/master/scripts/get-platformio.py)"

    # Libraries from PlatformIO Library Registry
    # http://platformio.org/#!/lib/show/416/TinyGPS
    # http://platformio.org/#!/lib/show/417/SPI4Teensy3
    - platformio lib install 416 417

script:
    - platformio ci --board=uno --board=teensy31 --board=due --lib="."

3
यदि आप PlatformIO से संबद्ध या संबद्ध हैं, तो आपको अपने उत्तर में इसका खुलासा करना चाहिए, या इसे फ्लैग किया जा सकता है और स्पैम के रूप में हटाया जा सकता है। धन्यवाद!
निक गैमन

3

Arduino प्रोजेक्ट के लिए जेनकींस निरंतर एकीकरण स्थापित करने का एक उदाहरण यहां पाया जा सकता है: एम्बेडेड सिस्टम के लिए निरंतर एकीकरण

उदाहरण दिखाता है कि कैसे Arduino के लिए छवि बनाने और अपलोड करने के लिए और सेलेनियम वेब परीक्षणों को निष्पादित करें (परीक्षण के तहत प्रणाली Arduino- आधारित वेब-सर्वर है)।


अच्छा है क्योंकि यह कुछ मौजूदा सॉफ़्टवेयर डायन का उपयोग करता है जो कि समृद्ध है। लेकिन यह केवल वेब परीक्षण करने के लिए लगता है; क्या आप उत्तर का विस्तार कर सकते हैं? लिंक-आधारित उत्तर भी खराब हैं।
लेस्टो

3

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

हार्डवेयर के बिना CI नौकरियों को चलाने के अच्छे पक्ष और बुरे पक्ष हैं, अच्छे पक्ष मधुमक्खी हैं

  • कोई चमकती, कोई हार्डवेयर की जरूरत -> समानांतर में चलाया जा सकता है -> तेजी से हर प्रतिबद्ध के लिए उदाहरण के लिए जाँच करने के लिए
  • कोई भी हार्डवेयर परीक्षण को प्रभावित नहीं करता है -> चिंता करने की कोई जरूरत नहीं है कि यह परीक्षण सिर्फ असफल रहा क्योंकि मेरा XYZ- हार्डवेयर घटक स्थिर नहीं है

नकारात्मक पक्ष में है:

  • इसका वास्तविक लक्ष्य कोड का परीक्षण नहीं करना, उदाहरण के लिए आपका 'int' आपके पीसी में 32 बिट्स और AVR में 16 बिट्स है।

" अपने 'int' अपने पीसी में 64 बिट्स है ": आप शायद "32 बिट्स" मतलब है, या आप कुछ विदेशी ओएस का उपयोग कर रहे हैं।
एडगर बोनट

आप निश्चित रूप से सही हैं, धन्यवाद। मैंने उसे ठीक करने के लिए अपना उत्तर संपादित किया।
susundberg

ध्यान दें कि आप एक सस्ते पीसी के साथ एक इन-होम सीआई सर्वर सेट कर सकते हैं जैसे कि एक रास्पबेरी एक एचडब्ल्यू बोर्ड तक झुका हुआ है और इस तरह सीआई के बुनियादी ढांचे का एक टुकड़ा वास्तविक एचडब्ल्यू पर चल रहा है (जबकि शायद सभी के लिए डिफ़ॉल्ट क्लाउड सीआई रखते हुए यह सॉफ्टवेयर है )
लेस्टो

3

मैंने सिर्फ एक सभ्य आकार के राइटअप को एक संबंधित Arduino CI / Unit टेस्टिंग फ्रेमवर्क के बारे में इस प्रश्न के उत्तर के रूप में एक साथ रखा है, जो मैंने लिखा है कि आखिरकार सार्वजनिक रूप से बात करना शुरू करने के लिए पर्याप्त परिपक्व है।

arduino_ciगहरे लाल रंग का रत्न दोनों को स्थानीय परीक्षण और ट्रैविस सीआई एकीकरण (जैसे का समर्थन करता है Adafruit fona पुस्तकालय के लिए इस बिल्ड काम )।

यह कैसे एकीकृत करता है इसके कुछ उदाहरण:

मेरे पास स्केच आकार की रिपोर्ट करने के लिए एक मुद्दा है, लेकिन उस पर कोई काम नहीं किया गया है। यह भी संभव है कि मैं किसी दिन बिल्डरों को समानांतर कर सकता हूं, लेकिन फिलहाल मुझे यकीन नहीं है कि मैं ऐसा कैसे करूंगा। अभी, ट्रैविस सीआई पर सबसे अधिक समय लेने वाले निर्माण कदम Arduino IDE को डाउनलोड कर रहा है ... समानांतर परीक्षण में बहुत अधिक सेंध नहीं लगाई जाएगी यदि हर काम को उस चरण को करने की आवश्यकता है।


1

मैं arduino ग्रहण प्लगइन नामित sloeber उपयोग करने के लिए सलाह होगा sloeber.io जिनमें से मैं परियोजना का नेतृत्व कर रहा हूँ।
यह संस्करण नियंत्रण के साथ एकीकृत है और कई प्लेटफार्मों पर निर्माण की अनुमति देता है क्योंकि यह कई कॉन्फ़िगरेशन का समर्थन करता है।
हालाँकि यह अभी तक बेवकूफ़ सबूत नहीं है, लेकिन मैंने स्थानीय पीसी पर arduino कोड के यूनिट परीक्षण का उपयोग करके Google परीक्षण रूपरेखा का उपयोग करके दस्तावेज और प्रदर्शन किया है।
यहाँ एक ब्लॉग का लिंक दिया गया है जिसमें आप यह कर सकते हैं कि आप इसे कैसे कर सकते हैं। http://blog.baeyens.it/#post25

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.