লিনাক্স কার্নেল বিকাশকারীরা স্থানীয়ভাবে এবং এটি সম্পাদন করার পরে কীভাবে তাদের কোড পরীক্ষা করে? তারা কি কোনও ধরণের ইউনিট টেস্টিং ব্যবহার করে, অটোমেশন তৈরি করে? পরীক্ষার পরিকল্পনা?
লিনাক্স কার্নেল বিকাশকারীরা স্থানীয়ভাবে এবং এটি সম্পাদন করার পরে কীভাবে তাদের কোড পরীক্ষা করে? তারা কি কোনও ধরণের ইউনিট টেস্টিং ব্যবহার করে, অটোমেশন তৈরি করে? পরীক্ষার পরিকল্পনা?
উত্তর:
লিনাক্স কার্নেলের সম্প্রদায়ের পরীক্ষায় জোর দেওয়া হয়।
সাধারণত কোনও বিকাশকারী জমা দেওয়ার আগে তাদের নিজস্ব কোড পরীক্ষা করবে এবং প্রায়শই তারা লিনাস থেকে কার্নেলের একটি বিকাশ সংস্করণ ব্যবহার করবে বা তাদের কাজের সাথে সম্পর্কিত প্রকল্পের জন্য অন্য কোনও অস্থির / উন্নয়ন গাছ ব্যবহার করবে। এর অর্থ তারা প্রায়শই তাদের পরিবর্তন এবং অন্যান্য মানুষের পরিবর্তন উভয়ই পরীক্ষা করে থাকে।
আনুষ্ঠানিক পরীক্ষার পরিকল্পনার পথে তেমন কিছু হওয়ার প্রবণতা নেই, তবে বৈশিষ্ট্যগুলি উজানের গাছগুলিতে মিশে যাওয়ার আগে অতিরিক্ত পরীক্ষার জন্য বলা যেতে পারে।
ডিন যেমন উল্লেখ করেছেন, সেখানে কিছু স্বয়ংক্রিয় পরীক্ষাও রয়েছে , লিনাক্স পরীক্ষা প্রকল্প এবং কার্নেল অটোটেস্ট ( ভাল ওভারভিউ )।
বিকাশকারীরা প্রায়শই তাদের পরিবর্তন পরীক্ষা করার জন্য লক্ষ্যযুক্ত স্বয়ংক্রিয় পরীক্ষাগুলিও লিখবেন, তবে আমি নিশ্চিত নই যে এই অ্যাডহক পরীক্ষাগুলি কেন্দ্রীয়ভাবে সংগ্রহ করার জন্য একটি (প্রায়শই ব্যবহৃত) মেকানিজম রয়েছে।
কার্নেলের কোন ক্ষেত্রটি অবশ্যই পরিবর্তন করা হচ্ছে তার উপর এটি অনেকটাই নির্ভর করে - মূল নেটওয়ার্কিং অ্যালগরিদম প্রতিস্থাপন করার সময় আপনি যে নতুন পরীক্ষাটি নতুন নেটওয়ার্ক ড্রাইভারের জন্য করতেন তা যে টেস্টিংয়ের চেয়ে ভাল তা ভিন্ন।
স্বাভাবিকভাবেই, কার্নেল নিজেই এবং এর অংশগুলি মুক্তির আগে পরীক্ষা করা হয়, তবে এই পরীক্ষাগুলি কেবলমাত্র মৌলিক কার্যকারিতা জুড়ে। কিছু টেস্টিং সিস্টেম রয়েছে যা লিনাক্স কার্নেলের পরীক্ষা করে:
লিনাক্স টেস্ট প্রকল্প (এলটিপি) ওপেন সোর্স সম্প্রদায়ে টেস্ট স্যুট সরবরাহ করে যা লিনাক্সের নির্ভরযোগ্যতা এবং স্থায়িত্বকে বৈধ করে তোলে। LTP টেস্ট স্যুইটে লিনাক্স কার্নেল এবং সম্পর্কিত বৈশিষ্ট্যগুলি পরীক্ষার জন্য সরঞ্জামগুলির সংকলন রয়েছে। https://github.com/linux-test-project/ltp
অটোস্টেস্ট - সম্পূর্ণ স্বয়ংক্রিয় পরীক্ষার জন্য একটি কাঠামো। এটি মূলত লিনাক্স কার্নেল পরীক্ষা করার জন্য ডিজাইন করা হয়েছে, যদিও এটি অন্যান্য হার্ডওয়্যার, ভার্চুয়ালাইজেশন পরীক্ষা এবং অন্যান্য সাধারণ ব্যবহারকারী স্থান স্পেস প্রোগ্রাম পরীক্ষার জন্য লিনাক্স প্ল্যাটফর্মের অধীনে ব্যবহারযোগ্য। এটি জিপিএলের আওতায় একটি ওপেন সোর্স প্রকল্প এবং এটি গুগল, আইবিএম, রেড হ্যাট এবং আরও অনেকগুলি সংস্থার দ্বারা ব্যবহৃত এবং বিকাশিত। http://autotest.github.io/
এছাড়াও কয়েকটি বড় জিএনইউ / লিনাক্স বিতরণ সংস্থাগুলি দ্বারা বিকাশ করা শংসাপত্র সিস্টেম রয়েছে। এই সিস্টেমগুলি সাধারণত হার্ডওয়্যার সাথে সামঞ্জস্যের জন্য সম্পূর্ণ GNU / লিনাক্স বিতরণ পরীক্ষা করে। সার্টিফিকেশন সিস্টেম দ্বারা উন্নত আছে নোভেল, রেড হ্যাট, ওরাকল, ক্যানোনিকাল, গুগল ।
লিনাক্স কার্নেলের গতিশীল বিশ্লেষণের জন্য সিস্টেমগুলি রয়েছে:
Kmemleak লিনাক্স কার্নেলের অন্তর্ভুক্ত একটি মেমরি ফাঁস সনাক্তকারী। এটি একটি ট্র্যাসিং আবর্জনা সংগ্রহকারীর মতো পার্থক্যের সাথে অনাথ বস্তুগুলি মুক্তি দেওয়া হয় না তবে কেবলমাত্র / sys / কার্নেল / ডিবাগ / কেমেলেকের মাধ্যমে রিপোর্ট করা সম্ভব কর্নেল মেমরি ফাঁস সনাক্ত করার একটি উপায় সরবরাহ করে।
কেমেচেক প্রতিটি পাঠ্য এবং মেমরির লেখাকে ফাঁদে ফেলে যা ডায়নামিকভাবে বরাদ্দ করা হয়েছিল (যেমন কেমলোক () সহ)। যদি কোনও মেমরি ঠিকানা পড়ে থাকে যা আগে লেখা হয় নি, কার্নেল লগে একটি বার্তা মুদ্রিত হবে। লিনাক্স কার্নেলের একটি অংশও
ফল্ট ইনজেকশন ফ্রেমওয়ার্ক (লিনাক্স কার্নেলের অন্তর্ভুক্ত) সিস্টেমের উচ্চতর কভারেজ এবং ফল্ট সহনশীলতা অর্জনের জন্য একটি অ্যাপ্লিকেশনটির লজিকটিতে ত্রুটি এবং ব্যতিক্রমগুলি সংযোজন করার অনুমতি দেয়।
লিনাক্স কার্নেল বিকাশকারীরা কীভাবে তাদের কোডটি স্থানীয়ভাবে এবং এটি প্রতিশ্রুতিবদ্ধ হওয়ার পরে পরীক্ষা করে?
তারা কি কোনও ধরণের ইউনিট টেস্টিং ব্যবহার করে, অটোমেশন তৈরি করে?
শব্দগুলির ক্লাসিক অর্থে, না।
E. g। ইনগো মোলনার নিম্নলিখিত ওয়ার্কলোডটি চালাচ্ছেন: 1. কনফিগার বিকল্পের র্যান্ডম সেট সহ নতুন কার্নেল তৈরি করুন 2. এটিতে বুট করুন 3. গোটো 1
প্রতিটি বিল্ড ব্যর্থ, বুট ব্যর্থ, বিইউজি বা রানটাইম সতর্কতা মোকাবেলা করা হয়। 24/7। বেশ কয়েকটি বাক্সে গুণ করুন এবং একটি বেশ কয়েকটি সমস্যার সমাধান করতে পারে।
পরীক্ষার পরিকল্পনা?
না।
সেখানে ভুল বোঝাবুঝি হতে পারে যে এখানে কেন্দ্রীয় পরীক্ষার সুবিধা রয়েছে, সেখানে কিছুই নেই। প্রত্যেকে যা চায় তাই করে।
গাছের মধ্যে সরঞ্জাম
কার্নেলের মধ্যে পরীক্ষার সরঞ্জামগুলি খুঁজে পাওয়ার একটি ভাল উপায় হ'ল:
make help
এবং সমস্ত লক্ষ্যবস্তু পড়ুনV4.0 এ, এটি আমার দিকে নিয়ে যায়:
হাতিয়ার / টেস্টিং / সেলফেটস এর অধীনে কেস্টেস্ট । সাথে চালাও make kselftest
। ইতোমধ্যে বিল্ট করা কার্নেলটি চালানো উচিত। আরও দেখুন: ডকুমেন্টেশন / kselftest.txt , https://kselftest.wiki.kernel.org/
টুর্নামেন্ট / টেস্টিং / কেষ্টের অধীনে কেস্ট । আরও দেখুন: http://elinux.org/Kest , http://www.slideshare.net/satorutakeuchi18/kernel-auto-testbyktest
স্ট্যাটিক বিশ্লেষক বিভাগের অংশ make help
, যার মধ্যে লক্ষ্যগুলি রয়েছে:
checkstack
: পার্ল: লিনাক্স উত্সে চেকস্ট্যাক.পিএল কী করে?coccicheck
কোকসিনেলের জন্য ( জিজ্ঞাসাবাদক উল্লেখ করেছেন )কার্নেল সিআই
https://kernelci.org/ হ'ল এমন একটি প্রকল্প যা লক্ষ্য কর্নেল পরীক্ষাকে আরও স্বয়ংক্রিয় ও দৃশ্যমান করে তোলা।
এটি কেবল বিল্ড এবং বুট পরীক্ষা করে দেখা যাচ্ছে (বুট কাজের উত্সটি https://github.com/kernelci/ এ থাকা উচিত কীভাবে স্বয়ংক্রিয়ভাবে এটি পরীক্ষা করতে হবে ) do
লিনারো অনেক বড় সংস্থার অবদানের সাথে এই প্রকল্পের প্রধান রক্ষণাবেক্ষণকারী বলে মনে হচ্ছে: https://kernelci.org/sponsors/
লিনারো লাভা
http://www.linaro.org/initiatives/lava/ এ সিআই সিস্টেমের মতো দেখায় যা বিকাশ বোর্ড আনয়ন এবং লিনাক্স কার্নেলের উপর দৃষ্টি নিবদ্ধ করে।
আর্ম লিসা
https://github.com/ARM-software/lisa
এটি বিশদে কী করে তা নিশ্চিত নয়, তবে এটি এআরএম এবং অ্যাপাচি লাইসেন্সযুক্ত, তাই সম্ভবত এটি দেখার মতো মূল্য রয়েছে।
ডেমো: https://www.youtube.com/watch?v=yXZzzUEngiU
পদক্ষেপ ডিবাগার
সত্যই ইউনিট পরীক্ষা নয়, তবে একবার আপনার পরীক্ষাগুলি ব্যর্থ হওয়া শুরু করতে সহায়তা করতে পারে:
আমার নিজের কিউইউ + বিল্ড্রুট + পাইথন সেটআপ up
আমি উন্নয়নের স্বাচ্ছন্দ্যে একটি সেটআপও শুরু করেছি, তবে আমি এতে কিছু সাধারণ পরীক্ষার ক্ষমতা যুক্ত করেও শেষ করেছি: https://github.com/cirosantilli/linux-kernel-module-cheat/tree/8217e5508782827320209644dcbaf9a6b3141724#test- এই -repo
আমি অন্যান্য সমস্ত সেটআপগুলি বিশদভাবে বিশ্লেষণ করিনি, এবং তারা সম্ভবত আমার চেয়ে আরও অনেক কিছু করেছে, তবে আমি বিশ্বাস করি যে আমার সেটআপটি দ্রুত শুরু করা খুব সহজ কারণ এতে প্রচুর ডকুমেন্টেশন এবং অটোমেশন রয়েছে।
কার্নেল পরীক্ষার স্বয়ংক্রিয় করা এটি খুব সহজ নয়। বেশিরভাগ লিনাক্স বিকাশকারীরা নিজেরাই টেস্টিং করেন, যেমনটি অ্যাডোব্রায়ানের উল্লেখ করা হয়েছে।
তবে লিনাক্স কার্নেলটি ডিবাগ করার জন্য কয়েকটি জিনিস রয়েছে:
তারপরে, বিকাশকারীদের সাধারণত অন্যরা তাদের প্যাচগুলি পর্যালোচনা করে। একবার প্যাচগুলি স্থানীয়ভাবে পর্যালোচনা করা হলে এবং অন্য কোনও কাজে হস্তক্ষেপ না করতে দেখা যায় এবং প্যাচগুলি লিনাসের সর্বশেষ কার্নেলের সাথে কোনও কিছু না ভেঙে কাজ করার জন্য পরীক্ষা করা হয়, প্যাচগুলি উপরের দিকে প্রবাহিত করা হয়।
সম্পাদনা করুন: প্যানেল কার্নেলের সাথে একীভূত হওয়ার আগে একটি প্যাচটি যে প্রক্রিয়াটি পেরেছিল তার বিশদটি দেওয়ার জন্য এখানে একটি দুর্দান্ত ভিডিও ।
উপরে / নীচের পয়েন্টগুলি ছাড়াও, যেগুলি লিনাক্স কার্নেলের কার্যকারিতা পরীক্ষা, হার্ডওয়্যার সার্টিফিকেশন টেস্টিং এবং পারফরম্যান্স পরীক্ষার উপর বেশি জোর দেয়।
আসলে অনেকগুলি পরীক্ষার মধ্য দিয়ে ঘটে, আসলে স্ক্রিপ্টস, স্ট্যাটিক কোড বিশ্লেষণ সরঞ্জামগুলি, কোড পর্যালোচনা ইত্যাদি যা বাগগুলি ধরতে খুব দক্ষ, যা অন্যথায় অ্যাপ্লিকেশনটিতে কিছু ভাঙবে।
স্পার্স - লিনাক্স কার্নেলের ত্রুটিগুলি সন্ধানের জন্য ডিজাইন করা একটি মুক্ত-উত্স সরঞ্জাম।
কোকিনেল হ'ল আরেকটি প্রোগ্রাম যা ম্যাচিং এবং ট্রান্সফর্মেশন ইঞ্জিন করে যা সি কোডে কাঙ্ক্ষিত ম্যাচগুলি এবং রূপান্তরকরণের জন্য ভাষা স্মিপিএল (শব্দার্থ প্যাচ ল্যাঙ্গুয়েজ) সরবরাহ করে।
চেকপ্যাচ.পিএল এবং অন্যান্য স্ক্রিপ্টস - কোডিং শৈলী সংক্রান্ত সমস্যাগুলি কার্নেল উত্স ট্রিতে ডকুমেন্টেশন / কোডিং স্টাইল ফাইলটিতে পাওয়া যাবে। এটি পড়ার সময় মনে রাখা গুরুত্বপূর্ণ বিষয়টি এই নয় যে এই শৈলীটি অন্য কোনও শৈলীর চেয়ে একরকম ভাল, কেবল এটি সামঞ্জস্যপূর্ণ। এটি বিকাশকারীদের সহজেই কোডিং শৈলীর সমস্যাগুলি সহজে সমাধান এবং সমাধান করতে সহায়তা করে, কার্নেল উত্স ট্রিতে স্ক্রিপ্ট স্ক্রিপ্ট / চেকপ্যাচ.পিএল বিকাশ করা হয়েছে। এই স্ক্রিপ্টটি সমস্যাগুলি সহজেই চিহ্নিত করতে পারে এবং পর্যালোচককে পরে সমস্যাগুলি নির্দেশ করে তাদের সময় নষ্ট না করে পরিবর্তে সর্বদা তাদের পরিবর্তনগুলি বিকাশকারী দ্বারা চালিত করা উচিত।
আমি কল্পনা করব যে তারা দ্রুত পরীক্ষা করতে কিউইউএমইউ, ভার্চুয়ালবক্স বা জেনের মতো কিছু এবং কনফিগারেশন এবং স্বয়ংক্রিয় পরীক্ষার জন্য কিছু স্ক্রিপ্ট ব্যবহার করতে ভার্চুয়ালাইজেশন ব্যবহার করে।
অটোমেটেড টেস্টিং সম্ভবত অনেকগুলি এলোমেলো কনফিগারেশন বা কয়েকটি নির্দিষ্ট (যদি তারা একটি নির্দিষ্ট সমস্যা নিয়ে কাজ করে থাকে) চেষ্টা করে হয়। লিনাক্সের কার্নেল থেকে ডেবিগ ডেটা নিরীক্ষণ এবং লগ করার জন্য প্রচুর নিম্ন-স্তরের সরঞ্জাম রয়েছে (যেমন dmesg), তাই আমি কল্পনা করি যে এটিও ব্যবহৃত হয়।
এছাড়াও আছে:
ফলাফল বিশ্লেষণের জন্য এমএমটি টেস্টগুলি যা বেঞ্চমার্ক এবং স্ক্রিপ্টগুলির সংগ্রহ
https://github.com/gormanm/mmtests
ট্রিনিটি যা লিনাক্স সিস্টেম কল ফজ পরীক্ষক
http://codemonkey.org.uk/projects/trinity/
এছাড়াও সোর্সফোজের এলটিপি পৃষ্ঠাগুলি বেশ পুরানো এবং প্রকল্পটি গিটহাব https://github.com/linux-test-project/ltp এ চলে গেছে
যতদূর আমি জানি, একটি স্বয়ংক্রিয়ভাবে পারফরম্যান্স রিগ্রেশন চেক টুল রয়েছে (নাম দেওয়া হয়েছে lkp / 0 দিন) ইন্টেলের দ্বারা চালিত / তহবিল, এটি মেলিং তালিকায় প্রেরিত প্রতিটি বৈধ প্যাচ পরীক্ষা করবে এবং হ্যাকবেঞ্চের মতো বিভিন্ন মাইক্রোব্যাঙ্কমার্ক থেকে পরিবর্তিত স্কোরগুলি পরীক্ষা করবে , ফাইও, ইউনিক্সবেঞ্চ, নেটপার্ফ ইত্যাদি একবার পারফরম্যান্স রিগ্রেশন / উন্নতি হয়ে গেলে, সম্পর্কিত প্রতিবেদনটি সরাসরি প্যাচ লেখক এবং সিসি সম্পর্কিত রক্ষণাবেক্ষণকারীদের কাছে প্রেরণ করা হবে।
এলটিপি এবং মেমেটস সাধারণত পছন্দসই সরঞ্জাম।
অ্যাডোব্রায়ান ইনগোয়ের এলোমেলো কনফিগার বিল্ড পরীক্ষার উল্লেখ করেছে। এটি এখন 0-দিনের টেস্ট বট (ওরফে কেবিল্ড টেস্ট বট) দ্বারা আচ্ছাদিত। পরিকাঠামো সম্পর্কে একটি দুর্দান্ত নিবন্ধ এখানে উপস্থাপন করা হয়েছে: কার্নেল বিল্ড / বুট পরীক্ষা
এই সেট আপের পিছনে ধারণাটি হ'ল বিকাশকারীদের এএসএপকে অবহিত করা যাতে তারা খুব শীঘ্রই ত্রুটিগুলি সংশোধন করতে পারে। (প্যাচগুলি কিছু ক্ষেত্রে লিনাসের গাছে পরিণত করার আগে কেবিল্ড অবকাঠামো রক্ষণাবেক্ষণকারীদের সাবসিস্টেম গাছের বিরুদ্ধেও পরীক্ষা করে)
আমি লিনাক্স কার্নেল সংকলন করেছি এবং অ্যান্ড্রয়েডের জন্য কিছু পরিবর্তন করেছি (মার্শমালো এবং নুগ্যাট) যেখানে আমি লিনাক্স সংস্করণটি ব্যবহার করি I. আমি এটি লিনাক্স সিস্টেমে ক্রস-সংকলিত করেছি, ত্রুটিগুলি নিজেই ডিবাগ করেছি এবং তারপরে অ্যান্ড্রয়েডে এটির বুট চিত্র ফাইলটি চালাচ্ছি এবং পরীক্ষা করে দেখুন কিনা এটি লুপ-গর্তে যাচ্ছিল কি না। যদি এটি নিখুঁত হয় তবে এর অর্থ এটি সিস্টেমের প্রয়োজনীয়তা অনুযায়ী নিখুঁতভাবে সংকলিত।
মোটোগুলি কার্নেল সংকলনের জন্য
দ্রষ্টব্য: - লিনাক্স কার্নেল সিস্টেম হার্ডওয়ারের উপর নির্ভরশীল প্রয়োজনীয়তা অনুসারে পরিবর্তন হবে
অবদানকারীরা তাদের প্যাচ ফাইলগুলি জমা দেওয়ার পরে এবং মার্জ করার অনুরোধ করার পরে লিনাক্স গেটকিপাররা প্যাচটি সংহত করে পর্যালোচনা করছে it এটি সফল হলে যদি তারা প্যাচটিকে প্রাসঙ্গিক শাখায় মার্জ করে এবং নতুন সংস্করণ প্রকাশ করবে। লিনাক্স টেস্ট প্রকল্প ( https://github.com/linux-test-project/ltp ) হ'ল প্রধান উত্স যা প্যাচ প্রয়োগের পরে কার্নেলের বিরুদ্ধে চালানোর জন্য পরীক্ষার পরিস্থিতি (টেস্ট কেসগুলি) সরবরাহ করে। এটি প্রায় 2 ~ 4 ঘন্টা সময় নিতে পারে এবং নির্ভর করে। নির্বাচিত কার্নেলের ফাইল সিস্টেম সম্পর্কিত পরীক্ষা করুন। উদাহরণস্বরূপ: Ext4 এক্সট 3 এর বিপরীতে বিভিন্ন ফলাফল উত্পন্ন করে।
কার্নেল পরীক্ষার পদ্ধতি।