আমি নিম্নলিখিত সিস্টেমের সাথে কাজ করছি:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
আমাদের সম্প্রতি একটি সমস্যা হয়েছিল যেখানে আমি যে লাইব্রেরিটি ব্যবহার করছি তার সংস্করণ আপডেট করেছি, যা অন্যান্য বিষয়গুলির সাথে টাইমস্ট্যাম্পগুলির (যা তৃতীয় পক্ষের লাইব্রেরি হিসাবে প্রত্যাবর্তন করে long
), যুগের পরে মিলি সেকেন্ড থেকে ন্যানোসেকেন্ডে পরিবর্তিত হয়েছিল।
সমস্যাটি:
যদি আমি তৃতীয় পক্ষের গ্রন্থাগারের আইটেমগুলিকে ঠাট্টা করে এমন পরীক্ষাগুলি লিখি তবে তৃতীয় পক্ষের গ্রন্থাগারের বিষয়বস্তু সম্পর্কে আমি ভুল করে থাকলে আমার পরীক্ষাটি ভুল হবে । উদাহরণস্বরূপ, আমি বুঝতে পারি নি যে টাইমস্ট্যাম্পগুলি যথার্থতা পরিবর্তিত করেছিল, যার ফলে ইউনিট পরীক্ষায় পরিবর্তনের প্রয়োজন হয়েছিল, কারণ আমার উপহাসটি ভুল ডেটা ফেরত দিয়েছে returned এটি লাইব্রেরিতে কোনও বাগ নয় , এটি ঘটেছিল কারণ ডকুমেন্টেশনে আমি কিছু মিস করেছি।
সমস্যাটি হ'ল, আমি এই ডেটা স্ট্রাকচারগুলিতে থাকা ডেটা সম্পর্কে নিশ্চিত হতে পারি না কারণ সত্যিকারের ডেটা ফিড ব্যতীত আমি প্রকৃতগুলি উত্পন্ন করতে পারি না। এই বস্তুগুলি বড় এবং জটিল এবং সেগুলিতে অনেকগুলি আলাদা আলাদা ডেটা থাকে data তৃতীয় পক্ষের লাইব্রেরির জন্য দস্তাবেজগুলি দরিদ্র।
প্রশ্নটি:
এই আচরণটি পরীক্ষা করার জন্য আমি কীভাবে আমার পরীক্ষাগুলি সেট আপ করতে পারি? আমি নিশ্চিত না যে আমি ইউনিট পরীক্ষায় এই সমস্যাটি সমাধান করতে পারি, কারণ পরীক্ষা নিজেই সহজেই ভুল হতে পারে। অতিরিক্তভাবে, ইন্টিগ্রেটেড সিস্টেমটি বড় এবং জটিল এবং এটি কিছু মিস করা সহজ। উদাহরণস্বরূপ, উপরের পরিস্থিতিতে আমি বেশ কয়েকটি জায়গায় টাইমস্ট্যাম্প হ্যান্ডলিংটি সঠিকভাবে সামঞ্জস্য করেছি, তবে আমি সেগুলির একটিটি মিস করেছি। সিস্টেমটি আমার ইন্টিগ্রেশন টেস্টে বেশিরভাগ ক্ষেত্রে সঠিক জিনিসগুলি করছিল বলে মনে হয়েছিল, তবে আমি যখন এটি প্রযোজনায় সরবরাহ করেছি (যার অনেক বেশি ডেটা রয়েছে) তখন সমস্যাটি স্পষ্ট হয়ে ওঠে।
আমার এখনই আমার সংহতকরণ পরীক্ষার জন্য কোনও প্রক্রিয়া নেই। টেস্টিং মূলত: ইউনিট পরীক্ষাগুলি ভাল রাখার চেষ্টা করুন, জিনিসগুলি ভেঙে গেলে আরও পরীক্ষা যুক্ত করুন, তারপরে আমার পরীক্ষার সার্ভারে স্থাপন করুন এবং জিনিসগুলি বুদ্ধিমান বলে মনে হচ্ছে তা নিশ্চিত করুন, তারপরে উত্পাদনে মোতায়েন করুন। এই টাইমস্ট্যাম্প ইস্যুটি ইউনিট পরীক্ষাগুলি পাস করেছে কারণ মকগুলি ভুল তৈরি হয়েছিল, তারপরে এটি ইন্টিগ্রেশন টেস্টে পাস করেছে কারণ এটি কোনও তাত্ক্ষণিক, সুস্পষ্ট সমস্যার কারণ হয়নি। আমার কিউএ বিভাগ নেই।
Timestamp
ক্লাস ফেরত না (তাদের যে কোনও উপস্থাপনা রয়েছে) এবং নামযুক্ত পদ্ধতিগুলি সরবরাহ করে না (.seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) এবং অবশ্যই নামে কনস্ট্রাকটর করুন। তাহলে কোনও সমস্যা হত না।