আমি এখানে সুপরিচিত এবং বহুল ব্যবহৃত টেস্ট ডিজাইন কৌশল যেমন ইকুইভালেন্স ক্লাস, বাউন্ডারি ভ্যালু টেস্টিং এবং পেয়ারওয়াইজ টেস্টিং নিয়ে আলোচনা করা বাদ দেব, আমি অন্যান্য, কম সাধারণ কৌশল নিয়ে আলোচনা করব। আপনি কম্বিনেটরিয়াল টেস্ট ডিজাইন কৌশলগুলির সমস্যা সম্পর্কে আমার নিবন্ধটিও পড়তে পারেন।
ডিসিশন টেবিল টেস্টিং
ডিসিশন টেবিলগুলি প্রয়োজনীয়তা নথিভুক্ত করার জন্য এবং একটি অ্যাপ্লিকেশনের কার্যকারিতা বর্ণনা করার জন্য একটি চমৎকার হাতিয়ার। এই টেবিলগুলি অ্যাপ্লিকেশনটির ব্যবসায়িক যুক্তি বর্ণনা করার জন্য খুব সুবিধাজনক, এবং তা ছাড়াও, তারা পরীক্ষার কেস তৈরির জন্য একটি শক্ত ভিত্তি হিসাবে কাজ করতে পারে। যদি পরীক্ষিত অ্যাপ্লিকেশনটিতে যথাযথ ডকুমেন্টেশনের অভাব থাকে, তবে সিদ্ধান্ত টেবিলগুলি ব্যবহার করার এটি একটি ভাল কারণ। একটি কম্প্যাক্ট এবং সহজ আকারে প্রয়োজনীয়তা উপস্থাপন করা এটিকে পরীক্ষার ক্ষেত্রে তৈরি করা বেশ সহজ করে তোলে।
পদ্ধতি:
ডিসিশন টেবিলগুলি সিস্টেম স্টেটের সত্তা (বৈশিষ্ট্য/শর্ত) এর উপর ভিত্তি করে আবেদনের যুক্তি বর্ণনা করে। প্রতিটি সিদ্ধান্তের সারণী শুধুমাত্র সিস্টেমের একটি অবস্থা বর্ণনা করা উচিত।
| নিয়ম 1 | নিয়ম 2 | … | নিয়ম এন |
---|---|---|---|---|
সত্তা | | | | |
সম্পত্তি 1 | | | | |
… | | | | |
সম্পত্তি এম | | | | |
কর্ম | | | | |
কর্ম ঘ | | | | |
… | | | | |
অ্যাকশন পি | | | | |
1 থেকে M পর্যন্ত সত্তা (সম্পত্তি) সিস্টেমের বিভিন্ন বৈশিষ্ট্য উপস্থাপন করে; এগুলি টেবিলে ইনপুট ডেটা হিসাবে উপস্থাপন করা হয় যা সিস্টেমে প্রবেশ করা যেতে পারে। 1 থেকে P পর্যন্ত ক্রিয়াগুলি এমন ক্রিয়া যা সত্তার নির্দিষ্ট সংমিশ্রণে ঘটতে পারে। সত্তার সমস্ত ইনপুট ডেটার সংমিশ্রণের উপর নির্ভর করে, ক্রিয়াগুলি প্রয়োজনীয় মানগুলি গ্রহণ করে। প্রতিটি নিয়ম নির্দিষ্ট ক্রিয়া সম্পাদনের দিকে পরিচালিত করে এমন সমস্ত বৈশিষ্ট্যের জন্য ইনপুট ডেটার একটি অনন্য সেট সংজ্ঞায়িত করে।
সিদ্ধান্ত সারণী রচনা করার পর, সাধারনত সারণিটিকে সরলীকরণ করা সম্ভব, উদাহরণস্বরূপ, কিছু বা সমস্ত অসম্ভব পরিস্থিতিকে সরিয়ে দিয়ে। তারপরে, টেবিলটি পরীক্ষার ক্ষেত্রে রূপান্তরিত হতে পারে।
স্টেট-ট্রানজিশন টেস্টিং
স্টেট-ট্রানজিশন টেস্টিং, যেমন ডিসিশন টেবিল টেস্টিং, প্রয়োজনীয়তা নথিভুক্ত করার জন্য এবং একটি সিস্টেমের গঠন ও নকশা বর্ণনা করার জন্য একটি মূল্যবান হাতিয়ার। ডিসিশন টেবিল টেস্টিং-এর বিপরীতে, যা একটি নির্দিষ্ট সিস্টেমের অবস্থা বর্ণনা করে, স্টেট-ট্রানজিশন টেস্টিং বর্ণনা করে যে কীভাবে সিস্টেমের এই অবস্থাগুলি পরিবর্তন হতে পারে। ডায়াগ্রামগুলি অ্যাপ্লিকেশনটির অপারেশন চলাকালীন ঘটে যাওয়া সমস্ত ইভেন্টগুলিকে সংজ্ঞায়িত করে এবং কীভাবে অ্যাপ্লিকেশনটি এই ইভেন্টগুলিতে প্রতিক্রিয়া জানায়৷
পদ্ধতি:
এই কৌশলটির দুটি ধরণের ভিজ্যুয়াল উপস্থাপনা রয়েছে:
- স্টেট-ট্রানজিশন ডায়াগ্রাম
- স্টেট-ট্রানজিশন টেবিল
স্টেট-ট্রানজিশন ডায়াগ্রাম
একটি উদাহরণ হিসাবে, আসুন এয়ারলাইন টিকিটের রিজার্ভেশন বিবেচনা করা যাক। এটি মোটামুটিভাবে কাজ করে: প্রাথমিকভাবে, গ্রাহকরা এয়ারলাইনকে রিজার্ভেশনের তথ্য প্রদান করে - প্রস্থানের অবস্থান, গন্তব্য, তারিখ এবং প্রস্থানের সময়। একজন এয়ারলাইন কর্মচারী গ্রাহক এবং টিকিট রিজার্ভেশন সিস্টেমের মধ্যে ইন্টারফেস হিসেবে কাজ করে, গ্রাহকের দেওয়া তথ্য ব্যবহার করে রিজার্ভেশন তৈরি করে। এর পরে, গ্রাহকের সংরক্ষণ "তৈরি" অবস্থায় রয়েছে। অতিরিক্তভাবে, রিজার্ভেশন তৈরি করার পরে, সিস্টেমটি একটি টাইমার শুরু করে। যখন টাইমারের মেয়াদ শেষ হয়ে যায়, এবং সংরক্ষিত টিকিটের জন্য অর্থ প্রদান করা হয় না, সিস্টেমটি সেই টিকিটের জন্য সংরক্ষণ বাতিল করে।
বৃত্তটি এয়ারলাইন টিকিট রিজার্ভেশন সিস্টেম, "তৈরি" রাষ্ট্রের প্রতিনিধিত্ব করে। তীরটি "তৈরি" অবস্থায় একটি রূপান্তর নির্দেশ করে। তীর ("get_info") নীচের বিবরণটি সিস্টেমের বাইরে থেকে উদ্ভূত একটি ইভেন্ট। তীরের নীচের বর্ণনার কমান্ডটি ("/" এর পরে) নির্দেশ করে যে সিস্টেমটি ইভেন্টের প্রতিক্রিয়া হিসাবে কিছু ক্রিয়া সম্পাদন করেছে - এই ক্ষেত্রে, একটি টাইমার শুরু করা। কালো বৃত্ত ডায়াগ্রামের শুরু/প্রবেশ বিন্দু নির্দেশ করে।
যদি টাইমার মেয়াদ শেষ না হয়, এবং আমরা সংরক্ষিত টিকিটের জন্য অর্থ প্রদান করেছি, সিস্টেমটি "প্রদেয়" অবস্থায় প্রবেশ করে। এটি "payMoney" লেবেলযুক্ত তীর এবং "তৈরি" অবস্থা থেকে "প্রদান" অবস্থায় রূপান্তর দ্বারা চিত্রিত হয়েছে।
- স্টেট (ডায়াগ্রামে একটি বৃত্ত হিসাবে উপস্থাপিত) : এটি সিস্টেমের অবস্থা যেখানে এটি এক বা একাধিক ইভেন্টের জন্য অপেক্ষা করে। রাজ্য এখন পর্যন্ত প্রাপ্ত ইনপুট ডেটা মনে রাখে এবং সিস্টেমটি প্রাপ্ত ইভেন্টগুলিতে কীভাবে প্রতিক্রিয়া দেখাবে তা নির্দেশ করে। ইভেন্টগুলি অ্যাকশনগুলিকে ট্রিগার করতে পারে এবং/অথবা রাষ্ট্রের পরিবর্তনের দিকে নিয়ে যেতে পারে।
- ট্রানজিশন (একটি তীর হিসাবে চিত্রে উপস্থাপিত) : এটি একটি ইভেন্টের কারণে ঘটে যাওয়া এক অবস্থা থেকে অন্য অবস্থার রূপান্তরকে প্রতিনিধিত্ব করে।
- ইভেন্ট (তীরের উপরে একটি আয়তক্ষেত্র হিসাবে উপস্থাপিত) : একটি ঘটনা এমন কিছু যা অ্যাপ্লিকেশনটিকে তার অবস্থা পরিবর্তন করে। ইভেন্টগুলি অ্যাপ্লিকেশনের বাইরে থেকে আসতে পারে, যেমন অ্যাপ্লিকেশনের ব্যবহারকারী ইন্টারফেসের মাধ্যমে। একই সাথে, অ্যাপ্লিকেশন নিজেই ইভেন্ট তৈরি করতে পারে, উদাহরণস্বরূপ, একটি ইভেন্ট যেমন "টাইমার মেয়াদ শেষ হয়ে গেছে।" একটি ঘটনা ঘটলে, অ্যাপ্লিকেশনটি একই অবস্থায় থাকতে পারে, অবস্থা পরিবর্তন করতে পারে বা একটি ক্রিয়া সম্পাদন করতে পারে। ইভেন্টের পরামিতি থাকতে পারে; উদাহরণস্বরূপ, "pay_money" ইভেন্টের প্যারামিটার থাকতে পারে যেমন "নগদ," "চেক," "ডেবিটকার্ড," বা "ক্রেডিটকার্ড।"
- অ্যাকশন (ট্রানজিশনের উপরে লেবেলে "/" এর পরে উপস্থাপিত) : এটি রাষ্ট্রের পরিবর্তনের মাধ্যমে শুরু করা একটি ক্রিয়া। এটি "প্রিন্ট টিকিট", "স্ক্রীনে প্রদর্শন" ইত্যাদির মতো ক্রিয়া হতে পারে৷ সাধারণত, অ্যাকশনগুলি আউটপুট তৈরি করে যা সিস্টেমের আউটপুট ডেটা হিসাবে কাজ করে৷ ট্রানজিশনের সময় ক্রিয়া ঘটে; রাজ্যগুলি নিজেরাই নিষ্ক্রিয়।
- এন্ট্রি পয়েন্টটি ডায়াগ্রামে একটি কালো বিন্দু হিসাবে দেখানো হয়েছে।
- প্রস্থান বিন্দু একটি "বুলসি" প্রতীক হিসাবে ডায়াগ্রামে দেখানো হয়েছে।
স্টেট-ট্রানজিশন টেবিল
স্টেট-ট্রানজিশন টেবিল হল চারটি কলাম নিয়ে গঠিত টেবিল: বর্তমান অবস্থা, ইভেন্ট, অ্যাকশন এবং পরবর্তী অবস্থা।
স্টেট-ট্রানজিশন টেবিলের সুবিধা হল যে তারা সমস্ত সম্ভাব্য স্টেট-ট্রানজিশন পরিস্থিতি সংজ্ঞায়িত করে, শুধু সঠিক নয়। অতএব, রাষ্ট্র-পরিবর্তন সারণীগুলি প্রায়ই অনির্ধারিত, অপ্রমাণিত রাষ্ট্র-পরিবর্তন সংমিশ্রণগুলির আবিষ্কারের দিকে পরিচালিত করে, যা কোড লেখার আগে সনাক্ত করা ভাল।
- স্টেট-ট্রানজিশন ডায়াগ্রাম সহজেই টেস্ট কেস তৈরির জন্য ব্যবহার করা যেতে পারে। পরীক্ষার ক্ষেত্রে একটি সেট তৈরি করা প্রয়োজন যা অন্তত একবার সমস্ত ট্রানজিশন কভার করবে।
- স্টেট-ট্রানজিশন টেবিল থেকে, টেস্ট কেস তৈরি করাও তুলনামূলকভাবে সহজ। একজনকে সমস্ত বৈধ সংমিশ্রণের মধ্য দিয়ে যেতে হবে (যদি সময় অনুমতি দেয় বা ঝুঁকি নিষেধ না করে, তবে সমস্ত অবৈধ সংমিশ্রণের মাধ্যমেও যাওয়া সম্ভব)।
অর্থোগোনাল অ্যারে
"1" এবং "2" মানের জোড়ার জন্য কয়টি সমন্বয় বিদ্যমান? {1,1}, {1,2}, {2,1}, এবং {2,2}৷ একটি অর্থোগোনাল অ্যারে হল একটি বিশেষ বৈশিষ্ট্য সহ একটি দ্বি-মাত্রিক অ্যারে - অ্যারের যে কোনও দুটি কলামে, সেই কলামগুলিতে মানগুলির সমস্ত সমন্বয় উপস্থিত থাকে। অর্থাৎ, আপনি যদি অর্থোগোনাল অ্যারে থেকে যেকোনো দুটি কলাম নেন, যেখানে মান শুধুমাত্র "1" বা "2" হতে পারে, আপনি সেই কলামগুলির জন্য নিম্নলিখিত সারিগুলি পাবেন - {1,1}, {1,2}, { 2,1}, এবং {2,2}।
একটি উদাহরণ হিসাবে, তিনটি ইনপুট পরামিতি সহ একটি সিস্টেম বিবেচনা করুন, যার প্রতিটি বাইনারি (অর্থাৎ, "1" বা "2" মান নেয়)।
সারি | পরিবর্তনশীল 1 | পরিবর্তনশীল 2 | পরিবর্তনশীল 3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 1 | 2 | 1 |
4 | 1 | 1 | 2 |
5 | 2 | 2 | 1 |
6 | 1 | 2 | 2 |
7 | 2 | 1 | 2 |
8 | 2 | 2 | 2 |
অর্থোগোনাল অ্যারেকে - L_4(2^3) হিসাবে উপস্থাপন করা হয়, যেখানে L_4 নির্দেশ করে যে অর্থোগোনাল অ্যারের চারটি সারি রয়েছে এবং (2^3) নির্দেশ করে যে অ্যারের তিনটি কলাম রয়েছে, যার মান "1" বা "2" হতে পারে "
সারি | পরিবর্তনশীল 1 | পরিবর্তনশীল 2 | পরিবর্তনশীল 3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
L_4, যেখানে 4 হল সারির সংখ্যা
2^3, যেখানে 2 হল সর্বোচ্চ মান (== 2, 3, …, N) এবং 3 হল কলামের সংখ্যা
অর্থোগোনাল অ্যারে - নিম্নলিখিত বৈশিষ্ট্য সহ একটি দ্বি-মাত্রিক অ্যারে: অ্যারের যেকোনো দুটি কলাম চয়ন করুন এবং আপনি সেই কলামগুলিতে মানগুলির সমস্ত সমন্বয় পাবেন।
অর্থোগোনাল অ্যারে ব্যবহার করে:
- ভেরিয়েবল সনাক্ত করুন (ইনপুট ডেটার সংখ্যা)। ইনপুট ডেটা নির্বাচন করা প্রয়োজন, মানগুলির যেকোন সমন্বয় যা যৌক্তিকভাবে বিদ্যমান থাকতে পারে।
- প্রতিটি ভেরিয়েবল কতগুলি মান নিতে পারে তা নির্ধারণ করুন। মানের সংখ্যা নির্ধারণ করার সময়, অন্যান্য পরীক্ষার নকশা কৌশলগুলি ইতিমধ্যেই মানগুলির সংখ্যা কমাতে প্রয়োগ করা উচিত ছিল (যেমন, সীমানা মান, সমতুল্য শ্রেণী, এবং অন্য কোন)।
- একটি অর্থোগোনাল অ্যারে নির্ধারণ করুন যেখানে প্রতিটি ভেরিয়েবলের জন্য একটি কলাম থাকবে (অর্থোগোনাল অ্যারের কলামে ভেরিয়েবলের মতো অনেকগুলি মান বিকল্প রয়েছে)।
- অর্থোগোনাল অ্যারেতে পরীক্ষার কাজটি প্রজেক্ট করুন।
- টেস্ট কেস লিখুন।
AllPairs অ্যালগরিদম
AllPairs অ্যালগরিদমের সারমর্ম হল যে সমস্ত ভেরিয়েবলের জন্য মানগুলির সমস্ত সমন্বয় পরীক্ষা করার প্রয়োজন নেই। পরিবর্তে, এটি ভেরিয়েবলের প্রতিটি জোড়ার জন্য মানগুলির সমস্ত সমন্বয় পরীক্ষা করার উপর দৃষ্টি নিবদ্ধ করে।
একজন QA পেশাদার হিসাবে, এই সূক্ষ্মতা বোঝা গুরুত্বপূর্ণ। কিছু ক্ষেত্রে তাত্ত্বিক হলেও, সমন্বিত পরীক্ষার নকশা কৌশলগুলির জটিলতা বোঝা QA পেশাদারদের কার্যকরভাবে অ্যাপগুলির জটিল ব্যবসায়িক যুক্তি পরীক্ষা করতে এবং তাদের ব্যবহারকারীদের কাছে উচ্চ-মানের সফ্টওয়্যার সরবরাহ করতে দেয়।