কর্মক্ষেত্রে, আমার একটি প্রকল্প বেশিরভাগই বাহ্যিক ক্লায়েন্টের কাছ থেকে পাস করা ডেটা নেওয়া এবং এটি একটি ডেটাবেজে স্থির রাখার বিষয়ে। এটি JPA ব্যবহার করে একটি জাভা এন্টারপ্রাইজ অ্যাপ্লিকেশন এবং আমাদের বেশিরভাগ যুক্তি সিআরইউডি অপারেশনের চারদিকে ঘোরে।
আমাদের বাগের বেশিরভাগ অংশে একরকম বা অন্য কোনওভাবে জেপিএ জড়িত।
- উদাহরণ 1: আপনি যদি দুটি বার সেভ বোতামটি ক্লিক করেন তবে জেপিএ দ্বিতীয় বার একই অস্তিত্বটি ডাটাবেসে toোকানোর চেষ্টা করতে পারে, যার ফলে প্রাথমিক কী লঙ্ঘন হয়।
- উদাহরণ 2: আপনি ডাটাবেস থেকে একটি সত্তা পুনরুদ্ধার করুন, এটি সম্পাদনা করুন এবং এর ডেটা আপডেট করার চেষ্টা করুন। জেপিএ পুরানোটিকে আপডেট করার পরিবর্তে একটি নতুন উদাহরণ তৈরি করার চেষ্টা করতে পারে।
প্রায়শই সমাধানটির জন্য জেপিএ টিকা যুক্ত / অপসারণ / পরিবর্তন করা প্রয়োজন। অন্যান্য সময়ে এটি ডিএও যুক্তি সংশোধন করে।
ইউনিট টেস্ট এবং টিডিডি ব্যবহার করে কীভাবে আমাদের কোডে আস্থা অর্জন করবেন তা আমি বুঝতে পারি না। আমি নিশ্চিত নই যে এটি কারণ ইউনিট টেস্ট এবং টিডিডি খারাপ ফিট, বা যদি আমি সমস্যার কাছে পৌঁছাচ্ছি।
ইউনিট পরীক্ষাগুলি খারাপ ফিট বলে মনে হয় কারণ আমি কেবল রানটাইম এ এই সমস্যাগুলি আবিষ্কার করতে পারি এবং সমস্যাগুলি পুনরুত্পাদন করতে আমার একটি অ্যাপ্লিকেশন সার্ভারে স্থাপন করা প্রয়োজন। সাধারণত ডাটাবেসগুলিকে জড়িত করা দরকার যা আমি ইউনিট পরীক্ষার সংজ্ঞার বাইরে বলে মনে করি: এগুলি ইন্টিগ্রেশন টেস্ট।
টিডিডি খারাপ ফিটের মতো বলে মনে হচ্ছে কারণ মোতায়েন করা + পরীক্ষার প্রতিক্রিয়া লুপটি এত ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে ধীরে পড়ে যায় me মোতায়েন করা + পরীক্ষার প্রতিক্রিয়া লুপটি 3 মিনিটের বেশি সময় নেয় এবং আমি ঠিক কোডটি লিখছি কিনা তা সম্পর্কে আমি বিশেষত টেস্টগুলি চালিত করি। সমস্ত ইন্টিগ্রেশন পরীক্ষা চালাতে 30+ মিনিট সময় লাগে।
এই ছাঁচের বাইরে কোড রয়েছে এবং আমি সর্বদা ইউনিট পরীক্ষা করি যখনই পারি। তবে আমাদের বাগের বেশিরভাগ অংশ এবং সবচেয়ে বড় সময় ডুবে সর্বদা জেপিএ বা ডাটাবেস জড়িত।
অনুরূপ অন্য একটি প্রশ্ন রয়েছে , তবে আমি যদি পরামর্শটি অনুসরণ করি তবে আমি আমার কোডের সবচেয়ে অস্থির অংশটি (জেপিএ) মোড়ানো এবং এটি ছাড়াও সমস্ত কিছুর পরীক্ষা করছি। আমার প্রশ্নের প্রসঙ্গে, আমি একই খারাপ পরিস্থিতিতে থাকি। জেপিএ মোড়ানোর পরের পদক্ষেপটি কী? আইএমও এই প্রশ্নটি (সম্ভবত) আমার প্রশ্নের উত্তর দেওয়ার একটি পদক্ষেপ, তবে এটির কোনও উত্তর নয়।
unit testing != TDD
)