পদ্ধতি: অন্য বিকাশকারীর জন্য লিখন ইউনিট পরীক্ষা


28

আমি সফটওয়্যার বিকাশ এবং ইউনিট পরীক্ষা লেখার কথা ভাবছিলাম। আমি নিম্নলিখিত ধারণা পেয়েছিলাম:

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

আমি মনে করি যে এই ধারণার কিছু উত্সাহ আছে:

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

কোড এবং পরীক্ষার বিকাশের মধ্যে কোড পর্যালোচনার জন্য অন্য বিকাশকারীকে যুক্ত করা ভাল ধারণা।

এই ধারণার ডাউনসাইডগুলি কী কী? এটি ইতিমধ্যে আমার কাছে অজানা কিছু পদ্ধতি হিসাবে বর্ণনা করা হয়েছে এবং সফ্টওয়্যার বিকাশে ব্যবহৃত হয়েছে?

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


17
আপনি ইউনিট স্তরে স্রোতের কিউএ কেবল বর্ণনা করছেন ing আপনার যদি জোড় জোড় কিছু লোক কাজ করে থাকে তবে আপনি কি টিডিডি দিয়ে প্রকৃত জুটি প্রোগ্রামিংয়ের চেষ্টা করেছেন?
jonrsharpe

9
পরীক্ষা লেখক যদি প্রথমে পরীক্ষাগুলি করেন (কঙ্কালের কোড লিখুন) এবং অন্য একজন কার্যকারিতা কার্যকর করেছিলেন তবে এটি আরও ভাল কাজ করবে। প্রথমটি ডিজাইনের নিয়ন্ত্রণে থাকবে এবং অন্যটি ভারী উত্তোলন করবে। এটি ভালভাবে কাজ করতে পারে যদি প্রথম জন জানেন যে তিনি কী করছেন এবং দ্বিতীয়জন সর্বদা তার নেতৃত্ব অনুসরণ করতে আপত্তি করে না। এই পথে সহযোগিতার কোনও নাম সম্পর্কে আমি জানি না। আমি বলব .. দাবী কর! এই ফ্রান্সিস বিকাশ কল করা শুরু করুন।
মার্টিন মাট

14
এই সমালোচনা কোনও অর্থহীন নয় এবং আপনার পরামর্শটি সমস্যার সমাধান করে না।
jonrsharpe

5
@ ফ্রানিস আমি সহকর্মীদের assert trueপরীক্ষা হিসাবে লিখতে দেখেছি এবং এটিকে একটি দিন বলেছি কারণ প্রতিটি পরীক্ষা উত্তীর্ণ হয়। একটি গুরুত্বপূর্ণ পদক্ষেপ অনুপস্থিত: পরীক্ষাগুলি প্রথমে ব্যর্থ হওয়া উচিত, এবং কোডগুলি পরিবর্তন করে পাস করা উচিত, পরীক্ষাগুলি নয়।
এরিক ডুমিনিল

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

উত্তর:


30

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

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

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

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


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

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

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

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

@ থমাস ওভেনস: ভাল, মানের ব্যয়টি কেবলমাত্র আসল নয় perceived একবার আপনার পরীক্ষাটি পাস হয়ে যায় (এবং আপনি নিজের কোডটি পরিষ্কার করে দিয়েছিলেন), আপনার পরীক্ষার দ্বারা বর্ণিত দৃশ্যটি সম্পন্ন এবং সুরক্ষিত হবে এবং আপনি আত্মবিশ্বাস পাবেন এটি প্রত্যাশার মতো কাজ করে। এটি সম্পন্ন হয়েছে, এবং আপনি এগিয়ে যেতে পারেন। আপনি যদি কোডটি নিশ্চিতভাবে কাজ না করে চলে যান তবে আপনি কেবলমাত্র এমন একটি debtণ গ্রহণ করেছেন যা আপনাকে পরে চেকগুলি সম্পাদন করতে হবে। Costণ ব্যয়, debtsণের অনুপস্থিতি নয়। মানে, আপনি যে "ভবিষ্যত" সম্পর্কে কথা বলবেন তা হ'ল আপনার প্রথম পরীক্ষাটি পাস করার সাথে সাথে।
লরেন্ট এলএ রিজজা

37

আপনার ধারণার মূল সমস্যাটি হ'ল আপনি যে কোনও কোডের জন্য পরীক্ষা লিখতে পারবেন না। কোডটি পরীক্ষামূলক হতে হবে।

অর্থাৎ আপনাকে মক ইনজেকশন করতে সক্ষম হতে হবে, আপনি যা পরীক্ষা করতে চান তা আলাদা করুন, অ্যাক্সেস স্টেট যা পরিবর্তন হয়েছে এবং নিশ্চিত হওয়া দরকার ইত্যাদি।

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


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

1
@ ফ্রানিজ নিশ্চিত, মূল সমস্যাটি হ'ল আপনি পরীক্ষাগুলি লেখার পরে নয়, কোডটি লিখেছেন এবং একই ব্যক্তি না হওয়ার মিশ্রণ এটি।
ইয়ান

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

25
@ ফ্রানিস: "যদি পরীক্ষাগুলি কোডের কোনও দিক পরীক্ষা না করে তবে কোডে এটি বাদ দেওয়া যেতে পারে।" - এটাই মূল বিন্দু. পরীক্ষাগুলি সম্পাদনযোগ্য উদাহরণ আকারে প্রয়োজনীয়তার একটি এনকোডিং। যদি এটির জন্য কোনও পরীক্ষা না হয়, তবে এটির জন্য কোনও প্রয়োজন নেই এবং এটির জন্য কোনও কোডেরও দরকার নেই
Jörg ডব্লু মিটাগ

3
@ জার্গডব্লিউমিত্যাগ যা বলেছিল তার অন্য দিকটি হ'ল: যদি আপনার পরীক্ষাগুলি "কোডের কিছু গুরুত্বপূর্ণ পরীক্ষা করে না" তবে আপনার পরীক্ষাগুলি ঠিক করা দরকার। এটি আপনার সিস্টেমে ততটাই সত্য হবে যেমনটি ট্র্যাডিশনাল টিডিডিতে।
বিটিএ

15

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

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

হ্যাঁ, অতিরিক্ত ইউনিট পরীক্ষাগুলি লিখতে একটি দ্বিতীয় দেব থাকা অর্থপূর্ণ, তবে এককভাবে একক পরীক্ষা লেখার জন্য নয় ।


7

নিম্নলিখিত পরিস্থিতিগুলির যে কোনও একটি হওয়ার সম্ভাবনা রয়েছে বলে মনে হয় - এগুলি সমস্তই অনাকাঙ্ক্ষিত:

বিশৃঙ্খলা

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

তর্ক

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

প্রসঙ্গ স্যুইচিং

এমনকি যদি ডেভেলপার বি দ্বারা লিখিত কোড পরীক্ষা করার জন্য তাদের উন্নয়ন সরাইয়া রাখা করতে ইচ্ছুক ডেভেলপার একটি - কার্যকলাপ পরিবর্তন ব্যয়ে আসে।


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


4

যখন সঙ্গে conjuntion ব্যবহৃত যুগল প্রোগ্রামিং এবং TDD- এ এই বলা হয় পিং পং প্যাটার্ন :

  • এ একটি নতুন পরীক্ষা লিখেছেন এবং দেখুন যে এটি ব্যর্থ।
  • বি পরীক্ষায় পাস করার জন্য প্রয়োজনীয় কোডটি কার্যকর করে।
  • বি পরবর্তী পরীক্ষা লিখেছেন এবং দেখুন যে এটি ব্যর্থ।
  • একটি পরীক্ষা পাস করার জন্য প্রয়োজনীয় কোড প্রয়োগ করে।

ইত্যাদি। যখন কারও ড্রাইভিংয়ের প্রয়োজন দেখা দেয় তখনই রিফ্যাক্টরিং করা হয়।

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

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


3

আমি এই পার্টিতে দেরি করে আসছি, তবে আমার মনে হয় আমার কিছু যোগ করার আছে।

এটি ইতিমধ্যে আমার কাছে অজানা কিছু পদ্ধতি হিসাবে বর্ণনা করা হয়েছে এবং সফ্টওয়্যার বিকাশে ব্যবহৃত হয়েছে?

আপনি পিয়ার টেস্টিংয়ের বর্ণনা দিচ্ছেন ।

ধরে নেওয়া যাক আমাদের কাছে বিকাশকারীদের জোড়া রয়েছে।

আহ্, ভাল ওল ' পেয়ার প্রোগ্রামিং

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

এটি পেয়ার প্রোগ্রামিং নয়।

আদর্শভাবে তারা দুটি অনুরূপ আকারের বৈশিষ্ট্যগুলিতে কাজ করবে এবং তারপরে পরীক্ষার প্রস্তুতির জন্য বিনিময় করবে।

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

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

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

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

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


সাড়া দেওয়ার জন্য এবং পিয়ার টেস্টিংয়ে আমাকে ইশারা করার জন্য আপনাকে ধন্যবাদ (আমি এটি সম্পর্কে পড়ব)।
ফ্রানিস

1

আমি ডিডিটি (ডেভলপমেন্ট ড্রাইভ টেস্টিং, ওরফে কোডের পরে টেস্ট), জোড় প্রোগ্রামিং এবং লাল-সবুজ-রিফ্যাক্টর টিডিডি প্রতিটি কয়েক বছর ধরে করেছি। আপনার দৃশ্যের প্রতি বিন্দু দ্বারা সাড়া দিতে:

পরীক্ষাগুলি এমন কেউ লিখেছেন, যিনি বাস্তবায়ন সম্পর্কে আরও দেখতে পারেন

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

জোড় প্রোগ্রামিংয়ের তুলনায় কাজটি কিছুটা দ্রুত করা উচিত (একই সাথে দুটি বৈশিষ্ট্য)

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

উভয় পরীক্ষা এবং কোড এর জন্য দায়বদ্ধ ব্যক্তি

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

কোডটি কমপক্ষে দু'জন দ্বারা পরীক্ষা করা হয়

না, এটি কেবল ব্যক্তি পরীক্ষার মাধ্যমে পরীক্ষা করে দেখেছে। আপনি যদি পরীক্ষার জন্য আরও বেশি সময় ব্যবহার করতে না চান তবে এই ক্ষেত্রে দুটি কেন থামবেন?

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

বিকাশকারীরা (এমনকি প্রবীণরাও) খুব ভাল ধারণা রাখেন যা "ভাল" কোড গঠন করে। একজনের কর্নার-কাটিং এএসএপকে কাজ করার কোডটিতে পাওয়ার জন্য অন্যটির সঠিক বৈধ উপায়। এটি দোষারোপ এবং সিস্টেম গেমিংয়ের একটি রেসিপি।

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


এটি দ্রুত হবে (সম্ভবত) কারণ আপনার "দু'জন একই" কাজ "করছেন না - তারা প্রত্যেকে নিজের কাজ করছেন এবং তারপরে পার্ট-ওয়ে অদলবদল করছেন।
জ্যাকব রায়হলে

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

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

1

আমি মনে করি যে এই ধারণার কিছু উত্সাহ আছে:

একে একে তাদের মাধ্যমে চালানো যাক।

পরীক্ষাগুলি এমন কারও দ্বারা লিখিত হয়, যিনি বাস্তবায়ন সম্পর্কে আরও দেখতে পারেন,

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

জোড় প্রোগ্রামিংয়ের তুলনায় কাজটি কিছুটা দ্রুত করা উচিত (একই সাথে দুটি বৈশিষ্ট্য)

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

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

উভয় পরীক্ষা এবং কোডই এর জন্য দায়বদ্ধ ব্যক্তি,

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

কোডটি কমপক্ষে দু'জন দ্বারা পরীক্ষা করা হয়

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

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

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

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

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

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