কীভাবে টিডিডি করবেন যে সঠিক ফলাফল ফিরে আসবে


12

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

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

একটি প্রয়োজন হ'ল কোনও প্রদত্ত স্টোরের জন্য, আমি এই অ্যাপ্লিকেশনটির জন্য বৈধ বলে বিবেচিত সমস্ত ক্রয়ের অর্ডার ফিরিয়ে দেব। স্টোর খোলার তারিখ থেকে প্রদত্ত পরিসরের সাথে জাহাজের তারিখ পড়লে কোনও পিও বৈধ হিসাবে বিবেচিত হবে (এটি নতুন স্টোরের জন্য)।

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

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

এবং আমি কীভাবে এটি পরীক্ষা করব এবং এটি কাজ করে যাচাই করব? আমরা কোনও ওআরএম ব্যবহার করছি না এবং এটি হওয়ার সম্ভাবনা কম। এবং আমি আমার পরীক্ষায় ডিবিকে কল করতে পারি না।

আমি আটকে গেছি.

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

এটা কোনো কিছু হলো? নাকি এর চেয়ে ভাল উপায় আছে?

আপডেট: আমি মনে হয় EF ব্যবহার করতে সক্ষম। এখন আমি কেবল এটি কীভাবে ব্যবহার করব এবং এটি পরীক্ষাযোগ্য করে তোলা দরকার, যখন এখনও সঞ্চিত পদ্ধতিতে নির্ভর করতে সক্ষম হয়েছি এবং বিভিন্ন ডাটাবেসগুলিতে ডেটা ছড়িয়ে ছিটিয়ে থাকা সমস্যা।


কৌতূহলের বাইরে, আপনি কেন একটি সাধারণ প্যাকেজটি এসকিউএল বিবৃতি সহ বৈধ পিও নির্বাচন করতে পারবেন না? (এই প্রশ্ন বা উত্তরটি কোনও সমাধান বোঝায় না))
স্কার্ফ্রিজ

উত্তর:


7

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

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

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

অন্যান্য অপশন:

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

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


2
-1 কারণ টিডিডি! = ইউনিট পরীক্ষা করা। টিডিডি করার সময় একীকরণ স্তরের পরীক্ষাগুলি অন্তর্ভুক্ত করার জন্য পুরোপুরি জরিমানা।
স্টিভেন এ লো।

ইউনিট টেস্টিং পরীক্ষা চালিত বিকাশের একটি উপসেট। একটি পরীক্ষা চালিত বিকাশে আপনি আপনার সিস্টেমের একটি হাঁটার কঙ্কাল তৈরি করতে পারেন এবং তারপরে সেই সিস্টেমে ইউনিট, ইন্টিগ্রেশন এবং কার্যকরী পরীক্ষা চালাবেন। আপনার সংহতকরণ, ইউনিট বা গ্রহণযোগ্যতা পরীক্ষা ব্যর্থ হয়, আপনি তাদের পরে পাস এবং আরও পরীক্ষা লিখতে।
কোডার্ট

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

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

সঞ্চিত পদ্ধতিগুলি বিচ্ছিন্নভাবে পরীক্ষা করা যেতে পারে। এগুলি কীভাবে বৈধ হবে? লেনদেন এসকিউএল-এর জন্য টিএসকিউএলটি রয়েছে ( tsqlt.org )
কেভিন ক্লাইনে

4

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

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

আমি ক্রয়ের আদেশগুলি ফেরত পাঠানো ভাণ্ডারটিকে উপহাস করব। বিশটি বিজোড় ক্রয়ের আদেশ সহ একটি মক তৈরি করুন।

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

গেটভালিডপিওগুলিতে একটি কল আটকে দিন যাতে এটি আপনার উপহাসকে ডাকে ডাটাবেসের পদ্ধতির চেয়ে।

এবং আমি কীভাবে এটি পরীক্ষা করব এবং এটি কাজ করে যাচাই করব? আমরা কোনও ওআরএম ব্যবহার করছি না এবং এটি হওয়ার সম্ভাবনা কম। এবং আমি আমার পরীক্ষায় ডিবিকে কল করতে পারি না।

একটি উপহাস থেকে সঠিক তথ্য ফিরে এসেছে তা নিশ্চিত করার জন্য আপনার ইউনিট-পরীক্ষা প্রয়োজন।

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

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

আমি ইতিমধ্যে বলেছি, আপনার কাছে এমন একটি উপহাস দরকার যা আপনার কাছে জিজ্ঞাসা করতে পারে এমন কিছু ডেটা ফেরত দেয়।

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


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

0

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

অন্যভাবে বলেছেন, সঞ্চিত পদ্ধতিগুলি পরীক্ষা করার জন্য সঞ্চিত পদ্ধতি ব্যবহার করুন কারণ:

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

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

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.