Abstract:
সফ্টওয়্যার পরীক্ষা-ডেটা প্রজন্মের সমস্যা সমাধানের জন্য সারাংশ-অনুসন্ধান-ভিত্তিক পদ্ধতিগুলি ব্যাপকভাবে প্রয়োগ করা হয়েছে। তবুও, ওপেনের বৈশিষ্ট্যগুলির কারণে, অ্যাটাক-ভিত্তিক প্রোগ্রামিং (OOP) এর জন্য পরীক্ষার প্রজন্মটি চ্যালেঞ্জিং হয়, উদাঃ, বিমূর্তীকরণ, এনক্যাপুলেশন, এবং দৃশ্যমানতা যা সোর্স কোডের কিছু অংশগুলিতে সরাসরি অ্যাক্সেস প্রতিরোধ করে। এই সমস্যা মোকাবেলার জন্য আমরা একটি নতুন স্বয়ংক্রিয় উপস্থাপন ইউনিট-বর্গ পরীক্ষার জন্য উচ্চ কোড কভারেজ অর্জন করে এমন অনুসন্ধান-ভিত্তিক সফটওয়্যার পরীক্ষা-ডেটা প্রজন্মের পদ্ধতি। আমরা প্রথম কিভাবে বর্ণনা পদ্ধতি কলগুলির প্রাসঙ্গিক ক্রম উৎপন্ন করতে আমরা ইউনিট-ক্লাস পরীক্ষার জন্য পরীক্ষা-ডেটা প্রজন্মের সমস্যাটি গঠন করি। একটি স্ট্যাটিক মাধ্যমে বিশ্লেষণ, আমরা ক্লাস-আন্ডার-টেস্টের অবস্থা পরিবর্তন করে কেবলমাত্র পদ্ধতি বা কন্সট্রাক্টর বিবেচনা করি অথবা এটি একটি পরীক্ষামূলক লক্ষ্যমাত্রায় পৌঁছাতে পারে। তারপর আমরা ক্লাসের দৃষ্টান্তগুলির জেনারেটর পরিচয় করিয়েছি যা উপশ্রেণী এবং বহিরাগত সহ তাত্ক্ষণিকভাবে পরিবারের উপর ভিত্তি করে কারখানা পদ্ধতি। এটি পরীক্ষার লক্ষ্যমাত্রা পৌঁছানোর সম্ভাবনা বাড়ানোর জন্য বীজতলা কৌশল এবং বৈচিত্র্য কৌশল ব্যবহার করে। ব্যবহার একই সময়ে সকল পরীক্ষার লক্ষ্যমাত্রা পৌঁছানোর জন্য অনুসন্ধানের অনুসন্ধান, আমরা একটি টুল, জেটিএক্সপার্টে আমাদের পদ্ধতি প্রয়োগ করি, যা আমরা মূল্যায়ন করি বিভিন্ন ওপেন সোর্স লাইব্রেরি থেকে একশত জাভা ক্লাস। JTExpert অনুসন্ধান সময় এবং কোড পরিপ্রেক্ষিতে ভাল ফলাফল দেয় প্রযুক্তির বর্তমান বা আধুনিকতম অবস্থা চেয়ে কভারেজ, ইভোসাইট, যা ঐতিহ্যগত কৌশলগুলি ব্যবহার করে।
Index Terms—Automatic Test Data Generation, Search Based Software Testing, Unit Class Testing, Seeding Strategy, Diversification
Strategy, Java Testing
সফ্টওয়্যার পরীক্ষার একটি সময় গ্রাসকারী এবং ক্লান্তিকর প্রক্রিয়া, মোট সফ্টওয়্যার 50% এর বেশি অ্যাকাউন্টিং খরচ [32]। পরীক্ষার সবচেয়ে ব্যয়বহুল অংশ পরীক্ষার তথ্য প্রজন্ম। এই প্রজন্ম স্বয়ংক্রিয়ভাবে গতিশীল কারণে একক শ্রেণীর পরীক্ষার জন্য চ্যালেঞ্জিং প্রকৃতি এবং বস্তু ভিত্তিক প্রোগ্রামিং ভাষাগুলির (OOP) জটিল বৈশিষ্ট্যগুলি, উদাঃ, বিমূর্তকরণ, এনক্যাপুলেশন এবং দৃশ্যমানতা। এই বৈশিষ্ট্যগুলি সোর্স কোডের কিছু অংশগুলিতে সরাসরি অ্যাক্সেস রোধ করে এবং অ্যাক্সেসযোগ্য পদ্ধতিগুলির মাধ্যমে যেমন অংশগুলিতে অপ্রত্যক্ষ অ্যাক্সেস প্রয়োগ করে, যেমন, পাবলিক পদ্ধতি [8]। উৎস কোড এই সমস্যা অ্যাক্সেসিবিলিটি কোড কভারেজ হ্রাস বাড়ে। অ্যাক্সেসিবিলিটি সমস্যাটির সমাধান করতে, একটি পরীক্ষা-তথ্য জেনারেটরের তিনটি কাজ সম্পাদন করতে হবে: (1) ক্লাস-আন্ডার-পরীক্ষা (CUT) এবং অন্যান্য প্রয়োজনীয় সমস্ত ক্লাসগুলি তাত্ক্ষণিকভাবে চালু করুন; (2) একটি পছন্দসই অবস্থায় CUT এর উদাহরণ দেওয়ার জন্য পদ্ধতি কলগুলির একটি ক্রম সম্পাদন করুন (যেমন, এমন একটি রাষ্ট্র যা পরীক্ষা লক্ষ্য পৌঁছানোর সাহায্য); এবং, (3) একটি পদ্ধতি যে কল পরীক্ষা লক্ষ্য পৌঁছাতে পারে। প্রদত্ত পরীক্ষা লক্ষ্য পৌঁছানোর জন্য একটি পরীক্ষামূলক তথ্য উপস্থাপন করার জন্য এই তিনটি ক্রিয়াগুলির পর্যাপ্ত সংমিশ্রণ খুঁজে পেতে সমস্যাটি হল। এই সমস্যার সমাধান তিনটি সমস্যার সম্মুখীন: (D1) একটি পর্যাপ্ত ফাইন্ডিং CUT এবং প্রতিটি প্রয়োজনীয় বস্তুর উদাহরণ; (D2 গ্রাহকের) পদ্ধতির একটি পর্যাপ্ত ক্রম খুঁজে পেতে কল কল একটি ইচ্ছাকৃত অবস্থায় কাট উদাহরণ; এবং, (D3) ফাইন্ডিং পরীক্ষা লক্ষ্য পৌঁছানোর একটি পর্যাপ্ত পদ্ধতি। অনেক পন্থা মোকাবেলার প্রস্তাব করা হয়েছে পরীক্ষা-তথ্য প্রজন্ম স্বয়ংক্রিয়ভাবে এবং যে পতন অনুসন্ধান ভিত্তিক সফ্টওয়্যার পরীক্ষায় (এসবিএসটি)। এসবিএসটি হয়েছে সফলভাবে পরীক্ষার তথ্য সমস্যা সমাধানের জন্য প্রয়োগ প্রজন্ম । এসবিএসটি পরীক্ষার তথ্য অনুবাদ করে প্রদান করে একটি অনুসন্ধান সমস্যা মধ্যে প্রজন্মের সমস্যা একটি সম্ভাব্য সমাধান একটি বিমূর্ত উপস্থাপনা মূল সমস্যা এবং একটি ফিটনেস ফাংশন দ্বারা পরিচালিত একটি অনুসন্ধান heuristic ব্যবহার করে একটি প্রকৃত সমাধান অনুসন্ধান করে। এসবিএসটি ইনপুট তথ্য একটি ভেক্টর দ্বারা প্রক্রিয়াগত প্রোগ্রামিং জন্য পরীক্ষার তথ্য প্রজন্মের সমস্যা প্রতিনিধিত্ব করে। কখন OOP জন্য পরীক্ষার তথ্য প্রজন্মের সমস্যা বিবেচনা, SBST অ্যাকাউন্টে রাষ্ট্র বিবেচনা করা আবশ্যক। একটি পরীক্ষামূলক লক্ষ্য পৌঁছানোর পদ্ধতির আগে, CUT এর একটি উদাহরণ এবং পদ্ধতির ক্রমগুলির একটি ক্রমটি একটি পরীক্ষামূলক লক্ষ্যে একটি পরীক্ষামূলক টার্গেটে পৌঁছানোর প্রয়োজন হয়।
অতএব, অনুসন্ধান সমস্যাটি CUT (D1), পদ্ধতি কলগুলির একটি ক্রম (D2 + D3), এবং প্রতিটি প্রয়োজনীয় যুক্তি (D1) এর জন্য একটি তাত্ক্ষণিক তাত্ক্ষণিক তাত্ক্ষণিক উপায়ে কোন উপায় খুঁজে বের করে। ইউনিট-ক্লাস পরীক্ষার জন্য পরীক্ষার ডেটা প্রজন্মের সমস্যাগুলির সমাধান করতে, সর্বাধিক ব্যাপকভাবে ব্যবহৃত পদ্ধতিটি D1 এর সমগ্র অনুসন্ধানের স্থান এবং D2 + D3 এর একটি কম অনুসন্ধান স্থান অনুসন্ধান করছে যা পদ্ধতির কলগুলির ক্রমগুলির দৈর্ঘ্য সীমিত করে, প্রাথমিকভাবে এলোমেলোভাবে পদ্ধতি কল এবং ক্লাসের ক্রম দৃষ্টিকোণ উৎপন্ন। পদ্ধতি কলগুলির ক্রম তৈরি করতে, দৈর্ঘ্য `একটি দ্বারা আবদ্ধ ধ্রুবক এল এলোমেলোভাবে উত্পন্ন হয়, যেখানে এল উল্লেখ করা হয় ব্যবহারকারী দ্বারা বা পদ্ধতির দ্বারা স্বয়ংক্রিয়ভাবে নির্বাচিত, তারপরে একটি অ্যালগরিদম পুনরাবৃত্তিমূলকভাবে এবং এলোমেলোভাবে একটি নির্বাচন করে অ্যাক্সেস দৈর্ঘ্য `র পৌঁছানোর পর্যন্ত অ্যাক্সেসযোগ্য পদ্ধতি।পদ্ধতি কল ক্লাস এবং ক্রম উদাহরণএকটি স্থগিত অবস্থা পর্যন্ত উন্নত বা পুনর্জন্ম হয়পৌঁছেছেন। যেমন একটি পদ্ধতির সঙ্গে, অনুসন্ধান স্থান বড়চারটি কারণে: (1) কোন নিষেধাজ্ঞা নেইকল করার পদ্ধতি; (2) দৈর্ঘ্য কোন সীমাবদ্ধতা নেইপদ্ধতি কল এর ক্রম; (3) পদ্ধতির আদেশকল অনির্ধারিত হয়; (4) একটি CUT বা সম্ভাব্য উদাহরণএকটি যুক্তি "সীমাহীন" হতে পারে। যেহেতু যেকোন শ্রেণিতে একটি "সীমাহীন" সংখ্যা থাকতে পারেসম্ভাব্য উদাহরণস্বরূপ, D1 এর অনুসন্ধান স্থান খুববড়। কিছু সাবসপেসে যেমন অনুসন্ধান স্থান বিভক্তএবং বিভিন্ন সাবসপেসেস থেকে প্রয়োজনীয় ঘটনাগুলি উৎপন্ন করার ফলে পরীক্ষার লক্ষ্যমাত্রা পৌঁছানোর সম্ভাবনা বাড়তে পারে।বিভিন্ন উপায়ে তাত্ক্ষণিক ব্যবহার (উদাঃ, নির্মাতারা,কারখানা পদ্ধতি, subclasses) উদাহরণউৎপাদনের সময়ক্লাস অনুসন্ধান স্থান বিভক্ত করতে পারেন, বৈচিত্র্য উৎপন্নউদাহরণ, এবং স্বয়ংক্রিয় পরীক্ষা-তথ্য প্রজন্মের প্রক্রিয়া গতি। আরও, পূর্ববর্তী কাজ হিসাবে দেখানোহয়েছে একটি বীজতলা কৌশল সমাধান করতে সাহায্য করতে পারে দক্ষতার পরীক্ষা-তথ্য প্রজন্মের সমস্যা।
D2 এবং D3 এর অনুসন্ধান স্থান কমে যেতে পারে পদ্ধতির একটি উপসেট থেকে ক্রম নির্বাচন করে
পরীক্ষা লক্ষ্য প্রাসঙ্গিক পদ্ধতি রয়েছে। একজন পদ্ধতি D2 প্রাসঙ্গিক যদি এটি রাষ্ট্র পরিবর্তন হতে পারে CUT এর একটি উদাহরণ এবং এটি D3 iff এর জন্য প্রাসঙ্গিক পরীক্ষা লক্ষ্য পৌঁছাতে পারে। একটি স্ট্যাটিক বিশ্লেষণ প্রয়োজন হয় প্রতিটি পরীক্ষার লক্ষ্যের জন্য প্রাসঙ্গিক পদ্ধতির সেট সনাক্ত করুন। পরীক্ষার তথ্য প্রজন্মের সমস্যা উপস্থাপনা OOP জন্য অ্যাকাউন্ট গ্রহণ করতে পুনর্গঠন করা আবশ্যক স্ট্যাটিক বিশ্লেষণ ফলাফল। আমরা D1, D2, এবং ঠিকানা সম্বোধনকারী অব্যবহৃত পরীক্ষা-ডেটা প্রজন্মের জন্য একটি অনুসন্ধান-ভিত্তিক পদ্ধতি প্রস্তাব করি থেকে D3। আমরা শাখা কভারেজ মানদণ্ড এবং জাভা উপর ফোকাস ভাষা, যদিও পদ্ধতির প্রসারিত করা যেতে পারে অন্যান্য কভারেজ মানদণ্ড এবং OOP ভাষা। D1 সমাধানের জন্য, আমরা যে বৈচিত্র্য অনুমান শ্রেণী তাত্ক্ষণিক যখন উত্স কোড থেকে নিষ্কাশিত ক্লাস এবং বীজতলা স্থির প্রয়োজনীয় উদাহরণ উল্লেখযোগ্যভাবে অনুসন্ধান আরাম করতে পারে। সুতরাং, আমাদের পদ্ধতির উপর ভিত্তি করে একটি কাস্টমাইজড ইনস্ট্যান্স জেনারেটর ব্যবহার করে তিনটি প্রধান উপাদান:
1) তাত্ক্ষণিক গতির জেনারেটর: এটি ক্লাসপথের বিদ্যমান বিভিন্ন উপায়ে তাত্পর্য খুঁজে বের করে এবং তৈরি করে। এটি ডি 1 এর অনুসন্ধান স্থানটিকে সাবসপেসে বিভক্ত করার জন্য দায়ী (যেমন সম্ভাব্য উদাহরণগুলির একটি সেট যা একই উপায়ে তাত্ক্ষণিকভাবে ব্যবহার করে তৈরি করা যেতে পারে) যেখানে প্রতিটি সাবসপেস একটি ভিন্ন মাধ্যমের মাধ্যমে উপস্থাপিত হয়
2) বৈচিত্র্য কৌশল: এটি প্রয়োজনীয় উৎপন্ন
বিভিন্ন উপায়ে তাত্ক্ষণিকভাবে ব্যবহার করে প্রদত্ত ক্লাসের উদাহরণ। একই পদ্ধতির পুনঃব্যবহারের সংখ্যাটি তার জটিলতার উপর নির্ভর করে। প্রস্তাবিত বৈচিত্র্য কৌশল একটি গণনা প্রতিনিধিত্বমূলক জটিলতার পরিমাপ প্রতিটি উপায়ে-তাত্ক্ষণিকতা। প্রাথমিকভাবে, এটি মনে করে যে কোন ক্লাসকে তাত্ক্ষণিক করার জন্য একটি ধ্রুবক জটিলতা প্রয়োজন এবং একটি তাত্ক্ষণিকভাবে তাত্ক্ষণিকতার জন্য তার আর্গুমেন্টগুলির মোট জটিলতার প্রয়োজন হয়, তারপর এটি গতিশীলতার প্রতিটি পদক্ষেপে এই পরিমাপকে গতিশীলভাবে সমন্বয় করে। এইভাবে, আমাদের পদ্ধতিটি কম সঙ্গে একটি উপায়-তাত্ক্ষণিকতা নির্বাচন করতে একটি সম্ভাব্য অ্যালগরিদম ব্যবহার করতে পারেন
একটি শ্রেণীর উত্পন্ন দৃষ্টান্ত বৈচিত্র্য আপোস ছাড়া জটিলতা।
0 comments:
Post a Comment