ইউনিট
1. সফ্টওয়্যার টেস্টিং এবং QA-এ কৃত্রিম বুদ্ধিমত্তার ভূমিকা: ভূমিকা, সীমানা, নকল ঝুঁকি এবং বৈধতা 2. পরীক্ষার দৃশ্য এবং টেস্ট কেস জেনারেশন: প্রয়োজনীয়তা থেকে ব্যাপক নিয়ন্ত্রণ পর্যন্ত 3. অনুসন্ধানমূলক পরীক্ষা এবং পরীক্ষা আইডিয়া জেনারেশন: এআই সহ ক্রিয়েটিভ বাগ হান্টিং 4. UI টেস্ট অটোমেশন: AI দিয়ে সেলেনিয়াম, নাট্যকার এবং সাইপ্রেস কোড তৈরি করা 5. এপিআই টেস্ট অটোমেশন: এআই-এর সাথে চুক্তি, স্কিমা এবং এন্ড-টু-এন্ড ভ্যালিডেশন 6. ইউনিট টেস্ট জেনারেশন এবং টেস্টিবিলিটি: এআই সহ শক্তিশালী টেস্টিং 7. ত্রুটি রিপোর্ট লেখা এবং অগ্রাধিকার: পরিষ্কার, এআই সহ পুনরুত্পাদনযোগ্য রেকর্ড 8. পরীক্ষার কভারেজ বিশ্লেষণ এবং ঝুঁকি-ভিত্তিক পরীক্ষা: AI এর সাথে সঠিক লক্ষ্য করা 9. রিগ্রেশন টেস্টিং, টেস্ট রক্ষণাবেক্ষণ, এবং ভঙ্গুর পরীক্ষাগুলির বিরুদ্ধে লড়াই করা 10. মিথ্যা-বিশ্বাসের ঝুঁকি, পরীক্ষার গুণমান এবং মিউটেশন পরীক্ষা: টেস্টিং পরীক্ষা 11. এন্ড-টু-এন্ড ওয়ার্কফ্লো, সিআই/সিডি ইন্টিগ্রেশন, এথিক্স এবং সিকিউরিটি: দায়িত্বশীলভাবে এআই ব্যবহার করা
ইউনিট 6 / 11

ইউনিট টেস্ট জেনারেশন এবং টেস্টিবিলিটি: এআই সহ শক্তিশালী টেস্টিং

লাভ:

  • কৃত্রিম বুদ্ধিমত্তাকে ভ্রান্ত আচরণকে 'সঠিক' হিসাবে গ্রহণ করা থেকে প্রতিরোধ করার ক্ষমতা ইউনিট পরীক্ষায় প্রত্যাশিত মান গণনা করে স্বতন্ত্রভাবে গ্রহণের নিয়ম থেকে
  • AAA এবং FIRST নীতি প্রয়োগ করে এবং বাহ্যিক নির্ভরতাকে উপহাস করে দ্রুত, স্বাধীন এবং পুনরাবৃত্তিযোগ্য পরীক্ষা মুদ্রণের ক্ষমতা
  • মিউটেশন (কোড ব্রেকিং) সহ পরীক্ষাগুলি পরীক্ষা করার ক্ষমতা এবং ডিজাইনের গন্ধ হিসাবে কঠিন-টু-টেস্ট কোড সনাক্ত করার ক্ষমতা

টেস্টিং পিরামিডের সবচেয়ে বড় এবং দ্রুততম স্তর হল ইউনিট টেস্টিং — পরীক্ষা যা অন্য সব কিছু থেকে বিচ্ছিন্নভাবে একটি ফাংশন বা কোডের ছোট অংশ যাচাই করে। হাজার হাজার ইউনিট পরীক্ষা সেকেন্ডে চলে এবং কোডটি বিকাশকারীর স্ক্রিনে থাকাকালীন একটি বাগ ধরা পড়ে। কৃত্রিম বুদ্ধিমত্তা (AI) ইউনিট পরীক্ষা তৈরিতে সম্ভবত সবচেয়ে দক্ষ: আপনি এটিকে একটি ফাংশন দেন, AI কয়েক ডজন পরীক্ষা তৈরি করে। কিন্তু এই সুবিধাই সবচেয়ে বড় ফাঁদের জন্ম দেয়: AI সহজেই এমন পরীক্ষা তৈরি করে যা "সবুজ উজ্জ্বল কিন্তু কিছু যাচাই করে না" বা কোডের বর্তমান (সম্ভবত ত্রুটিপূর্ণ) আচরণকে "সঠিক" হিসাবে গ্রহণ করে। এই ইউনিটে আপনি শিখবেন কিভাবে AI এর সাথে সত্যিকারের প্রতিরক্ষামূলক ইউনিট পরীক্ষা লিখতে হয় এবং টেস্টেবল কোড এবং AI এর মধ্যে সম্পর্ক।

একটি ভাল ইউনিট পরীক্ষার গুণাবলী: প্রথম

ভাল ইউনিট পরীক্ষাগুলি প্রথম নীতিগুলি অনুসরণ করে: দ্রুত, স্বাধীন (পরীক্ষাগুলি একে অপরের উপর নির্ভরশীল হওয়া উচিত নয়), পুনরাবৃত্তিযোগ্য (পুনরাবৃত্তিযোগ্য — যেকোনো পরিবেশে একই ফলাফল), স্ব-প্রমাণ করা (স্পষ্ট পাস/ফেল), সময়মত (সময়ে)। AI উত্পাদন পরীক্ষা করার সময় নিজেকে এই নীতিগুলি মনে করিয়ে দিন; বিশেষভাবে জিজ্ঞাসা করুন যে পরীক্ষাটি "স্বাধীন" এবং "পুনরাবৃত্তিযোগ্য" হওয়ার জন্য বাইরের বিশ্বের (প্রকৃত ডাটাবেস, নেটওয়ার্ক, ঘড়ি) উপর নির্ভর করে না।

AAA প্যাটার্ন এবং অভিব্যক্তিপূর্ণ দাবী

একটি কঠিন ইউনিট পরীক্ষা AAA কাঠামো অনুসরণ করে: সাজান (প্রস্তুত করুন — ইনপুট এবং নির্ভরতা সেট আপ করুন), আইন (চালনা করুন — পরীক্ষার অধীনে ফাংশনটি কল করুন), জারি করুন (বৈধকরণ — প্রত্যাশিত মানের সাথে ফলাফলের তুলনা করুন)। সমালোচনামূলক এক জাহির হয়. AI সবচেয়ে সাধারণ যে ভুলটি করে তা হল পরীক্ষার অধীনে থাকা কোডের আউটপুট থেকে দাবী নেওয়া — “কোড যা কিছু ফেরত দেয় তা সত্য” যুক্তি। এটি পরীক্ষাকে অর্থহীন করে তোলে। সঠিক উপায় হল প্রত্যাশিত মান স্বাধীনভাবে নির্ধারণ করা (গ্রহণযোগ্যতার মানদণ্ড থেকে, এটি ম্যানুয়ালি গণনা করুন)।

মনোযোগ: আপনি যদি AI কে বলেন "এই ফাংশনের জন্য একটি পরীক্ষা লিখুন", AI ফাংশনটি চালাতে পারে এবং এর আউটপুটটিকে "প্রত্যাশিত" হিসাবে লিখতে পারে। ফাংশন মিথ্যা হলেও এই পরীক্ষাটি পাস করে। পরিবর্তে, বলুন "আপনি এই নিয়ম অনুযায়ী প্রত্যাশিত ফলাফল গণনা করেন, ফাংশনের বর্তমান আউটপুট উল্লেখ করবেন না।"

উপহাস, স্টাব এবং নির্ভরতা

ইউনিট পরীক্ষার জন্য বিচ্ছিন্নতা প্রয়োজন। যদি আপনার ফাংশন একটি ডাটাবেস বা API-এর উপর নির্ভর করে, সেগুলিকে পরীক্ষায় মক অবজেক্ট (মক/স্টাব — একটি নিয়ন্ত্রিত, প্রকৃত নির্ভরতার জন্য ডামি বিকল্প) দিয়ে প্রতিস্থাপিত করা হয়। এটি পরীক্ষাকে দ্রুত, স্বাধীন এবং পুনরুৎপাদনযোগ্য করে তোলে। এআই মক ইনস্টলেশন উত্পাদন করতে পারে; কিন্তু অত্যধিক উপহাস থেকে সাবধান থাকুন: আপনি যদি সবকিছু উপহাস করেন তবে পরীক্ষাটি কেবল "মকটি কী দেয়" তা যাচাই করবে, আসল যুক্তি নয়। ভারসাম্য: বাইরের বিশ্বকে অনুকরণ করুন, পরীক্ষার অধীনে আসল যুক্তিটি কার্যকর করুন।

পরীক্ষাযোগ্যতা এবং এআই

একটি আকর্ষণীয় প্রতিক্রিয়া আছে: যে কোডটি পরীক্ষা করা কঠিন তা প্রায়ই খারাপভাবে ডিজাইন করা কোড। যদি AI-এর কোনো ফাংশনে পরীক্ষা লিখতে সমস্যা হয় (খুব বেশি নির্ভরতা, লুকানো গ্লোবাল স্টেট, পার্শ্ব প্রতিক্রিয়া), এটি একটি ডিজাইনের গন্ধ। AI কে জিজ্ঞাসা করা "কিভাবে আপনি এই কোডটিকে পরীক্ষাযোগ্য করে তুলতে রিফ্যাক্টর করবেন" ভাল পরীক্ষা এবং আরও ভাল কোড উভয়ের দিকে নিয়ে যায়।

প্যারামিটারাইজড পরীক্ষা এবং ডেটা বৈচিত্র্য

বিভিন্ন ইনপুট দিয়ে একই নিয়ম যাচাই করার জন্য প্রতিবার একটি পৃথক পরীক্ষা লেখা উভয়ই ক্লান্তিকর এবং বজায় রাখা কঠিন। প্যারামিটারাইজড টেস্টিং - একটি কাঠামো যা বারবার ইনপুট এবং প্রত্যাশিত ফলাফলের তালিকায় একই পরীক্ষার যুক্তি চালায় - এই পুনরাবৃত্তি দূর করে: একটি একক টেস্ট বডি কয়েক ডজন ইনপুট জোড়া দিয়ে খাওয়ানো হয়। AI এই ইনপুট-প্রত্যাশিত ফলাফল সারণী তৈরিতে অত্যন্ত দক্ষ যখন আপনি এটিকে আপনার গ্রহণযোগ্যতার নিয়ম দেন; বিশেষ করে, এটি পদ্ধতিগতভাবে সীমা মান এবং সমতুল্য শ্রেণীগুলিকে সারণী করে।

তবে এখানেও একটি ফাঁদ রয়েছে: AI পরীক্ষার অধীনে কোড থেকে জেনারেট করা টেবিলে প্রত্যাশিত ফলাফল অর্জন করতে থাকে। প্যারামিটারাইজড পরীক্ষার ক্ষেত্রে এই ত্রুটিটি আরও বেশি বিপজ্জনক, কারণ একটি একক ভুল যুক্তি কয়েক ডজন লাইনকে অবৈধ করে দেয়। অতএব, সর্বদা প্রত্যাশিত ফলাফলের কলামটি গ্রহণযোগ্যতার নিয়ম অনুসারে স্বাধীনভাবে গণনা করুন এবং কমপক্ষে কয়েকটি সারি ম্যানুয়ালি যাচাই করুন। এছাড়াও একটি বর্ণনা কলামের জন্য জিজ্ঞাসা করুন "প্রতিটি সারি কি প্রতিনিধিত্ব করে"; সুতরাং যখন একটি সারি ভাঙ্গবে আপনি অবিলম্বে দেখতে পাবেন কোন অবস্থা ভাঙ্গা হয়েছে।

টিপ: প্যারামিটারাইজড টেস্ট টেবিলে ইচ্ছাকৃতভাবে একটি "ফাঁদ সারি" যোগ করুন — অর্থাৎ, জেনেশুনে ফলাফলটি ভুল টাইপ করুন। আপনি পরীক্ষা চালানোর সময় যদি সেই লাইনটি লাল না হয়, আপনার পরীক্ষা আসলে সেই পরিস্থিতি যাচাই করছে না। এটি একটি দ্রুত মক-পাস চেক।

দুর্বল প্রম্পট / শক্তিশালী প্রম্পট

দুর্বল: "এই ফাংশনের জন্য একটি ইউনিট পরীক্ষা লিখুন।"
শক্তিশালী: "ট্যাক্সক্যালকুলেট(অ্যামাউন্ট, রেট) ফাংশনের জন্য [ভাষা/ফ্রেমওয়ার্ক] ইউনিট পরীক্ষা লিখুন। গ্রহণযোগ্যতার নিয়ম: ফলাফল = পরিমাণ * হার, 2 দশমিকে বৃত্তাকার; ঋণাত্মক পরিমাণ বা হার একটি ত্রুটি ছুড়ে দেয়; 0 প্রদান করে যদি হার 0 হয়। AAA কাঠামো ব্যবহার করুন। ম্যানুয়ালি গণনা করুন প্রত্যাশিত বিধিগুলি অনুযায়ী; বর্তমান ফাংশনটি বাহ্যিক নিয়ম অনুযায়ী ম্যানুয়ালি গণনা করুন। এবং নেতিবাচক ক্ষেত্রে (0, নেতিবাচক, খুব বড়, বৃত্তাকার থেকে দশমিক পর্যন্ত) প্রতিটি পরীক্ষার নামটি বাহ্যিক নির্ভরতা যাচাই করে তা বর্ণনা করুন।

শক্তিশালী প্রম্পট; এটি স্বীকৃতির নিয়ম, স্বাধীন প্রত্যাশিত মূল্য প্রত্যাশা, গঠন এবং প্রান্তের ক্ষেত্রে দেয়। এইভাবে, পরীক্ষা নিয়মের অভিভাবক হয়ে ওঠে, কোডের আয়না নয়।

ইউনিট পরীক্ষার মানের টেবিল

উপসর্গ

খারাপ পরীক্ষা (জাল-বিশ্বাস)

ভাল পরীক্ষা

জোর করা

কোনটি বা "নাল নয়"

প্রত্যাশিত কংক্রিট মান

প্রত্যাশিত মান উৎস

ফাংশনের আউটপুট

গ্রহণের নিয়ম / ম্যানুয়াল গণনা

আসক্তি

প্রকৃত ডিবি/নেটওয়ার্ক/ঘণ্টা

মক/স্টাব দিয়ে ইনসুলেটেড

প্রান্ত কেস

শুধু সুখী রাস্তা

সীমা, নেতিবাচক, ত্রুটি

যখন আপনি কোড ভাঙ্গবেন

সবুজ থাকে

লাল হয়ে যায়

নাম

পরীক্ষা 1, পরীক্ষা পদ্ধতি

এটি নিশ্চিত করে এমন নিয়ম বর্ণনা করে

চারটি অনুলিপিযোগ্য টেমপ্লেট

1) নিয়ম-চালিত ইউনিট পরীক্ষা:

আপনার ভূমিকা: সিনিয়র সফ্টওয়্যার পরীক্ষা প্রকৌশলী। [ভাষা/ফ্রেমওয়ার্ক] সহ নিম্নলিখিত ফাংশনে একটি ইউনিট পরীক্ষা লিখুন: [স্বাক্ষর]। গ্রহণযোগ্যতার নিয়ম: [নিয়ম]।- AAA কাঠামো ব্যবহার করুন।- এই নিয়ম অনুসারে ম্যানুয়ালি প্রত্যাশিত মান গণনা করুন; ফাংশনের বর্তমান আউটপুট উল্লেখ করবেন না। - আলাদা পরীক্ষা দিয়ে সীমা, নেতিবাচক, ত্রুটি এবং সুখী পথ কভার করুন। - প্রতিটি পরীক্ষার নাম এটি যাচাই করে এমন নিয়ম বর্ণনা করুন। - উপহাস বাহ্যিক নির্ভরতা; প্রকৃত যুক্তি কাজ করুন.

2) মিউটেশন প্রতিরোধ নিয়ন্ত্রণ:

এই ইউনিট পরীক্ষা দেখুন. 5টি ছোটখাট পরিবর্তনের তালিকা করুন যা আমি পরীক্ষার অধীনে কোডে করতে পারি (a - a + এর পরিবর্তে, a >= a > এর পরিবর্তে, একটি সীমানা স্থানান্তর) এবং আমাকে বলুন যে এই পরীক্ষাগুলির মধ্যে কোনটি লাল হয়ে যাবে? যদি কোনোটিই ফেরত না আসে, পরীক্ষাটি অপর্যাপ্ত। কোড + পরীক্ষা: [পেস্ট]

3) পরীক্ষাযোগ্যতা পর্যালোচনা:

কেন এই ফাংশন জন্য একটি ইউনিট পরীক্ষা লিখতে কঠিন? লুকানো আসক্তি, গ্লোবাল স্ট্যাটাস, পার্শ্বপ্রতিক্রিয়া, অনেক দায়িত্ব আছে কি? এটি পরীক্ষাযোগ্য করার জন্য ন্যূনতম রিফ্যাক্টরিংয়ের পরামর্শ দিন; আচরণ পরিবর্তন করবেন না। কোড: [পেস্ট]

4) অসম্পূর্ণ দৃশ্যকল্প সমাপ্তি:

নিম্নলিখিত ফাংশন এবং উপলব্ধ পরীক্ষা দেওয়া হয়. কোন আচরণ/এজকেস কখনও পরীক্ষা করা হয়নি তা তালিকাভুক্ত করুন (স্কোপের ফাঁক) এবং প্রতিটির জন্য একটি পরীক্ষা যোগ করুন। ফাংশন+পরীক্ষা: [পেস্ট]

তিনটি মিনি কেস

কেস 1 - কোড মিররিং পরীক্ষা করুন। একজন বিকাশকারীর কাছে রাউন্ডিং ফাংশনের জন্য এআই একটি পরীক্ষা লিখতে হয়েছিল; 10টি পরীক্ষা সবুজ ছিল। প্রকৃতপক্ষে, ফাংশনটি ভুল দিকে বৃত্তাকার ছিল, কিন্তু AI ফাংশনের আউটপুট থেকে প্রত্যাশিত মানগুলি নিয়েছিল, তাই পরীক্ষাগুলি ত্রুটিটিকে "সত্য" বলে মনে করেছিল। যখন প্রত্যাশিত মানগুলি "নিয়ম-চালিত" টেমপ্লেটের সাথে ম্যানুয়ালি গণনা করা হয়েছিল, তখন 4টি পরীক্ষা লাল হয়ে গিয়েছিল এবং আসল ত্রুটিটি প্রকাশিত হয়েছিল৷

কেস 2 - মিউটেশন নিয়ন্ত্রণের মান। একটি দল 45 টি ইউনিট পরীক্ষার উপর নির্ভর করেছিল। একটি "মিউটেশন দৃঢ়তা চেক" সহ কোডে 20টি ছোটখাট টুইক করার চেষ্টা করা হয়েছে; পরীক্ষা তাদের মধ্যে শুধুমাত্র 11 ধরা. বাকি 9টি বাধা নীরবে কেটে গেছে। দল দুর্বল পরীক্ষা শক্তিশালী; পরবর্তী রিলিজে এই বর্ধিত পরীক্ষা দ্বারা একটি প্রকৃত গণনার ত্রুটি ধরা পড়ে।

কেস 3 - অস্থিরতা একটি ডিজাইনের গন্ধ। AI একটি অর্ডারিং ফাংশনের জন্য পরীক্ষা লিখতে পারেনি, এটি ক্রমাগত বাস্তব ডাটাবেস প্রয়োজন। "পরীক্ষাযোগ্যতা পর্যালোচনা" টেমপ্লেটটি দেখিয়েছে যে ফাংশনটি ডাটাবেস অ্যাক্সেস এমবেড করেছে। যখন নির্ভরতা ইনজেকশন অপসারণ করা হয়, পরীক্ষাগুলি লেখা যেতে পারে এবং কোডটি পরিষ্কার হয়ে যায়।

সাধারণ ভুল

  • কোড থেকে প্রত্যাশিত মান প্রাপ্ত করা। এআই ফাংশন আউটপুটকে "সঠিক" হিসাবে গ্রহণ করে; পরীক্ষা যা ত্রুটিপূর্ণ কোড নিশ্চিত করে।
  • জোর ছাড়া বা তুচ্ছ দাবি সঙ্গে পরীক্ষা. "তিনি একটি ত্রুটি নিক্ষেপ করেননি, তিনি পাস" যুক্তি; এটি কিছু নিশ্চিত করে না।
  • চরম উপহাস. সব কিছুকে উপহাস করা এবং শুধুমাত্র কি পরিহাস ফিরে আসে তা পরীক্ষা করা; বাস্তব যুক্তি পরীক্ষা করা হয় না.
  • শুধু সুখী রাস্তা। বাইপাস সীমা, নেতিবাচক এবং ত্রুটি রাষ্ট্র.
  • কোড ভঙ্গ করে পরীক্ষা না. মিউটেশন পরীক্ষা না করেই সবুজকে বিশ্বাস করা।
  • অস্থিরতা উপেক্ষা করা। কঠিন পরীক্ষা করার পরিবর্তে খারাপ ডিজাইন সনাক্ত করা এবং ঠিক করা না।

সংক্ষেপে

ইউনিট পরীক্ষা হল টেস্টিং পিরামিডের দ্রুততম এবং বৃহত্তম স্তর; এটা সবচেয়ে সস্তা মুহূর্তে ভুল ধরা. AI ইউনিট পরীক্ষা তৈরি করতে খুব সক্ষম, কিন্তু এর সবচেয়ে বড় সমস্যা হল এমন পরীক্ষাগুলি লেখা যা ভুল আচরণকে "সঠিক" হিসাবে ধরে নেয় কোড থেকেই প্রত্যাশিত মান অর্জন করে। সমাধান: গ্রহণযোগ্যতার নিয়মগুলি দিন, প্রত্যাশিত মানগুলি ম্যানুয়ালি গণনা করুন, AAA এবং FIRST নীতিগুলি প্রয়োগ করুন, বহির্বিশ্বকে উপহাস করুন এবং প্রকৃত যুক্তি চালান এবং প্রতিটি পরীক্ষাকে মিউটেশন (কোড ভঙ্গ) দ্বারা পরীক্ষা করুন। যে কোডটি পরীক্ষা করা কঠিন তা হল একটি ডিজাইন সাইন যার ফিক্সিং প্রয়োজন৷

আবেদন টাস্ক

আপনার নিজের প্রকল্প থেকে একটি ব্যবসায়িক নিয়ম রয়েছে এমন একটি ফাংশন নির্বাচন করুন। গ্রহণযোগ্যতার নিয়ম লিখুন এবং "নিয়ম-চালিত ইউনিট টেস্টিং" টেমপ্লেট সহ AI লিখিত পরীক্ষা করুন; প্রত্যাশিত মানগুলি ম্যানুয়ালি গণনা করুন। তারপরে "মিউটেশন দৃঢ়তা পরীক্ষা" প্রয়োগ করুন: কোডটিতে কমপক্ষে 5টি ছোট বিরতি করুন এবং কতগুলি পরীক্ষা লাল হয়ে গেছে তা পরিমাপ করুন। ধরা না পড়া দুর্নীতির জন্য নতুন পরীক্ষা যোগ করুন। কতগুলি ব্যাঘাত ধরা পড়েছে তা রিপোর্ট করুন (যেমন মিউটেশন স্কোর)।

চেকলিস্ট

  • [ ] আমি স্বীকৃতির নিয়ম দিয়েছি এবং প্রত্যাশিত মানগুলি ম্যানুয়ালি গণনা করেছি৷
  • [ ] আমি নিশ্চিত করেছি যে পরীক্ষাগুলি কোড থেকে প্রত্যাশিত মান অর্জন করেনি।
  • [ ] আমি AAA এবং FIRST নির্দেশিকা অনুসরণ করে স্বাধীন পরীক্ষা প্রতিষ্ঠা করেছি।
  • [ ] আমি বাহ্যিক নির্ভরতাকে উপহাস করেছি এবং প্রকৃত যুক্তি দিয়েছি।
  • [ ] আমি সীমা, নেতিবাচক এবং ত্রুটির ক্ষেত্রে কভার করেছি।
  • [ ] কোড (মিউটেশন) ভঙ্গ করে আমি প্রমাণ করেছি যে পরীক্ষাগুলি প্রকৃতপক্ষে রক্ষা করে।