আপনি যখন পরিবেশটিকে পুনরুত্পাদন করতে না পারেন তখন কীভাবে পরীক্ষা এবং অপ্টিমাইজ করবেন?


17

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

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

অপ্টিমাইজেশনের বিষয়ে আমার স্বাভাবিক পদ্ধতির (পরিমাপ, কিছু চেষ্টা করুন, যথার্থতা যাচাই করুন, পার্থক্যগুলি পরিমাপ করুন, পুনরাবৃত্তি করুন) যেহেতু সমস্যাটির অংশগুলির জন্য কার্যকরভাবে আমি পদক্ষেপ 2 এবং 3 করতে পারি না (যেহেতু দৃ conc়তা এবং এর অধীনে কার্য সম্পাদন ভার). যদিও এই দৃশ্যটি অনন্য বলে মনে হচ্ছে না। এই ধরণের পরিবেশে এই ধরণের কাজটি করার সাধারণ পন্থাটি কী?

সম্পর্কিত কিছু প্রশ্ন রয়েছে:

  • এই প্রশ্নটি হার্ডওয়্যার (স্পেকট্রাম বিশ্লেষকের মতো) অনুপলব্ধ থাকার সাথে সম্পর্কিত, যা সহজেই অনুকরণ করা যায় em
  • এই প্রশ্নটি কেবল উত্পাদন পরিবেশে বিদ্যমান ত্রুটিগুলি অনুসন্ধান করার বিষয়ে, যা সহায়ক - তবে বিভিন্ন ধরণের ক্রিয়াকলাপ।

1
সংক্ষিপ্ত উত্তর: দ্বিতীয় লিঙ্কযুক্ত প্রশ্নের উত্তরগুলিও প্রযোজ্য। আরও লগিং কেবল ডিবাগিংকেই সহায়তা করে না, এটি পরীক্ষা ও অনুকূলিতকরণেও সহায়তা করবে। আপনাকে কেবল আলাদা জিনিস লগ করতে হবে, বিশেষত চলমান সময় এবং সংস্থান ব্যবহারের জন্য।
ডক ব্রাউন 15

আপনি কি উত্পাদন এবং পরীক্ষার মধ্যে উত্পাদন পরিবেশের অংশগুলি মাল্টিপ্লেক্স করতে পারেন?
প্যাট্রিক

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

2
Reproducing the environment is prohibitively costly.- শো-স্টপিং প্রোডাকশন বাগের দাম কত? 2 বাগ সম্পর্কে কি? অপ্রত্যাশিত সময়ে (সম্ভবত আপনি যখন একই সময়ে সিস্টেমে লোড রাখছেন আপনার সংখ্যাগরিষ্ঠ ব্যবহারকারী)। ন্যূনতম প্রজনন পরিবেশ স্থাপনের ব্যয়ের তুলনায় ওজন - আপনি দেখতে পাচ্ছেন যে এটি সর্বোপরি ব্যয়বহুল ব্যয়বহুল নয়।
জেস টেলফোর্ড

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

উত্তর:


11

আসলে এটি শক্ত, তবে আমি নিশ্চিত যে প্রচুর তুলনামূলক পরিস্থিতিতে এটি মূলত একটি সাংগঠনিক সমস্যা। একমাত্র টেকসই পন্থাটি সম্ভবত "এক রূপোর বুলেট" নয়, সম্মিলিত ব্যবস্থাগুলির মিশ্রণ। আপনি চেষ্টা করতে পারেন এমন কিছু জিনিস:

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

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

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

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

  • একটি প্রকল্প ডায়েরি বা সমাধান লগ রাখুন - গুরুত্ব সহকারে। প্রতিদিন আপনি পরিবেশ সম্পর্কে নতুন কিছু সন্ধান করুন, এটি লিখে রাখুন - সাফল্যের গল্পগুলির পাশাপাশি ব্যর্থতার গল্পগুলি। দু'বার একই ব্যর্থতা করবেন না।

তাই সংক্ষিপ্তসারটি হ'ল - যখন আপনি চেষ্টা-ত্রুটি নিয়ে যেতে পারেন না, তখন আপনার সেরা বিকল্পটি রক্ষণশীল, ক্লাসিক অফফ্রন্ট পরিকল্পনা এবং কিউএ কৌশলগুলি।


6

আপনি যদি লাইভ পরিবেশের পুনরুত্পাদন করতে না পারেন তবে অস্বস্তিকর বাস্তবতা হ'ল আপনি যা কিছু করেন না কেন এটি পর্যাপ্তভাবে পরীক্ষিত হবে না।

তো তুমি কি করতে পার?

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

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

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

অবশ্যই ঘরে হাতিটি হ'ল সিস্টেমগুলি সর্বদা অনুমানযোগ্য পদ্ধতিতে স্কেল করে না!

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


0

আমি পরীক্ষার পরামর্শ দেব।

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

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

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