নতুন পরীক্ষার নকশা পদ্ধতি সবসময় একই সাথে আবির্ভূত হয় না। আধুনিক পরীক্ষামূলক অনুশীলনের একটি উল্লেখযোগ্য অংশ গাণিতিক মডেলগুলিকে অভিযোজিত করার জন্য সূক্ষ্ম তাত্ত্বিক এবং পরীক্ষামূলক কাজের মাধ্যমে বিকশিত হয়েছে। যদিও একজন ভালো পরীক্ষক হওয়ার জন্য একজন গণিতবিদ হওয়ার প্রয়োজন নেই, তবে পরীক্ষার পদ্ধতির পিছনে তাত্ত্বিক ভিত্তি বোঝা উপকারী হতে পারে।
একটি সিস্টেমের জন্য কোড কভারেজ অপ্টিমাইজ করতে গাণিতিক যুক্তি প্রয়োগ করা যেতে পারে। দুটি শাখা এবং শর্তে একটি দীর্ঘ লজিক্যাল সূত্র সম্বলিত একটি "if" বিবৃতি সহ একটি সাধারণ উদাহরণ বিবেচনা করা যাক:
if ( (& a2) & (!(a2 || a4) ) || a3 ) { # action 1 } else { # action 2 }
উভয় শাখা কভার করার জন্য, সূত্রের গঠন বোঝা প্রয়োজন। কেউ ভাবতে পারে, কী করা যায়? আপনি সর্বদা এই কোডের অংশটি (যৌক্তিক সূত্র) সম্পূর্ণভাবে পরীক্ষা করতে পারেন, যার ফলে 16টি পরীক্ষা হয়। যাইহোক, এটি অনেক বেশি, এবং পরীক্ষার সংখ্যা কমানোর চেষ্টা করা উচিত। পরিবর্তিত কন্ডিশন/ডিসিশন কভারেজ (MC/DC) পদ্ধতি ব্যবহার করে পরীক্ষার সংখ্যা কমানো যেতে পারে (11-12টি পরীক্ষা দেয়)। ঝুঁকি পরীক্ষা করার জন্য শাখা কভারেজ যথেষ্ট হলে, শুধুমাত্র দুটি পরীক্ষা প্রয়োজন, কিন্তু কোনটি তা স্পষ্ট নয়।
এই সমস্যা সমাধানের জন্য, বুলিয়ান বীজগণিত যৌক্তিক সূত্রে প্রয়োগ করা যেতে পারে:
if( (& a2) & (! (a2 || a4) ) || a3 ) = = ( (& a2) & ( (!a2 || !a4) ) || a3 ) = = ( a1 & a2 & !a2 & !a4 || a3 ) = = 0 || a3 = a3
মূল সূত্রটি রূপান্তরিত করার পরে, এটি স্পষ্ট হয়ে ওঠে যে শুধুমাত্র একটি পরিবর্তনশীল a3
প্রকৃতপক্ষে সত্য মানকে প্রভাবিত করে। ফলস্বরূপ, পরীক্ষার ক্ষেত্রে প্রাপ্তি আরও সহজ হয়ে যায় (একটি সহ এবং অন্যটি a3 == false
)। অধিকন্তু, এটি স্পষ্ট হয়ে ওঠে যে কোডটি অপ্টিমাইজ করা হয়নি, কারণ এটি শুধুমাত্র একটি পরিবর্তনশীলের উপর নির্ভর করে একটি জটিল যৌক্তিক অভিব্যক্তি থাকা অদ্ভুত। দুর্ভাগ্যবশত, এই ধরনের পরিস্থিতি বাস্তবে বেশ সাধারণ, এবং প্রদত্ত উদাহরণ তুলনামূলকভাবে সহজবোধ্য।
উপসংহারে:
2 পরীক্ষা যদি সম্পূর্ণ পরীক্ষা ব্যবহার করা হয়
MC/DC পদ্ধতিতে ২টি পরীক্ষা
শাখা কভারেজ প্রয়োগ করা হলে 2 পরীক্ষা
সাধারণভাবে, বীজগণিত, গাণিতিক পদ্ধতি এবং অ্যালগরিদম ব্যবহার করে লজিক্যাল এক্সপ্রেশনগুলিকে সরলীকৃত (নিম্ন করা) করা যেতে পারে। অন্তত তিনটি অনুরূপ পদ্ধতি আছে। বুলিয়ান বীজগণিত ব্যবহার করে সরাসরি রূপান্তর, যেমন উপরে ব্যাখ্যা করা হয়েছে, সবসময় কাজ করে। এক্সপ্রেশন মিনিমাইজেশনের পদ্ধতিগুলি যেগুলি শুধুমাত্র গণিত এবং যুক্তির উপর নির্ভর করে না বরং ডোমেনের বিশেষত্বের উপর নির্ভর করে নির্দিষ্ট ডোমেনের বৈশিষ্ট্যগুলিকে বিবেচনা করে, খুঁজে পাওয়া এবং প্রয়োগ করা যেতে পারে।
পেয়ারওয়াইজ টেস্টিং পদ্ধতিতে এমনভাবে টেস্ট সেট তৈরি করা জড়িত যাতে সম্পূর্ণ পরীক্ষার মাধ্যমে ইনপুট প্যারামিটারের সম্ভাব্য সমস্ত সংমিশ্রণ পরীক্ষা করার পরিবর্তে (যা সময়সাপেক্ষ এবং সংস্থান-নিবিড় হতে পারে), পরীক্ষার সেটগুলি এমনভাবে ডিজাইন করা হয়েছে যাতে প্রতিটি প্যারামিটার মান প্রতিটি প্যারামিটারের সাথে একত্রিত হয়। অন্য পরীক্ষিত প্যারামিটারের মান অন্তত একবার। এটি উল্লেখযোগ্যভাবে পরীক্ষার ক্ষেত্রে সংখ্যা হ্রাস করে।
এটি একটি সুপ্রতিষ্ঠিত এবং প্রায়শই ব্যবহৃত পদ্ধতি। যাইহোক, দুর্ভাগ্যবশত, এই পদ্ধতি সবসময় কাজ করে না কারণ সিস্টেমগুলি আরও জটিল হয়ে ওঠে। প্রশ্ন উঠেছে: অসংখ্য ইনপুট পরামিতি সহ একটি জটিল সিস্টেমকে পুঙ্খানুপুঙ্খভাবে পরীক্ষা করার জন্য যুগলভিত্তিক পরীক্ষা কি যথেষ্ট? এই প্রশ্নটি মার্কিন যুক্তরাষ্ট্রের ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ডস অ্যান্ড টেকনোলজি (এনআইএসটি) সহ অনেক পরীক্ষার পেশাদার এবং গবেষকদের কৌতূহলী করেছে।
Pairwise finds 65-97% of errors
3-way finds 89-99% of errors
4-way finds 96-100% of errors
5-way finds 96-100% of errors
6-way finds 100% of errors
সমীক্ষা অনুসারে, জুটিবদ্ধ পরীক্ষায় 65-97% ক্ষেত্রে ত্রুটি পাওয়া যায়। যদি আমরা প্যারামিটারের জোড়া নয় বরং ত্রিগুণ বা চতুর্গুণকে একত্রিত করা শুরু করি, যেমন, কে-ওয়ে টেস্টিং ব্যবহার করে, আমরা আরও বেশি সংখ্যক পরীক্ষা পাব কিন্তু আরও ত্রুটিও ধরব।
উদাহরণ স্বরূপ, ধরুন একটি সিস্টেমে তিনটি মান সহ দুটি প্যারামিটার রয়েছে এবং প্রতিটিতে দুটি মান সহ তিনটি পরামিতি রয়েছে:
Pairwise: 10 tests with 14% coverage
3-way: 18 tests with 25% coverage
4-way: 36 tests with 50% coverage
5-way: 72 tests with 100% coverage
আপনি পরীক্ষার কভারেজের একটি সন্তোষজনক স্তর এবং একটি গ্রহণযোগ্য সংখ্যক পরীক্ষার ক্ষেত্রে বেছে নিতে পারেন।
পেয়ারওয়াইজের ভিত্তি হল অর্থোগোনাল অ্যারে যাতে এন-টুপল (জোড়া, তিনগুণ, চতুর্গুণ, ...) মানের সমান গুণ থাকে।
পেয়ারওয়াইজ এবং কে-ওয়ে পরীক্ষার জন্য সাধারণ ভিত্তি হল OA(N, V^k, t)
, যেখানে:
N হল সারির সংখ্যা
k হল কলামের সংখ্যা
V হল একটি কলামে বিভিন্ন মানের সংখ্যা
t হল শক্তি (t=2 জোড়ায়)
OA-তে, t কলামের প্রতিটি সেটে সমস্ত t টিপল সমান সংখ্যক বার অন্তর্ভুক্ত থাকে।
অর্থোগোনাল ম্যাট্রিক্সের পরিবর্তে, কভারিং ম্যাট্রিক্স ব্যবহার করা ভাল। এই ম্যাট্রিক্সগুলি অর্থোগোনালগুলির থেকে আলাদা যে প্রতিটি মানের সেট অন্তত একবার ঘটে, "একটি সমান সংখ্যক বার" নয়। এই ক্ষেত্রে, সামান্য কম পরীক্ষা আছে। ম্যাট্রিক্স কভার করার সাথে ভুল পরীক্ষার ক্ষেত্রে দেখা দিতে পারে, তবে সামগ্রিকভাবে, পরীক্ষার প্রক্রিয়াটি অনেক দ্রুত। এইভাবে, পরীক্ষার প্রক্রিয়া উল্লেখযোগ্যভাবে সরলীকৃত হয়।
CA(N, V^k, t), যেখানে:
CA-তে, t কলামের প্রতিটি সেটে অন্তত একবার সমস্ত t tuples অন্তর্ভুক্ত থাকে। কভারিং ম্যাট্রিক্স ব্যবহার করে পরীক্ষার সংখ্যা উল্লেখযোগ্যভাবে বৃদ্ধি না করে পেয়ারওয়াইজ থেকে কে-ওয়ে টেস্টিং-এ যাওয়ার অনুমতি দেয়।
সাধারণত (প্রায় সবসময়), একটি সিস্টেমে দুটির বেশি অবস্থা থাকে: "কাজ করছে" এবং "কাজ করছে না।" স্টক অর্ডার আছে যে রাজ্যের একটি অংশ বিবেচনা করা যাক. লেনদেন সম্পন্ন করার জন্য স্টক কেনা বা বিক্রি করার আদেশ অবশ্যই রাজ্যের একটি সিরিজের মধ্য দিয়ে যেতে হবে। প্রথমে, অর্ডার তৈরি করা হয়, তারপর এটি এক্সচেঞ্জ দ্বারা নিশ্চিত করা হয়, তারপরে অসংখ্য ছোট ক্রয় লেনদেন হয় এবং অবশেষে, প্রয়োজনীয় পরিমাণ স্টক কেনা বা বিক্রি করা হয়। একটি স্টক অর্ডারের সমস্ত অবস্থা ট্রেডিং সিস্টেমে প্রতিফলিত হয়, এবং অবশ্যই সমস্ত ট্রানজিশন এবং রাজ্যগুলি অবশ্যই পরীক্ষা করা উচিত।
প্রায় সবসময়, হয় সমস্ত রাজ্য বা সমস্ত রূপান্তর পরীক্ষা করা হয়, তবে প্রায়শই নয়, উভয়ই যাচাই করা হয়। সম্পূর্ণ কভারেজ অর্জনযোগ্য তবে সময়সাপেক্ষ, ব্যয়বহুল এবং সম্পদ-নিবিড় হবে।
আসুন ট্রাভেলিং সেলসম্যান (কমি ভয়েজার) সমস্যা এবং ডি ব্রুইজন অ্যালগরিদম বিবেচনা করি। এটি বোঝার জন্য যথেষ্ট যে অ্যালগরিদমটি একটি সর্বোত্তম বা পর্যাপ্ত পরিমাণে সংক্ষিপ্ত পথের একটি সর্বোত্তম সেট পেতে দেয় যা একটি গ্রাফে এটিকে সম্পূর্ণভাবে আচ্ছাদন করার জন্য অতিক্রম করা যেতে পারে (কঠোরভাবে বলতে গেলে, অনুরূপ কিছু সম্পন্ন করে এমন অন্য কোনো অ্যালগরিদম ব্যবহার করা যেতে পারে, বা কেউ একটি উদ্ভাবন করতে পারে। কাস্টম অ্যালগরিদম)।
পরিস্থিতি বিশ্লেষণ করতে নিম্নলিখিত উদাহরণ বিবেচনা করা যাক:
তিনজন পরীক্ষক রয়েছেন। প্রথমটি প্রথম পরীক্ষা, দ্বিতীয়টি দ্বিতীয়টি, তৃতীয়টি তৃতীয়টি পরীক্ষা করবে। প্রথম দুটি প্রথম দুটি পরীক্ষা বেশ দ্রুত সম্পন্ন করবে কারণ পথগুলি ছোট (তৃতীয়টির তুলনায়, প্রথম দুটি পথ ছোট হওয়ায়), তবে শেষটি খুব দীর্ঘ সময় নেবে (তৃতীয় পথটি খুবই দীর্ঘ)।
যদি ডি ব্রুইজন অ্যালগরিদম প্রয়োগ করা হয়, তৃতীয় ক্রমটিকে কয়েকটি ছোট ক্রমগুলিতে "কাট" করা যেতে পারে এবং সমস্ত পরীক্ষার সম্পাদন দক্ষতার সাথে সমান্তরাল করা যেতে পারে।
আমরা আরও পরীক্ষা দিয়ে শেষ করতে পারি, কিন্তু সমান্তরাল সম্পাদনের ক্ষেত্রে, পরীক্ষা অনেক দ্রুত শেষ হবে কারণ পরীক্ষাগুলি ছোট।
অধিকন্তু, আরও পরীক্ষার সাথে, তাদের মৃত্যুদন্ড কার্যকর করার ক্ষেত্রে আরও নমনীয়তা রয়েছে। সমস্ত পরীক্ষা একযোগে চালানো যেতে পারে, অথবা আগ্রহহীন এবং কম গুরুত্বপূর্ণ পরীক্ষাগুলি সরানো যেতে পারে। সিস্টেমের সবচেয়ে গুরুত্বপূর্ণ অবস্থার মধ্য দিয়ে পাস করা পরীক্ষাগুলিতে উচ্চ অগ্রাধিকারগুলি বরাদ্দ করা যেতে পারে। অ্যালগরিদমের ফলাফল লাভ করার অনেক উপায় আছে।
একটি প্লাস হিসাবে, অ্যালগরিদম ডোমেন-নির্দিষ্ট জিনিস ব্যবহার করে না; এটি একেবারে বিমূর্ত অবস্থা এবং সিস্টেমের রূপান্তরের সাথে কাজ করে।
এই কৌশলটিতে, অ্যালগরিদম কীভাবে ব্যবহার করা হয় তার উপর অনেক কিছু নির্ভর করে। সবচেয়ে চরম ক্ষেত্রে, পরীক্ষকরা রাজ্যগুলির মধ্যে পরিবর্তনের পিছনে যুক্তি সম্পর্কে কিছুই জানেন না। এই ধরনের পরিস্থিতিতে, রাষ্ট্রীয় রূপান্তরের দীর্ঘ শৃঙ্খলকে অ্যালগরিদম দ্বারা কয়েকটি সংক্ষিপ্ত আকারে "কাটা" করা হবে। এই চেইনগুলির মধ্যে কিছু অর্থহীন হতে পারে। অতএব, প্রাপ্ত চেইনগুলিকে যুক্তিসঙ্গততার জন্য মূল্যায়ন করা দরকার এবং যেগুলি পরীক্ষার জন্য গুরুত্বপূর্ণ এবং অর্থবহ। অর্থহীন এবং গুরুত্বহীন, কিন্তু সিস্টেমের অবস্থার পরিবর্তনের সম্ভাব্য পথগুলি সিস্টেমের কোন অংশে পরিবর্তনের প্রয়োজন তা বোঝার ব্যবস্থা করতে পারে এবং কোন অংশটি ঠিক তা স্পষ্ট হবে।
মূল সিদ্ধান্তগুলি নিম্নরূপ বিবেচনা করা যেতে পারে:
ছোটখাট ত্রুটিগুলির জন্য, এটি লক্ষণীয়:
একজন QA পেশাদার হিসাবে, এই সূক্ষ্মতা বোঝা গুরুত্বপূর্ণ। কিছু ক্ষেত্রে তাত্ত্বিক হলেও, সমন্বিত পরীক্ষার নকশা কৌশলগুলির জটিলতা বোঝা QA পেশাদারদের কার্যকরভাবে অ্যাপগুলির জটিল ব্যবসায়িক যুক্তি পরীক্ষা করতে এবং তাদের ব্যবহারকারীদের কাছে উচ্চ-মানের সফ্টওয়্যার সরবরাহ করতে দেয়।