5 روش برای انجام تست ها در روش توسعه agile با استفاده از flagهای ویژگی
چهارشنبه 18 تیر 1399تست و آزمایش کردن کدها در روش توسعه agile از اهمیت زیادی برخوردار است، ما در این مطلب درباره تست در روش توسعه agile با flagهای ویژگی صحبت می کنیم.
معماری های اپلیکیشن کلود، میکروسرویس ها، پایپ لاین های CI/CD( ادغام سازی مداوم و استقرار مداوم)، اتوماسیون های تست و زیرساخت ها به عنوان کد تمامی تکنولوژی هایی هستند که به روش توسعه agile و تیم های devops این امکان را می دهند تا به صورت مداوم اقدام به تولید کدهای مورد نیاز کنند. آنها معمولا توسعه نرم افزار از بازه های سه ماهه گرفته تا ادغام سازی های پیشرفته انجام می دهند و به صورت مداوم فعالیت خود را انجام می دهند.
توسعه دهندگان همیشه درباره این موضوع نگران بوده اند که چگونه از پایگاه کدهای خود در برابر انتشار های مداوم و پیوسته، بهره وری توسعه دهنده، توسعه ویژگی ها و ایجاد تغییرات در کدها حفاظت کنند. گیت هاب پارادایم های توسعه و انشعاب مختلفی را از جمله انشعابات ویژگی ها، انشعابات انتشار، توسعه trunk-based و جریان کاری Gitflow فراهم می کند. ساختار استراتژی های انشعاب ساختار اصلی کدها را ایجاد می کنند و سپس می توانند برای کنترل این که کدام ویژگی ها برای کاربر نهایی مستقر شوند استفاده شوند.
نکته ای مهم در روش توسعه agile
با وجود بحث های متعددی که در زمینه رویکردهای انشعاب وجود دارد یک اجماع شدید درباره این موضوع وجود دارد که تیم های توسعه با روش توسعه agile باید از ساخت انشعاب های ویژگی که به مدت طولانی اجرا می شوند جلوگیری کنند. انشعاب های ویژگی که مدت زمان طولانی اجرا می شوند در اکثر مواقع زمانی که ویژگی آماده ادغام شدن با انشعاب اصلی است ترکیب کدهای بسیار پیچیده ای را تولید می کنند.
Flag کردن ویژگی در روش توسعه agile به چه معناست؟
منشعب کردن در روش توسعه agile مستقر کردن کدها را کنترل می کند و می تواند تنظیم کند که آیا یک ویژگی می تواند در آن مستقر شود یا خیر. با این حال این یک ویژگی بسیار گسترده است چرا که یک کنترل کننده باینری نیز می تواند با فعال شدن و غیر فعال شدن نشان دهد که ویژگی می تواند در این انشعاب مستقر شود یا خیر. استفاده کردن از قابلیت انشعاب برای مستقر کردن ویژگی ها قابلیت های تیم برای کنترل کردن زمانی که کدها مستقر می شوند در مقایسه با زمانی که رهبران محصول آن را فعال کرده اند را محدود می کند.
کنترل در زمان اجرا
یکی از نکاتی که درباره روش توسعه agile وجود دارد این است که گاهی اوقات صاحبان محصول و تیم های توسعه باید در زمان اجرا برخی از ویژگی ها را مستقر کرده و دسترسی به آنها را کنترل کنند. به عنوان مثال تست و آزمایش کردن ویژگی ها با بخش کوچکی از مشتریان و یا درصدی از کاربران نهایی می تواند بسیار مفید باشد. flag کردن ویژگی ها قابلیت و مجموعه ای از ابزارها است که توسعه دهندگان را قادر می سازد تا ویژگی ها را با استفاده از flag های کنترل محدود کنند. زمانی که توسعه دهندگان کدهای ویژگی را مستقر کردند این flag ها به آنها این اجازه را می دهند تا با ویژگی کار کرده، آن را تست کنند و با ابزارهای کنترل آنها را گسترش دهند. علاوه بر این با این flag ها توسعه دهندگان می توانند مشاهده کنند که ویژگی مد نظر برای کاربران نهایی به چه شکل خواهد بود.
Flag کردن ویژگی با فعال کردن یک ویژگی به آرامی و با استفاده از یک روش کنترل شده تحویل progressive را فعال می کند. این کار همچنین تست ها و آزمایش ها را نیز مدیریت می کند. ویژگی ها می توانند با کاربران نهایی تست شوند تا میزان تاثیر و تجربه کاربری آنها مورد آزمایش قرار گیرد. Jon Noronha مدیر محصول در Optimizely می گوید: " تیم های توسعه در روش توسعه agile باید بدون آنکه بخش های دیگر را تخریب کنند به کار خود سرعت ببخشند. تحویل Progressive به این تیم ها کمک می کند تا نقاط ضعف و شکست را به بخش های کوچکتری تبدیل کرده و شعاع تاثیرگذاری این نقاط را کاهش دهند که این موضوع می تواند به کاهش نقاط شکست در کل اپلیکیشن منجر شود.
در ادامه قصد داریم چندین روش مختلف برای تیم های توسعه در روش توسعه agile که می توانند در مدیریت آزمایش های روش توسعه agile مورد استفاده قرار گیرند را مورد بازبینی قرار دهیم.
کنترل ویژگی ها در محیط های توسعه و تست
چند بار برای شما این اتفاق افتاده است که در روش توسعه agile اپلیکیشن در محیط های توسعه و یا تست به صورت اتفاقی ایمیل هایی را به کاربران داخلی ارسال کند( یا حتی در شرایط بدتر به مشتریان بیرونی این ایمیل ها را ارسال کند) تنها به این دلیل که شما تنظیمات اشتباهی را انجام داده اید؟
این مشکل تنها مربوط به تنظیمات پیکربندی ها است که در صورتی که تعداد کمی محیط توسعه و تست وجود داشته باشد به راحتی می توان آن را فعال و یا غیر فعال کرد. حال سوالی که پیش می آید این است که چه می شود اگر علاوه بر محیط های توسعه و تست یک محیط دمو نیز وجود داشته باشد که مشتریان بتوانند اقدام به تست اپلیکیشن کنند؟ چه می شود اگر شما بخواهید اپلیکیشن های در محیط دمو ایمیل هایی را به یک لیست مشخص از دامنه ها ارسال کنند و یا این که بخواهید تراکنش های مالی خاصی را به صورت آزمایشی انجام دهید؟
مشکلات کنترل ویژگی ها در محیط های توسعه و تست در روش توسعه agile
سوال دیگری که در روش توسعه agile درباره مشکلات کنترل ویژگی ها پیش می آید این است که چه می شود اگر توسعه دهندگان و یا مهندسان سیستم نتوانند این کنترل ها را داشته باشند ولی شما بخواهید که آنها را به مدیر تجاری که می تواند در محیط های مربوطه برای نیازهای تجاری مختلف با آن کار کند نمایش دهید؟
قطعا شما نمی خواهید در حالی که متغیرها، تنظیمات پیکربندی و سایر نیازهای IT بسیار زیادی وجود دارند این سطح از پیکربندی ها را در سطح کد و یا تست انجام دهید. flag کردن ویژگی یک روش ساده است که این کنترل ها را فعال می کند و می تواند بسیار ساده تر از کدنویسی ابزارهای اداری باشد.
تست های A/B از تجربه کاربری، طراحی و زبان
طراحان گاهی اوقات می خواهند که رابط کاربری و طراحی های ویژگی را با کاربران نهایی تست کنند تا سهولت استفاده و همینطور میزان تاثیرگذاری آنها را ارزیابی کنند. توسعه دهندگان با روش توسعه agile و طراحان می توانند طراحی های مختلفی را به روش های مختلف آزمایش و تست کنند تا با راه های مختلف متوجه شوند که کدام یک از این طرح ها می تواند گزینه بهتری باشد.
- فرض کنید که قصد دارید یک دکمه "خرید" را با گرافیک ها، استایل های مربوط به دکمه و متن های متفاوت پیاده سازی کنید تا متوجه شوید که کدام رویکرد می تواند کلیک بیشتری را داشته باشد.
- فرض کنیم اپلیکیشن شما این اجازه را به کاربران می دهد تا نتایج جستجوی خود را براساس ابعاد مختلف مرتب سازی کنند. یک طراح می تواند کنترل های متفاوتی را تست کند تا از قابلیت های مرتب سازی در چند لایه بهره مند شود و مشاهده کند که کاربران آزمایشی کدام یک را بیشتر می پسندند.
- اجازه دادن به کاربران برای تنظیم کنترل های خصوصی و پیکربندی اپلیکیشن می تواند کمی نکته دار باشد، به خصوص تصمیم گیری درباره سطوح دسترسی، زبان و کنترل ها می تواند مشکلاتی را به همراه داشته باشد. آزمایش کردن رویکردهای متفاوت در روش توسعه agile یک روش است تا به کاربران اجازه دهیم بیان کنند که کدام یک از رویکردها برای فهم و کنترل نیازهای آنها بهتر است.
تست کردن ابزارها و تکنولوژی های جدید
گاهی اوقات توسعه دهندگان که با روش توسعه agile کار می کنند نیاز دارند که سرویس ها، کتابخانه ها و یا کیت های توسعه نرم افزار جدید را تست کنند. در سایر موارد یک به روزرسانی در یک ابزار موجود می تواند قابلیت های مختلفی را با خود به همراه داشته باشد. صاحب یک محصول که با روش توسعه agile ساخته می شود و همینطور تیم های توسعه چگونه باید بدانند که کدام کامپوننت ها و قابلیت ها برای اپلیکیشن های مهم آماده هستند؟
آلفا و بتا تکنولوژی های جدید را در روش توسعه agile تست می کنند
یکی از راه هایی که شما را از حدس زدن درباره ویژگی های آماده در ابزارهای جدید راحت می کند پیاده سازی ویژگی ها، کنترل کردن آنها با flag های ویژگی و منتشر کردن آنها به عنوان ویژگی های آلفا می باشد. توسعه دهندگان می توانند ویژگی های آلفا را برای گروه کوچکی از کارمندان داخلی فعال کنند تا بازخورد آنها درباره ویژگی های جدید را دریافت کنند. زمانی که تیم توسعه هرگونه مشکل و یا خطری را رفع کرد صاحب محصول می تواند ویژگی را برای تست کننده های داخلی و خارجی بتا نیز فعال کند.
ارزیابی عملکرد با افزایش تدریجی دسترسی به قابلیت های جدید در روش توسعه agile
یکی از انواع تست آلفا و بتا در روش توسعه agile زمانی رخ می دهد که تیم توسعه به آرامی دسترسی به قابلیت های جدید را افزایش می دهند تا مطمئن شوند که این قابلیت ها قابل اعتماد، با عملکرد خوب و مستحکم می باشند.
متناسب با ابزاری که برای flag کردن ویژگی ها استفاده کرده اید ممکن است سطح مختلفی از اطلاعات و کنترل ها برای این کار در دسترس باشند. برخی از مواردی که به صورت پیشرفته از این قابلیت در آنها استفاده می شود را در ادامه بیان خواهیم کرد.
استفاده های پیشرفته از تست های آلفا و بتا
- اگر در روش توسعه agile خطاها شناسایی شوند تعداد کاربرانی که از قابلیت های جدید استفاده می کنند کاهش پیدا می کند تا زمانی که مشکل حل شود. این خطاها ممکن است از طریق ورودی های کاربران باشد که به صورت رسمی تایید نشده اند و یا ممکن است خطاهایی در سرویس های جدید و به روز شده ای که از آنها استفاده کرده اید باشد و یا این که ممکن است مربوط به پایگاه داده شما باشند.
- در صورتی که زمان پاسخ به درخواست کاربران بالاتر از یک حد مشخص شده باشد بنابراین میزان دسترسی به ویژگی های جدید کاهش پیدا می کند. از رویکرد مرتبط برای زمانی که تیم های توسعه در روش توسعه agile نتوانند به آرامی در دسترس بودن یک ویژگی را افزایش دهند می توانید استفاده کنید تا باعث بالا رفتن عملکرد برنامه خود شوید.
- یکی دیگر از موارد استفاده از چنین تست هایی در روش توسعه agile اعتبار سنجی پاسخ به درخواست های یادگیری ماشین و الگوریتم های هوش مصنوعی مانند chatbots، زیرساخت های زبان طبیعی، الگوریتم های تشخیص چهره و کنترل صدا اشاره کرد. اپلیکیشن ها می توانند با flag های ویژگی پیشرفته برنامه نویسی شوند تا موارد استفاده و تست و بهبود هر یک از این الگوریتم ها را کنترل کنند.
ویژگی های جغرافیایی، زبان و سایر بخش های مربوط به مشتری
یکی از نکات بسیار مهمی که باید در روش توسعه agile بدانید فعال کردن یک ویژگی متناسب با نیازهای مشتری است. به عنوان مثال یک ویژگی آماده نمایش برای کاربرانی باشد که در کشور آمریکا زندگی می کنند اما هنوز برای کاربرانی که در قاره اروپا زندگی می کنند آماده نباشد. به عنوان مثالی دیگر ویژگی هایی را در نظر بگیرید که نیازمند پیاده سازی های زبان هر کشور می باشند، flag های ویژگی در روش توسعه agile می توانند ویژگی ها را برای زبان انتخاب شده فعال کنند. صاحبان محصولات ممکن است بخواهند که ویژگی جدید را برای کاربران اولیه، مشتری های کم ریسک و یا سایر آمارهای جمعیتی کاربران ارائه دهند.
اگرچه flag های ویژگی گزینه های متعددی را برای کم کردن میزان در دسترس بودن ویژگی ها ارائه می دهند اما بسیار مهم است که از آنها در روش توسعه agile به درستی استفاده کنید. استفاده از flag های ویژگی به عنوان یک جایگزین ارزان در پیاده سازی منطق تجاری در اپلیکیشن ها به شمار می آید که به شما توصیه می کنیم حتما از آنها استفاده کنید.
- C#.net
- 1k بازدید
- 0 تشکر