সফ্টওয়্যার পরীক্ষায় , অ্যাপগুলির নির্ভরযোগ্যতা এবং দৃঢ়তা নিশ্চিত করার জন্য পরীক্ষার কেসগুলির নকশা মৌলিক। কম্বিনেটরিয়াল টেস্ট ডিজাইন কৌশল, যেমন কে-ওয়ে টেস্টিং এবং পেয়ারওয়াইজ টেস্টিং, বিভিন্ন ইনপুট ভেরিয়েবলের মধ্যে মিথস্ক্রিয়া পরীক্ষা করা লক্ষ্য করে। যাইহোক, এটা স্পষ্ট হয়ে ওঠে যে চ্যালেঞ্জ এবং ত্রুটিগুলি সমালোচনামূলক ত্রুটিগুলি উন্মোচনের ক্ষেত্রে তাদের কার্যকারিতাকে বাধা দিতে পারে।
এই সংক্ষিপ্ত নিবন্ধটি নির্দিষ্ট সমস্যাগুলির উপর ফোকাস করে যা সম্মিলিত পরীক্ষার নকশার সময় সম্মুখীন হতে পারে, সেইসব সূক্ষ্মতাগুলি অন্বেষণ করে যা সতর্কতার সাথে বিবেচনার প্রয়োজন। আসুন ভুল ইনপুট মানগুলির উদাহরণ, শক্তিশালী ওরাকলের গুরুত্ব, প্রায়শই উপেক্ষা করা পরিবর্তনশীল সংমিশ্রণের তাৎপর্য এবং ভেরিয়েবলগুলি কীভাবে ইন্টারঅ্যাক্ট করে তার গুরুত্বপূর্ণ বোঝার বিষয়ে অনুসন্ধান করি।
একটি k-ওয়ে টেস্ট সেটে k ভেরিয়েবলের জন্য মানগুলির সমস্ত সম্ভাব্য সমন্বয় রয়েছে। উদাহরণস্বরূপ, Allpairs অ্যালগরিদম প্রয়োগ করলে একটি 2-উপায় পরীক্ষার ফলাফল পাওয়া যায়, যা পরিবর্তনশীল মানের জোড়ার সম্ভাব্য সকল সমন্বয়কে অন্তর্ভুক্ত করে। ফলস্বরূপ, k-ওয়ে ফল্ট বলতে k ভেরিয়েবলের মানের মিথস্ক্রিয়া থেকে সৃষ্ট একটি ত্রুটি বোঝায়। দুটি সিস্টেম পরীক্ষা করে, SYS1 এবং SYS2, তাদের উত্পাদন প্রকাশের পরে ত্রুটিগুলি প্রকাশ করেছে৷ উভয় সিস্টেমই 2, 3, 4, এবং 5+ এর k মান সহ k-ওয়ে টেস্টিং করেছে।
টেবিল দুটি সিস্টেমের জন্য k-ওয়ে পরীক্ষার ফলাফল প্রদর্শন করে।
ফল্ট টাইপ | SYS1 | SYS2 |
---|---|---|
২টি পথ | 30 | 29 |
3-পথ | 4 | 12 |
4-পথ | 7 | 1 |
> 4-পথ | 7 | 3 |
পাওয়া যায়নি | 34 | 43 |
প্রতিটি কে-ওয়ে সেটের জন্য অনুক্রমিক চেক পরিচালিত হয়েছিল। চিত্র 2.1 নির্দেশ করে যে দুটি বা তার কম ইনপুট ভেরিয়েবলের মিথস্ক্রিয়া থেকে উদ্ভূত ত্রুটিগুলি 29 in SYS1
এবং 30 in SYS2
ছিল৷ তিনটি ভেরিয়েবলের মিথস্ক্রিয়া থেকে ত্রুটিগুলি 4*(30+4) in SYS2
এবং 12*(29+12) in SYS1
। চারটি ভেরিয়েবল জড়িত ইন্টারঅ্যাকশনের জন্য, 7*(30+4+7) in SYS2
এবং 1*(29+12+1) in SYS1
। চারটির বেশি ভেরিয়েবলের সাথে মিথস্ক্রিয়া থেকে ত্রুটিগুলি 3*(29+12+1+3) in SYS1
এবং 7*(30+4+7+7) in SYS2
। উল্লেখযোগ্যভাবে, SYS1 এ 43টি ত্রুটি পাওয়া যায়নি এবং SYS2 এ 34টি ত্রুটি পাওয়া যায়নি।
এই উদাহরণে, সবচেয়ে উল্লেখযোগ্য ত্রুটিগুলি পাওয়া যায়নি বিভাগের অন্তর্গত। আরও তদন্তে দেখা গেছে যে অধিকাংশ অনাবিষ্কৃত ত্রুটি ছিল 1-ওয়ে ফল্ট, যার অর্থ একটি ভেরিয়েবলের একটি নির্দিষ্ট মান অন্য পরিবর্তনশীল মানের থেকে স্বাধীনভাবে ত্রুটির দিকে পরিচালিত করে। পেয়ারওয়াইজ টেস্টিং এই ত্রুটিগুলি সনাক্ত করা উচিত ছিল, কিন্তু কিছু কারণে, সেগুলি অনাবিষ্কৃত রয়ে গেছে। এই পাওয়া যায়নি ত্রুটিগুলি প্রাথমিকভাবে 1-পথের ত্রুটি যা অলক্ষিত হয়েছে কারণ কিছু ইনপুট মান নির্বাচন করা হয়নি বা ভুলভাবে বেছে নেওয়া হয়েছে৷
সমস্যাটির সারমর্ম এই যে অলপেয়ার অ্যালগরিদম প্রয়োগের আগে করা কোনো ত্রুটি অব্যাহত থাকবে। এটি বোঝায় যে যদি পূর্ববর্তী পরীক্ষার ডিজাইন কৌশলগুলি ভুলভাবে প্রয়োগ করা হয় বা ইনপুট মানগুলি ভুল ছিল, তবে অ্যালপেয়ার অ্যালগরিদম বা অর্থোগোনাল অ্যারে টেস্টিং ব্যবহার না করেই অ্যাপ্লিকেশনে ত্রুটিগুলি অব্যাহত থাকবে৷
একটি উদাহরণ হিসাবে, আসুন একটি অ্যাপ্লিকেশন মডিউল বিবেচনা করি যেখানে অনেকগুলি বিকল্প রয়েছে (যেটি এই ফর্মটির মতো দেখায়) এবং ফলস্বরূপ, প্রচুর পরিমাণে ইনপুট ডেটা সংমিশ্রণ।
মডিউলে, ধরা যাক 2^12 * 3
সম্ভাব্য কম্বিনেশন আছে। এখানে, চ্যালেঞ্জটি ভুল ইনপুট মান নির্বাচন করা নয়, কারণ সমস্ত সম্ভাব্য পরিবর্তনশীল মানগুলি অলপেয়ার অ্যালগরিদম ব্যবহার করে সম্পূর্ণভাবে পরীক্ষা করা যেতে পারে। যাইহোক, এটি কি সমস্ত গুরুতর ত্রুটিগুলি উন্মোচন করবে? প্রত্যাশিত ফলাফলের সমস্যার কারণে সম্ভবত না। এই ধরনের একটি সফ্টওয়্যার মডিউলে বিকল্পগুলির প্রতিটি সংমিশ্রণে হেরফের করার পরে, বিকল্পগুলি সঠিকভাবে কাজ করেছে এবং নির্বাচিত বিকল্পগুলি প্রয়োগ করার পরে অন্য কিছুই ভেঙে যায়নি তা যাচাই করার জন্য আপনাকে কিছু সময়ের জন্য সিস্টেমটি ব্যবহার করতে হবে। এই ক্ষেত্রে, কোন গ্যারান্টি নেই যে কোন সূক্ষ্ম, অ-স্পষ্ট সমস্যা সহজে মিস হবে না।
প্রতিটি পরীক্ষার পরে, একজনকে সিস্টেমের মূল ফাংশনগুলি পুঙ্খানুপুঙ্খভাবে মূল্যায়ন করতে হতে পারে। এখানে মূল বিষয় হল যে গুরুতর ত্রুটিগুলি প্রায়শই ততটা স্পষ্ট হয় না যতটা একজন তাদের হতে চায় এবং প্রত্যাশিত ফলাফলের জন্য সবকিছুর জন্য হিসাব করা কার্যত অসম্ভব হয়ে পড়ে।
2^12 * 3
সংমিশ্রণের মধ্যে (যেমন আমরা উপরের উদাহরণে প্রস্তাব করেছি), সম্ভবত মডিউল বিকল্পগুলির একটি সংমিশ্রণ রয়েছে যা অন্য সকলের তুলনায় অনেক বেশি ঘন ঘন ঘটবে - ডিফল্ট সেটিং। যদি 95% মানুষ এই মডিউলের জন্য ডিফল্ট সেটিংস থেকে বিকল্পগুলি পরিবর্তন না করে, তাহলে প্রায়/নিকট-ডিফল্ট বিকল্পগুলির ভাল কভারেজ হওয়া উচিত। একটি বিকল্পে ডিফল্ট কনফিগারেশন থেকে বিচ্যুতি সহ সমস্ত বৈচিত্র পরীক্ষা করার ফলে 2-সংখ্যার পরীক্ষা হবে। যদি ডিফল্ট থেকে দুটি সেটিংসে সম্ভাব্য বিচ্যুতি সহ বিকল্পগুলির সমস্ত সংমিশ্রণ পরীক্ষা করা হয়, তবে এটি প্রায় একশত পরীক্ষার ক্ষেত্রে হবে। ডিফল্ট বিকল্পের অস্তিত্ব উপেক্ষা করার চেয়ে এই টেস্ট কেস এবং সব-জোড়া টেস্ট কেসগুলির সাথে পরীক্ষা করলে ভাল ফলাফল পাওয়া যেতে পারে। যাইহোক, Allpairs অ্যালগরিদম পরীক্ষককে সবচেয়ে সম্ভাব্য এবং সাধারণত ব্যবহৃত পরিবর্তনশীল সমন্বয় উপেক্ষা করতে বাধ্য করে।
পেয়ারওয়াইজ টেস্টিংয়ের সফলতা বা ব্যর্থতার মূল কারণ হল ইনপুট ভেরিয়েবলের সংমিশ্রণ কীভাবে আউটপুট ডেটাকে প্রভাবিত করে তা বোঝার মধ্যে রয়েছে। দুটি ভিন্ন পরীক্ষিত অ্যাপ্লিকেশানে যুগলভাবে পরীক্ষা প্রয়োগ করা উল্লেখযোগ্যভাবে ভিন্ন ফলাফল দিতে পারে। কিছু অ্যাপ্লিকেশন আউটপুট ডেটা তৈরি করতে কম ইনপুট ডেটা ব্যবহার করে, অন্যরা বেশি ব্যবহার করে।
একটি উদাহরণ হিসাবে, প্রোগ্রামটি বিবেচনা করুন, যার তিনটি ইনপুট ভেরিয়েবল (X, Y, Z) এবং তিনটি সম্ভাব্য আউটপুট ডেটা (1, 2, 3) রয়েছে। তীরগুলি নির্দেশ করে যে কোন ভেরিয়েবলগুলি একটি নির্দিষ্ট ফলাফল তৈরি করতে ইন্টারঅ্যাক্ট করবে। 1 এর ফলাফল পেতে, ভেরিয়েবল Y এবং X অবশ্যই ইন্টারঅ্যাক্ট করতে হবে; 2 এর ফলাফল পেতে, Z এবং X ভেরিয়েবল অবশ্যই ইন্টারঅ্যাক্ট করতে হবে। এই অ্যাপ্লিকেশানের জন্য, পেয়ারওয়াইজ টেস্টিং প্রয়োগ করা একটি উপযুক্ত পছন্দ হবে এবং ইতিবাচক ফলাফলের সম্ভাবনা রয়েছে৷ যাইহোক, এমন পরিস্থিতিতে যেখানে আউটপুট ডেটা দুটির বেশি ইনপুট ভেরিয়েবলের মিথস্ক্রিয়া থেকে ফলাফল হয়, সেখানে একটি উচ্চ সম্ভাবনা রয়েছে যে জোড়ার ভিত্তিতে পরীক্ষা ত্রুটি সনাক্ত করতে ব্যর্থ হবে। সহজভাবে জোড়ার ভিত্তিতে পরীক্ষা প্রয়োগ করা পরীক্ষিত অ্যাপ্লিকেশনে গুরুতর ত্রুটিগুলি উপেক্ষা করার ঝুঁকি বাড়ায়।
একজন QA পেশাদার হিসাবে, এই সূক্ষ্মতা বোঝা গুরুত্বপূর্ণ। কিছু ক্ষেত্রে তাত্ত্বিক হলেও, এই অন্তর্দৃষ্টিগুলি আপনার অ্যাপগুলির নির্ভরযোগ্যতা এবং দৃঢ়তা নিশ্চিত করে, পৃষ্ঠের বাইরে চলে যাওয়া একটি সামগ্রিক পরীক্ষার পদ্ধতির প্রয়োজনীয়তার উপর জোর দেয়। কম্বিনেটরিয়াল টেস্ট ডিজাইনের জটিলতা বোঝা QA পেশাদারদের কার্যকরভাবে অ্যাপের জটিল ব্যবসায়িক যুক্তি পরীক্ষা করতে এবং তাদের ব্যবহারকারীদের কাছে উচ্চ-মানের সফ্টওয়্যার সরবরাহ করতে দেয়।