এসকিউএল এবং ডেটা ম্যানিপুলেশন ফাংশন সহ টিডিডি


14

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

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

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


উত্তর:


6

ডাটাবেস সম্পর্কিত যা কিছু আছে তার পরীক্ষা করার একটি গুরুত্বপূর্ণ নিয়ম হ'ল এটি আপনার বাকী প্রয়োগ থেকে সম্পূর্ণ বিচ্ছিন্ন করা।

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

আপনার অ্যাপ্লিকেশনটি কীভাবে আপনার ডাটাবেসের সাথে ইন্টারেক্ট করে তা পরীক্ষার ক্ষেত্রে আপনি উদাহরণস্বরূপ একটি মেমরির ডাটাবেস ব্যবহার করতে ডাটাবেস অ্যাডাপ্টারগুলিকে জাল করতে পারেন।

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


3

এটি একটি আকর্ষণীয় প্রশ্ন কারণ অ্যাপ্লিকেশন ইউনিট পরীক্ষার সময় ডেটাবেসটি সেই অংশ যা নকল হয়। আশা করি ডাটাবেস ইঞ্জিনটির যুক্তি নিজেই সরবরাহকারীর দ্বারা ভালভাবে পরীক্ষা করা হয়েছে তবে অবশ্যই ক্যোয়ারী, স্কিমা এবং সঞ্চিত পদ্ধতিগুলি এমন কোড যা পরীক্ষার জন্য এবং প্রতিরোধের বিরুদ্ধে সুরক্ষিত হওয়া দরকার। এটি প্রায়শই একীকরণ পরীক্ষায় ছেড়ে যায় যা টিডিডি নয়।

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

এছাড়াও, মনে রাখবেন যে পরীক্ষাগুলি অবশ্যই পুনরাবৃত্তিযোগ্য হবে এবং প্রতিটি ইউনিট পরীক্ষার জন্য রাজ্য একরকম কিনা তা নিশ্চিত করার জন্য আপনাকে ডাটাবেস স্থিতিকে আরম্ভ করতে এবং ছিঁড়ে ফেলার জন্য কিছু স্ক্রিপ্টের প্রয়োজন হবে।

আপনার নিয়ন্ত্রণে নেই এমন ডেটা সম্পর্কে আপনার প্রশ্নের জন্য, এটি একটি কঠিন অঞ্চল। আমি মনে করি আপনি জাল ডেটা দিয়ে এটি উপহাস করা এবং ইউনিট পরীক্ষার জন্য যতটা সম্ভব ব্যতিক্রম এবং প্রান্ত শর্তগুলি পরীক্ষা করা থেকে ভাল। অন্যথায় এটি ইন্টিগ্রেশন টেস্টিংয়ের বিভাগে আরও পড়ে যাবে (এটি করাও ভাল কাজ)। ইন্টিগ্রেশন টেস্টিংয়ের জন্য আপনি তৃতীয় পক্ষের ডেটার বিপরীতে আপনার পরীক্ষা চালাতে পারেন এবং এটি প্রাথমিক আউটপুট উত্পন্ন করতে এবং পরবর্তী পরীক্ষার জন্য (যেমন রিফ্যাক্টরিংয়ের পরে) নিশ্চিত হন যে সেই ফলাফলগুলি প্রাথমিক পরিচিত আউটপুট পুনরাবৃত্তি করে।


আপনি কেন এমন কোনও দৃষ্টির জন্য পরীক্ষা লিখতে পারবেন না যা এখনও কোড করা হয়নি?
জেফও

যদি আপনি ওপি প্রস্তাবিত হিসাবে পরীক্ষার ব্যবস্থা হিসাবে ভিউ ব্যবহার করছেন না।
টার্নকি

1

এক পর্যায়ে আপনার পরীক্ষার ডেটা প্রয়োজন হবে। আপনি যদি একটি তৃতীয় পক্ষের সিস্টেম ব্যবহার করছেন, স্কিমা ইতিমধ্যে তৈরি করা হয়েছে, তবে আপনাকে ভবিষ্যতের পরিবর্তনগুলি সমাধান করতে হবে। আশা করি, আপনি আপগ্রেড ডকুমেন্টেশন থেকে এই পরিবর্তনগুলি পেতে পারেন, তবে আপনাকে নিজেরাই ডাটাবেস সংস্করণ তুলনা করতে বাধ্য করতে পারেন।

প্রত্যাশিত ফলাফল সেটগুলি ডাটাবেস টেবিল বা বাহ্যিক ফাইল / স্প্রেডশিটে সংরক্ষণ করা যায়। এমনকি CHECKSUM ব্যবহার বা তুলনা দেখেছি। আপনি যখন কোনও ভিউ / স্প্রোক পরীক্ষা করেন, আপনি একটি ব্যর্থতা পাবেন কারণ সেগুলির অস্তিত্ব নেই। তারপরে আপনি কমপক্ষে কার্যকর করার জন্য পর্যাপ্ত কোড সহ অবজেক্টটি তৈরি করুন (SELECT -1 [[ভুল_ডাটা] হিসাবে;]) এবং আপনি একটি ব্যর্থতা পাবেন কারণ ফলাফল ফলাফলের সাথে এটি মেলে না। এটি একবার মিললে আপনার সবুজ আলো have

আমি প্রকল্পের মালিকদের সাথে কাজ শুরু করেছি এবং তাদের স্প্রেডশিটে রিপোর্টগুলি উপহাস করার জন্য এবং আমার জন্য আংশিক ডেটা নিয়ে আসার চেষ্টা করেছি (আপনি ফলাফলের ডেটা পরীক্ষার টেবিলে রাখতে পারেন could) প্রথমে কিছুটা পুশব্যাক ছিল তবে তারা বুঝতে পেরেছিল আমি একটি প্রতিবেদন তৈরি করতে যাচ্ছি এবং যাইহোক তারা এটি যাচাই করে নেবে। এটি দীর্ঘমেয়াদে সময় সাশ্রয় করেছে। যদি তারা পরিবর্তনের অনুরোধ করতে চান তবে তারা স্প্রেডশিটটি আবার করতে পারেন। এখন তারা এই প্রশ্নের উত্তর দিতে পারে, "এটি যুক্ত করা কত কঠিন হবে ..."


1

যদি আপনার ডাটাবেস প্ল্যাটফর্মটি এসকিউএল সার্ভার হয় তবে খুব সুন্দর একটি নিখরচায় সরঞ্জাম রয়েছে: টিএসকিউএলটি

tSQLt মাইক্রোসফ্ট এসকিউএল সার্ভারের জন্য একটি ডাটাবেস ইউনিট পরীক্ষার কাঠামো। tSQLt এসকিউএল সার্ভার 2005 (পরিষেবা প্যাক 2 প্রয়োজনীয়) এবং সর্বোপরি সমস্ত সংস্করণে সামঞ্জস্যপূর্ণ।

আমি সফলভাবে ডাটাবেস স্তরে পরীক্ষার প্রয়োগ করতে ব্যবহার করেছি।

কিছু গুরুত্বপূর্ণ উপাদান যা এটিকে দরকারী করে তোলে সেগুলির মধ্যে রয়েছে:

  • জাল টেবিল এবং দর্শনগুলির সাথে কাজ করার দক্ষতা যা জড়িত সেটআপটিকে স্বাভাবিক করে তোলে
  • টেস্টগুলি লেনদেনগুলিতে স্বয়ংক্রিয়ভাবে চলে
  • আপনার দাবিগুলি টেবিলগুলিতে তুলনা করতে পারে (উভয় আসল এবং নকল) যাতে আপনি সহজেই কোনও ডেটা পরিবর্তন করেছেন কিনা তা দেখতে পারবেন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.