ওএসএস প্রকল্পগুলিতে ইন্টিগ্রেশন টেস্ট - কীভাবে প্রমাণীকরণের সাথে তৃতীয় পক্ষগুলি পরিচালনা করবেন?


10

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

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

আমি বিশেষত এই সংহতকরণ পরীক্ষাগুলি ব্যবহারের জন্য একটি ব্যবহারকারী এবং একটি সংস্থা তৈরি করেছি ।

সমস্যা: আমি উত্স কোডের কোথাও পাসওয়ার্ডগুলি হার্ড-কোড করতে পারি না কারণ এটি ওপেন সোর্স, এবং কোডটি গিটহাবে সর্বজনীন।


আমি এখন কি করছি

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

config.Name = TestHelper.EnvVar("GithubApiTests_Name");
config.Password = TestHelper.EnvVar("GithubApiTests_PW");

( TestHelper.EnvVarহেল্পার পদ্ধতি যা একটি পরিবেশের ভেরিয়েবলের মান পায় এবং এটি উপস্থিত না থাকলে একটি ব্যতিক্রম ছুঁড়ে দেয়)

তারপরে, আমার কাছে একটি ব্যাচ ফাইল রয়েছে যা সেই পরিবেশের ভেরিয়েবলগুলি সেট করে।
আসলটি ( environment-variables.bat) আমার বিল্ড স্ক্রিপ্টে এবং পরীক্ষাগুলি কার্যকর করার আগে বলা হয়েছিল, তবে উত্স নিয়ন্ত্রণে উপেক্ষা করা হয়েছে, সুতরাং এটি আসলে আমার সংগ্রহস্থলে নেই।

কি হল উৎস নিয়ন্ত্রণ environment-variables.bat.sample, যা একই এনভায়রনমেন্ট ভেরিয়েবল সেট করে, কিন্তু জাল পাসওয়ার্ড সঙ্গে

rem copy/rename this file to environment-variables.bat

echo Setting environment variables for integration tests...

set GithubApiTests_Name=scm-backup-testuser
set GithubApiTests_OrgName=scm-backup-testorg
set GithubApiTests_PW=not-the-real-password
set GithubApiTests_Repo=scm-backup

সুতরাং আমি আমার মেশিনে ভান্ডারটি ক্লোন করতে পারি, এই ফাইলটির নতুন নামকরণ করতে পারি, আসলটির environment-variables.batদ্বারা নকল পাসওয়ার্ড প্রতিস্থাপন করতে পারি এবং সমস্ত ইন্টিগ্রেশন পরীক্ষাগুলি কাজ করবে।

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


আমি এটি সম্পর্কে কি পছন্দ না

আমি মনে করি এটি কোনও ওএসএস প্রকল্পের জন্য ভাল সমাধান নয় এবং বিশেষত এই প্রকল্পের জন্য নয় :

তত্ত্ব অনুসারে, আমার প্রকল্পের একজন অবদানকারী এই মুহুর্তে ইন্টিগ্রেশন পরীক্ষা চালাতে সক্ষম হবেন:

  • গিটহাবের নিজস্ব পরীক্ষা ব্যবহারকারী এবং পরীক্ষা সংস্থা তৈরি করা
  • কিছু পরীক্ষার সংগ্রহস্থল তৈরি করা হচ্ছে
  • environment-variables.batবিভিন্ন মান সহ তার নিজস্ব সংস্করণ তৈরি করা

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

সুতরাং পরে যখন আমি আরও হোস্টের সমর্থন সমর্থন করি তখন পরিবেশের ভেরিয়েবলের সংখ্যা বৃদ্ধি পাবে। সমস্ত ইন্টিগ্রেশন টেস্টগুলি
কার্যকর করতে সক্ষম হওয়ার জন্য , একজন সম্ভাব্য অবদানকারী তার নিজস্ব ব্যবহারকারী, সংস্থা এবং গিটহাব, বিটবকেট, গিটল্যাব, এবং পরীক্ষাগুলি তৈরি করবেন এবং আরও কতজন জানেন এবং সেগুলি সমস্ত তার সংস্করণে যুক্ত করবেন। environment-variables.bat

কোডটি সর্বজনীন এমন কোনও প্রকল্পে কীভাবে এটি করা যায় তার থেকে আরও ভাল সমাধান আছে?

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

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

উত্তর:


2

আমি মনে করি আপনার বর্তমান সেটআপটি ঠিক আছে, তবে আমি কয়েকটি সমন্বয় করব।

সমস্ত ইন্টিগ্রেশন টেস্টগুলি সম্পাদন করতে সক্ষম হতে, একজন সম্ভাব্য অবদানকারী তার নিজস্ব ব্যবহারকারী, সংস্থা এবং গিটহাব, বিটবকেট, গিটল্যাব, এবং পরীক্ষাগুলি তৈরি করতে পারবেন এবং আরও কত কী জানেন এবং সেগুলি তার পরিবেশ-পরিবর্তনশীলগুলিতে যুক্ত করবেন would .bat সংস্করণ।

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

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

নিয়মিত / বিশ্বস্ত অবদানকারীদের জন্য, আপনি তাদের আপনার প্রকল্পে প্রকৃত অবদানকারী করতে পারেন যা পিআর করার আগে তাদের শাখায় সিআই চালানোর অনুমতি দেয় ।

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

আমি প্রস্তাবিত সমন্বয়গুলি হ'ল:

প্রথমে আপনার বেশিরভাগ পরীক্ষার কভারেজ ইউনিট পরীক্ষা করুন। এগুলি আপনার কোডবেসের সমস্ত শাখা কভার করা উচিত।

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

// Test failed authentication to GitHub
val server = new WebServer("localhost", 9453, { request =>
    return Response(401, "unauthenticated")
})
server.start()
val backupService = new GitHubBackupService("http://localhost:9453")
backupService.backup must throw UnauthenticatedException()
server.stop()

এই পরীক্ষাগুলি আরও জটিল হবে, তবে আপনাকে অনুমতি দেবে

  1. জাল অ্যাকাউন্ট এবং ভান্ডার তৈরি না করে পরীক্ষা করুন
  2. পরীক্ষার ব্যর্থতার শর্তগুলি যা সত্যিকারের গিটহাবের সাথে অনুকরণ করা শক্ত। উদাহরণস্বরূপ 502 টি প্রতিক্রিয়া, সংযোগের সময়সীমা, অস্বাভাবিক / অংশীদারিযোগ্য প্রতিক্রিয়া সংস্থা।

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

অবশেষে, পরীক্ষাগুলি নথিভুক্ত করুন এবং কীভাবে এটি আপনার পরীক্ষার নথিতে তাদের চালানো যায় যাতে অবদানকারীরা তাদের চালনা চয়ন করতে পারেন।

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