stanford-oval/wikipedia huggingface dataset:
توسعه آزمون‌محور
چرخه توسعه آزمون محور > ۵. کد را Refactor کن

روشن است که کد کل برنامه باید هر چند وقت یک بار تمیز و مرتب شود تا از ایجاد کد کثیف اجتناب شود و امکان بهبود مناسب و سریع در آینده فراهم باشد. در این گام قصد داریم دقیقاً همین کار را انجام دهیم. در این گام به‌طور ویژه لازم است به ملاحظات توسعه همانند رعایت وراثت و خوانایی و امکان نگهداری مناسب کد و الگوهای طراحی برنامه توجه داشته باشیم.
چرخه توسعه آزمون محور > ۶. گام‌های ۱ الی ۵ را (برای هر ویژگی جدید که اضافه می‌کنی) تکرار کن

برای هر ویژگی جدید گام‌های فوق را تکرار می‌کنیم.
مزایای توسعه آزمون محور

یک مطالعه در سال ۲۰۰۵ به این نتیجه رسید که استفاده از روش توسعه آزمون محور به معنی نوشتن تعداد بیشتری تست هست و برنامه‌نویسانی که تعداد بیشتری تست می‌نویسند (برخلاف تصور عموم) بازدهی بیشتری دارند. همین‌طور برنامه‌نویسانی که از روش توسعه آزمون محور بهره می‌بردند گزارش کردند که به تعداد دفعات کمتری نیاز به استفاده از Debugger در کار خود داشتند، که این امر به نوبه خود موجب بهبود و افزایش بهره‌وری آنها می‌شود. چنین کاهشی در تعداد دفعات نیاز به استفاده از Debugger طبیعی به نظر می‌رسد، چرا که هر گام از توسعه و هر ویژگی جدیدی که به برنامه افزوده می‌شود خود همراه با تست در محل می‌باشد و تا زمانی که تست مربوطه و تمام تست‌های پیشین برنامه پاس نشوند به مرحله بعد نمی‌رویم. همین‌طور گزارش شده‌است که در روش توسعه آزمون محور هرگاه به خطایی برخورد کنیم معمولاً بازگشت به آخرین نسخه بدون خطا و شروع مجدد کار بهینه تر از استفاده از Debugger است که این امر عملاً نیاز به دیباگ کردن کد و هزینه‌های مالی و زمانی نگهداری و تعمیر کد را کاهش می‌دهد.
از ویژگی‌ها و مزیت‌های دیگر این متدولوژی می‌توان موارد زیر را نام برد:
مزایای توسعه آزمون محور > ۱. بررسی کامل‌تر در ابتدا

این فرایند باعث می‌شود قبل از نوشتن برنامه، به جنبه‌های مختلف نیازمندی‌ها فکر کنیم و مواردی که روش‌های موجود می‌توانند شکست بخورند را بررسی کرده و در داخل آزمون‌ها در نظر بگیریم.
مزایای توسعه آزمون محور > ۲. متمرکز کردن اهداف

برنامه‌نویس هدف خود را با داشتن آزمون‌ها به روشنی می‌داند و می‌توانند صرفاً با تمرکز بر روی همین آزمون‌ها، از یک هدف و نیازمندی مبهم خود را دور کند.
مزایای توسعه آزمون محور > ۳. کاهش هزینه‌ها در نهایت

ممکن است TDD در ابتدا پرهزینه به نظر بیاید، اما به دلیل این که فرایند آزمون مرحله به مرحله و برای بخش‌های مختلف برنامه و بر اساس نیازمندی‌های مورد نیاز است، احتمال وارد شدن هزینه سنگینی که به خاطر عدم تطابق برنامه با نیازها پرداخت خواهد شد کاهش میابد
مزایای توسعه آزمون محور > ۴. توسعه گام به گام

در بسیاری از موارد پیش آماده که برنامه را کامل نوشتیم و بعد به آزمون آن پرداختیم و به اشکالی برخوردیم، ولی چون از سر منشأ مشکلات به صورت دقیق آگاه نبودیم، نتوانستیم آن‌ها را رفع کنیم. توسعه آزمون محور این مسئله را نیز برای ما برطرف می‌کند.
مزایای توسعه آزمون محور > ۵. مستندسازی

اگر از عملکرد تابعی در برنامه اطمینان نداشته باشیم، می‌توانیم با بررسی آزمون مربوط به آن تابع و پاسخ مد نظر، شهودی از رفتار مورد انتظار آن تابع داشته باشیم.
مزایای توسعه آزمون محور > ۶. کدهای مرتب‌تر

با توجه به این که از رفتار تابع‌ها به صورت مجزا می‌توان اطمینان یافت، می‌توان refactoring را به صورت آنی‌تری انجام داد، همچنین سطح‌های دسترسی توابع (خصوصی و عمومی) را پس از اطمینان از صحت درستی به صورت درجا مشخص کنیم و مجبور نشویم برای تست یک تابع در توابع دیگر این سطح دسترسی‌ها را تغییر دهیم. استفاده از TDD منجر به نوشتن کدی می‌شود که تضمین می‌کند که هر بخش از کد، انجام وظایف خود را با دقت و صحت بالا انجام می‌دهد. این روش کمک شایانی می‌کند تا با اعتماد بیشتر به کدی که نوشته‌شده‌است، بتوانید آن را بهبود دهید. مخصوصاً از آن‌جا که شما در ابتدا کدی می‌نویسید که تست را پاس کند و سپس آن را refactor می‌کنید، مطمئن خواهید بود که کد شما شامل قسمت‌هایی که اضافه باشند و نیاز نشوند، نمی‌باشد و همچنین کد شما بهینه و مرتب و منطبق بر اصول clean code می‌باشد.
مزایای توسعه آزمون محور > ۷. کاهش هزینهٔ زمانی رفع مشکلات کد و دیباگ کردن آسان‌تر

با استفاده از TDD از آن‌جا که از مراحل ابتدایی تست‌ها نوشته می‌شوند، خطاها در مراحل بسیار زودتری شناخته می‌شوند و در مراحل زودتری معمولاً حل می‌شوند. این کار باعث می‌شود که نیاز به صرف زمان و هزینه برای رفع خطاهای بزرگ در مراحل بعدی کاهش می‌یابد. این به معنی صرفه‌جویی در زمان و منابع می‌باشد و سرعت توسعهٔ محصول نیز در این حالات نسبت به حالت عادی که زمان زیادی را برای دیباگ کردن صرف می‌کنیم به‌طور قابل توجهی بیشتر می‌شود.
مزایای توسعه آزمون محور > ۸. Test Coverage بالا و تضمین بیشتر از نرم‌افزار

با استفاده از TDD از آن‌جا که برای هر فیچری شما تست دارید، پس درصد بخشی از کد که به وسیلهٔ تست‌ها پوشش داده می‌شوند و تست می‌شوند بیشتر از سایر متودولوژی‌ها می‌باشد. همچنین از آن‌جا که برنامهٔ ما با unit testهای مختلف یا به‌طور کلی آزمون‌های مختلفی سنجیده می‌شود، می‌توانیم اطمینان خوبی از عملکرد آن داشته باشیم.
محدودیت‌ها و معایب توسعهٔ تست محور > ۱. ناتوانی در استفادهٔ عملی

در شرایط پذیرش و استفاده در صنعت، موانع فنی زیادی در هنگام پیاده‌سازی وجود دارد علاوه بر این که درک کامل این که چگونه باید آن را به کار گرفت، مشکل است و برداشت‌های متفاوتی از آن میان افراد مختلف وجود دارد؛ بنابراین، استفاده عملی از آن بسیار کم است که می‌توان آن را به عنوان یکی از معایب TDD دید. طبق بررسی‌ها تنها ۱۲ درصد از TDD به روش صحیح استفاده می‌کنند. احتمالاً با دستورعمل‌هایی که نحوهٔ درست پیاده‌سازی را پیشنهاد می‌دهند و افزایش دانش صنعت، بتوان این مورد را کمی بهبود بخشید.
محدودیت‌ها و معایب توسعهٔ تست محور > ۲. سرعت توسعه

TDD ممکن است باعث کاهش سرعت توسعهٔ کد شود. طراحی و نوشتن تست‌ها به تنهایی زمان‌بر است و ممکن است در ابتدا توسعهٔ کد و پیشروی را به‌طور قابل توجهی کندتر کند. علاوه بر این، این روش نیازمند تجربه و آموزش زیادی می‌باشد تا بهره‌وری بالایی از آن به‌دست آید. به همین دلیل، توسعه‌دهندگان جدید ممکن است برای استفاده از TDD نیاز به یادگیری و تسلط بیشتری داشته باشند.
محدودیت‌ها و معایب توسعهٔ تست محور > ۳. پیچیدگی بیشتر در فرایند توسعه و افزایش هزینه در برخی موارد

یکی دیگر از معایب TDD، ایجاد پیچیدگی در فرایند توسعه است. این روش نیازمند توجه و هماهنگی بیشتری در نوشتن تست‌ها، پیاده‌سازی کدها و اجرای تست‌ها است. همچنین، برای توسعه‌دهندگانی که به سیستم وارد می‌شوند، ممکن است برای درک کامل فرایند نیاز به زمان و تلاش و توجه بیشتری داشته باشند. این می‌تواند باعث کاهش کارایی و افزایش هزینه توسعه شود.
مقایسهٔ توسعهٔ مبتنی بر آزمون با دیگر متدولوژی‌ها

در این بخش، توسعه مبتنی بر آزمون را با روش‌های سنتی مانند توسعه مبتنی بر نیازمندی‌ها (Requirement-driven Development) و توسعه مبتنی بر مستندات (Documentation-driven Development) مقایسه می‌کنیم.
در توسعه مبتنی بر نیازمندی‌ها، نرم‌افزار بر اساس نیازمندی‌های کاربران و مشتری‌ها فنی توسعه می‌یابد. در این روش، ابتدا نیازمندی‌ها تعریف می‌شوند و سپس کد نوشته می‌شود تا نیازمندی‌ها را برآورده کند. تست‌ها و آزمون‌ها نیز پس از نوشتن کد، اجرا می‌شوند. این رویکرد ممکن است باعث ایجاد تست‌های ناکارآمد و کاهش کیفیت نرم‌افزار شود. در مقابل، توسعه مبتنی بر آزمون با تعریف تست‌ها در مرحله ابتدایی توسعه، از کاهش خطاها و بهبود کیفیت و قابلیت اطمینان نرم‌افزار بهره می‌برد.
در توسعه مبتنی بر مستندات، نرم‌افزار بر اساس مستندات و مشخصات فنی توسعه می‌یابد. در این روش، مستندات تهیه می‌شوند و بر اساس آن‌ها نرم‌افزار پیاده‌سازی می‌شود. تست‌ها و آزمون‌ها نیز بعد از نوشتن کد، اجرا می‌شوند. اما ممکن است در این رویکرد، تست‌ها برای بررسی جوانب‌های مختلف نرم‌افزار کافی نباشند و خطاهای مختلفی در فرایند توسعه رخ دهد. در مقابل، توسعه مبتنی بر آزمون با تعریف تست‌ها و سناریوهای آزمون کاملتر، تمام جوانب و قابلیت‌های نرم‌افزار را بررسی کرده و از کیفیت و عملکرد صحیح نرم‌افزار اطمینان حاصل می‌کند.
مطالعات نشان داده‌اند که استفاده از توسعه مبتنی بر آزمون منجر به کاهش خطاها، اشکالات و باگ‌های نرم‌افزار، افزایش کیفیت و عملکرد آن، کاهش هزینه‌های ناشی از خطاها و تست‌های دستی و افزایش رضایت کاربران می‌شود. در واقع، توسعه مبتنی بر آزمون با استفاده از رویکرد طراحی آزمون اول و پیاده‌سازی کد بر اساس آزمون‌ها، موجب تضمین عملکرد صحیح و قابل اعتماد نرم‌افزار و کاهش خطاها می‌شود.
با توجه به مزایای مذکور و مطالعات انجام شده در زمینه توسعه مبتنی بر آزمون، این روش به عنوان یک روش مؤثر در توسعه نرم‌افزار، با روش‌های سنتی مانند توسعه مبتنی بر نیازمندی‌ها و مستندات قابل مقایسه است و بهبود قابل توجهی در کیفیت و عملکرد نرم‌افزارها را به همراه دارد.
فریم‌ورک‌های توسعهٔ مبتنی بر آزمون

در این بخش قصد داریم چند نمونه از فریم‌ورک‌هایی که برای توسعهٔ مبتنی بر آزمون وجود دارد را معرفی کنیم. برای زبان‌های برنامه‌نویسی مختلف که هر کدام ویژگی‌های خاص خود را دارند، فریم‌ورک‌های مختلفی وجود دارد که در این بخش به بررسی تعدادی از محبوب‌ترین آن‌ها می‌پردازیم:
csUnit: فریم‌ورک csUnit یک ابزار آزاد و متن‌باز برای تست پروژه‌های NET. است و طوری طراحی شده‌است تا برای تمام زبان‌های .NET مانند C# و C++ کار کند. از دیگر فریم‌ورک‌های محبوب توسعهٔ مبتنی بر آزمون برای زبان‌های NET. می‌توان به NUnit اشاره کرد.
PyUnit: یک ابزار استاندارد آزمون واحد پروژه‌های پایتون است که توسط کنت بک و اریک اما طراحی شده‌است. در پکیج‌های پایتون با نام unittest می‌توان از این ابزار استفاده کرد. PyUnit از موارد آزمون و ابزار اجرای تست (test runners) پشتیبانی می‌کند. در PyUnit شما می‌توانید موارد آزمون را طوری سازماندهی کنید که رشته‌های تعدادی از آن‌ها با ویژگی‌های یکسان اجرا شوند.
JUnit: یک ابزار آزمون واحد برای زبان برنامه‌نویسی جاوا است. JUnit بخش مهمی از توسعهٔ مبتنی بر آزمون است و از خانواده فریم‌ورک‌های آزمون واحد به اسم xUnit می‌باشد.
TestNG: یک فریم‌ورک محبوب تست برای زبان برنامه‌نویسی جاوا است که به کاربران اجازهٔ اجرای آزمون‌های خودکار برای اپلیکیشن‌های وب را می‌دهد. این فریمورک متن‌باز است و قابلیت‌های بیش‌تری نسبت به JUnit دارد که باعث افزایش محبوبیت آن در برنامه‌نویسان زبان جاوا شده‌است. هم‌چنین می‌توان با استفاده از این فریم‌ورک به همراه Selenium که یک ابزار برای مرور خودکار صفحات وب است، تست‌های خودکار قدرتمندی برای اپلیکیشن‌های وب ایجاد کرد.
Rspec: یک فریم‌ورک انجام آزمون برای زبان برنامه‌نویسی ruby است.
کارهای آزمون محور

روش آزمون محور (به انگلیسی: Test-driven Work) در خارج از حیطه توسعه نرم‌افزار نیز به کار گرفته شده‌است. این روش تحت عنوان کار آزمون محور در تیم‌های تولیدی و خدماتی مورد استفاده قرار گرفته‌است. در کار آزمون محور همانند توسعه نرم‌افزار آزمون محور، تیم‌ها تعداد آزمون کنترل کیفیت برای هر جنبه از موضوع کار طراحی می‌کنند و سپس به ارزیابی آن و طراحی جهت ارضای آن می‌پردازند تا موفق شوند آن را پاس کنند.
شش گام ذکر شده در توسعه نرم‌افزار آزمون محور با تغییراتی جزئی به شکل زیر برای کار آزمون محور نیز به کار گرفته می‌شوند:
"افزودن چک" به جای "افزودن آزمون
"اجرای تمام چک‌هاً به جای "اجرای تمام آزمون‌ها
"انجام کار" به جای "نوشتن کد
"اجرای تمام چک‌هاً به جای "اجرای تمام آزمون‌ها
"کار را مرتب کن" به جای "کد را Refactor کن
«گام‌های ۱ الی ۵ را (برای هر ویژگی جدید که اضافه می‌کنی) تکرار کن» (بدون تغییر نسبت به TDD)
روش‌های برتر در توسعهٔ مبتنی بر آزمون

در این قسمت تعدادی از روش‌های برتر (best practices) توسعهٔ مبتنی بر آزمون را بررسی می‌کنیم:
فهم واضح نیازمندی‌ها هنگام شروع: برای شروع، فهم دقیق و واضحی از نیازمندی‌های ویژگی‌ای که قصد توسعهٔ آن را دارید به دست آورید. این کار به شما کمک می‌کند تا تست‌های متمرکز و مرتبط بنویسید.
نوشتن تست‌های ریز: هر تست باید روی یک رفتار یا کارایی مشخص تمرکز کند. تست‌های خود را کوتاه و متمرکز و تنها مربوط به یک جنبه از کد بنویسید. این کار خوانایی و نگهداری تست‌ها را راحت‌تر می‌کند.
ساده‌ترین موارد آزمون را اول بنویسید: کار خود را با نوشتن ساده‌ترین آزمون ممکن که خطا می‌دهد شروع کنید. این به شما کمک می‌کند تا سنگ بزرگی در مقابل خود نبینید و بتوانید با آرامش و دقت بیش‌تری کار کنید.
برای حالت‌های خاص تست بنویسید: برای حالت‌های غیر معمول که می‌تواند شامل مرز بین دو سناریوی مختلف یا ورودی‌های خاص باشد، تست بنویسید. در این حالت‌ها پتانسیل وقوع خطا وجود دارد و می‌تواند منجر به شکست شود.
به‌طور مرتب بازآرایی کنید: بعد از اینکه یک تست با موفقیت پاس می‌شود، مقداری زمان برای بازآرایی و بازسازی کد و بهبود طراحی آن، بدون اینکه رفتار آن تغییر کند بگذارید. این کار به تمیز نگه داشتن و داشتن یک پروژه قابل نگهداری کمک می‌کند.
روند اجرای تست‌ها را سریع نگه دارید: اجرای تست‌های شما باید از سرعت بالایی برخوردار باشد تا بتوانید سلامت کد خود را به سرعت بررسی کنید. سرعت بالای اجرای تست‌ها اجازه می‌دهد تا سرعت توسعهٔ بیشتری داشته باشید و مشکلات را سریع‌تر متوجه شوید.
خودکارسازی تست‌ها: از فریم‌ورک‌ها و ابزارهای خودکارسازی تست‌ها استفاده کنید تا تست‌های خود را بتوانید به صورت خودکار اجرا کنید. این کار به شما اجازه می‌دهد تا تست‌های خود را بارها و بارها به راحتی اجرا کنید و آن‌ها را با جریان کاری خود ادغام کنید و مطمئن شوید که تست‌های مطمئن و قابل اطمینانی دارید.
به صورت پیوسته تست‌های خود را اجرا کنید: تست‌های خود را با محیط توسعه ادغام کنید و خطوط continuous integration یا CI بسازید تا به صورت خودکار، هر زمان که کد تغییر می‌کند، تست‌ها را اجرا کند و نتیجه را به شما اطلاع دهد. این کار به شما کمک می‌کند که در صورت فراموشی اجرای تست‌ها، در صورتی که تست‌ها پاس نمی‌شوند، کد شما وارد مرحلهٔ تحویل به مشتری نشود و تست‌ها به صورت پیوسته اجرا شوند.
تست‌هایی که شکست می‌خورند باید شما را به توسعه هدایت کنند: وقتی یک تست خطا می‌دهد، آن تست باید به شما راهنمایی کند که نیاز است کدام بخش از کد را بررسی کنید و روی آن کار کنید. باید بتوانید آن خطا را تحلیل کنید، دلیل آن را شناسایی کنید و کدی که مشکل را به وجود آورده‌است را درست کنید. شکست تست‌ها یک بازخورد ارزشمند برای بالا بردن کیفیت کد است.
نمونه‌های استفاده از توسعهٔ مبتنی بر آزمون در جهان واقعی

در حالی که درک مفاهیم و اصول TDD بسیار مهم است، مشاهدهٔ کاربرد عملی آن در سناریوهای دنیای واقعی، بینش ارزشمندی را در مورد مزایا و اثربخشی آن ارائه می‌دهد. در این بخش، مجموعه‌ای از نمونه‌های واقعی را که در آن TDD با موفقیت به کار گرفته شده‌است، بررسی می‌کنیم و نشان می‌دهیم که چگونه این رویکرد فرایند توسعه نرم‌افزار را متحول کرده‌است.
نمونه‌های استفاده از توسعهٔ مبتنی بر آزمون در جهان واقعی > مبدل ارز

از توسعه تست محور می‌توان برای ساخت یک مبدل ارز استفاده کرد. این فرایند با نوشتن یک تست شکست‌خورده شروع می‌شود که رفتار مورد نظر مانند تبدیل دلار به یورو را تعریف می‌کند. اجرای تست در ابتدا شکست را تأیید می‌کند و اطمینان حاصل می‌کند که آزمایش به‌طور دقیق عملکرد مورد نظر را هدف قرار می‌دهد. در مرحلهٔ بعد، حداقل کد برای گذراندن آزمون پیاده‌سازی می‌شود و پس از آن مجدداً آزمون برای اطمینان از موفقیت آن اجرا می‌شود. بازآرایی مداوم امکان بهبود کد را بدون تغییر رفتار فراهم می‌کند. افزودن مکرر موارد آزمایشی بیش‌تر، اعتبارسنجی کامل عملکرد تبدیل ارز را ممکن می‌سازد و در نتیجه یک سیستم قابل اعتماد و دقیق ایجاد می‌کند.
نمونه‌های استفاده از توسعهٔ مبتنی بر آزمون در جهان واقعی > بازی بولینگ

استفاده از TDD برای ایجاد یک سیستم امتیازدهی برای یک بازی بولینگ، اطمینان و دقت را تضمین می‌کند. توسعه‌دهندگان با شروع از تست‌های شکست‌خورده، منطق مورد نیاز برای گذراندن تست‌ها را به صورت تدریجی پیاده‌سازی می‌کنند. ماهیت تکرارشوندهٔ TDD امکان بازخورد و بهبود مستمر را فراهم کرده و مکانیزم امتیازدهی قوی را تضمین می‌کند. اصلاح مجدد کد باعث حفظ وضوح و سادگی و رعایت اصول کد تمیز می‌شود. با پیروی از این رویکرد، توسعه‌دهندگان می‌توانند با اطمینان سیستم امتیازدهی بازی بولینگ را بسازند و اصلاح کنند.
نمونه‌های استفاده از توسعهٔ مبتنی بر آزمون در جهان واقعی > اعتبار سنجی ایمیل

در پروژهٔ توسعهٔ نرم‌افزار مایکروسافت، TDD می‌تواند برای پیاده‌سازی یک مؤلفهٔ اعتبارسنجی ایمیل قوی اعمال شود. فرایند TDD با نوشتن یک تست شکست‌خورده شروع می‌شود که رفتار تابع اعتبارسنجی ایمیل را تأیید می‌کند. آزمون اولیه می‌تواند قالب‌های ایمیل معتبر را بررسی کند و قالب‌های نامعتبر را رد کند. با نوشتن حداقل کد مورد نیاز برای قبولی در آزمون، توسعه‌دهندگان می‌توانند منطق اعتبارسنجی ایمیل را با استفاده از فناوری‌های Microsoft.NET پیاده‌سازی کنند. اجرای تست تضمین می‌کند که کد به درستی عمل می‌کند. تکرارهای بیشتر شامل اضافه کردن تست‌های بیش‌تر، مانند بررسی موارد لبه و مدیریت فرمت‌های مختلف ایمیل است. TDD تضمین می‌کند که مؤلفهٔ تأیید اعتبار ایمیل قابل اعتماد، دقیق است و می‌تواند سناریوهای مختلفی را در اکوسیستم Microsoft.NET مدیریت کند.
نمونه‌های استفاده از توسعهٔ مبتنی بر آزمون در جهان واقعی > احراز هویت کاربر

در یک محیط توسعهٔ Microsoft.NET، توسعهٔ مبتنی بر آزمون می‌تواند برای توسعهٔ یک ماژول احراز هویت کاربر برای یک برنامه استفاده شود. این فرایند با نوشتن تست‌هایی آغاز می‌گردد که قابلیت‌های ورود و ثبت نام کاربر را با استفاده از فناوری‌ها و چارچوب‌های مایکروسافت تأیید می‌کند. تست‌های ناموفق تضمین می‌کنند که رفتار مورد نظر به درستی هدف قرار گرفته‌است. سپس حداقل کد مورد نیاز برای قبولی در آزمون‌ها با استفاده از ابزار Microsoft.NET پیاده‌سازی می‌شود. با اجرای تست‌ها، توسعه‌دهندگان می‌توانند منطق ورود و ثبت نام در اکوسیستم مایکروسافت را تأیید کنند. گسترش مکرر مجموعهٔ آزمایشی سناریوهایی مانند قدرت رمز عبور، بازیابی حساب و کنترل دسترسی مبتنی بر نقش را پوشش می‌دهد و از قابلیت‌های Microsoft.NET بهره می‌برد. TDD یک سیستم احراز هویت کاربر ایمن و قابل اعتماد را با اعتبارسنجی کامل کد پیاده‌سازی شده در برابر موارد آزمایشی با استفاده از فناوری‌های مایکروسافت تضمین می‌کند.
آیندهٔ توسعهٔ مبتنی بر آزمون

آیندهٔ توسعهٔ مبتنی بر آزمون چشم‌اندازهای امیدوارکننده‌ای دارد زیرا شیوه‌های توسعهٔ نرم‌افزار همچنان در حال تکامل هستند. مطالعه‌ای که در انجام شده مزایای TDD را در محیط‌های صنعتی در دنیای واقعی به نمایش گذاشته‌است. این تحقیق نشان می‌دهد که TDD نه تنها کیفیت کد را بهبود می‌بخشد، بلکه چگالی خطا یا defect را کاهش می‌دهد و بهره‌وری توسعه‌دهندگان را افزایش می‌دهد. این یافته‌ها پتانسیل TDD را برای شکل‌دادن به آیندهٔ توسعهٔ نرم‌افزار با توانمند ساختن تیم‌ها برای ساختن نرم‌افزارهایی با کیفیت بالاتر و کارآمدتر نشان می‌دهد.
همان‌طور که سیستم‌های نرم‌افزاری پیچیده‌تر می‌شوند، اهمیت تضمین قابلیت اطمینان و امنیت آن‌ها بالاتر می‌رود. کتاب به ساختن نرم‌افزارهای قوی و انعطاف‌پذیر تأکید می‌کند. با نوشتن تست‌ها قبل از پیاده‌سازی کد، توسعه‌دهندگان می‌توانند نقص‌ها و آسیب‌پذیری‌های طراحی را در مراحل اولیهٔ توسعه کشف کنند و احتمال ایجاد نقص‌های مهم را کاهش دهند. این رویکرد پیشگیرانه برای تست کردن با اصول تست Shift-left و DevSecOps همسو می‌شود؛ جایی که امنیت و آزمایش از همان ابتدا در چرخهٔ عمر توسعهٔ نرم‌افزار یکپارچه شده‌است. از آن‌جایی که صنعت نرم‌افزار همچنان امنیت و قابلیت اطمینان را در اولویت قرار می‌دهد، TDD آماده است تا نقش مهمی در تقویت نرم‌افزار در برابر تهدیدات احتمالی ایفا کند.
ظهور معماری میکروسرویس‌ها و محاسبات ابری، شیوهٔ ساخت و استقرار سیستم‌های نرم‌افزاری را متحول کرده‌است. ماهیت تکرارشونده و مبتنی بر بازخورد TDD با چابکی و مقیاس‌پذیری میکروسرویس‌ها هماهنگ است. با نوشتن تست‌ها در ابتدا و طراحی APIها بر اساس نیازهای مشتری، توسعه‌دهندگان می‌توانند اطمینان حاصل کنند که میکروسرویس‌ها به درستی کار می‌کنند و به‌طور یکپارچه در یک سیستم بزرگتر ترکیب می‌شوند. از آنجایی که سازمان‌ها به پذیرفتن میکروسرویس‌ها و معماری‌های بومی ابری ادامه می‌دهند، TDD پایهٔ محکمی برای ساخت سرویس‌های ماژولار که می‌توانند به‌طور مستقل آزمایش و اجرا شوند، فراهم می‌کند.
یک نمایش گرافیکی از چرخه حیات گرافیکی توسعه آزمون محور (test-driven development lifecycle)
فرایند پنج مرحله‌ای دقیق‌تر برای توسعه تست محور
دروار (دامغان)

| دروار | دروار |
| --- | --- |
روستا: روستا
کشور: ایران
استان: سمنان
شهرستان: دامغان
بخش: امیرآباد
دهستان: تویه دروار
حکومت: حکومت
 • دهیار: روح‌الله ملک جعفریان
جمعیت: ۴۷۸ نفر (سرشماری ۹۵)
پیش‌شمارهٔ تلفن: ۳۵۳۷
دَرْوار روستایی در دهستان تویه دروار بخش امیرآباد شهرستان دامغان استان سمنان ایران است.
این روستا مرکز دهستان تویه دروار است. دروار در ۵۲ کیلومتری شمال غربی دامغان جای دارد.
این روستا زادگاه پدری محسن تنابنده بازیگر ، کارگردان و نویسنده مشهور سینمای ایران است .
این روستا از طریق گردنه بشم و جاده سمنان - کیاسر به استان مازندران راه دارد و فاصله آن از جادهٔ اصلی تهران مشهد، ۱۲ کیلومتر می‌باشد. ارتفاع روستا از سطح دریا ۱٬۵۵۰ متر است.
مردم دروار به گویش درواری که آمیخته‌ای از واژه‌های محلی،ومازندرانی  صحبت می‌کنند.
جمعیت

بر پایه سرشماری عمومی نفوس و مسکن در سال ۱۳۹۵ جمعیت این مکان765 نفر (222خانوار) بوده‌است.
| جمعیت تاریخی> سال | جمعیت تاریخی> جمعیت | جمعیت تاریخی> ±% |
| --- | --- | --- |
| ۱۳۸۵ | ۷۰۹ | —     |
| ۱۳۹۰ | ۵۹۷ | ۱۵٫۸٪− |
| ۱۳۹۵ | ۴۷۸ | ۱۹٫۹٪− |
تمدن مایا

| 0 | 1 |
| --- | --- |
نقشه‌ای از تمدن مایا: نقشه‌ای از تمدن مایا
مکان: شبه جزیره یوکاتان جنوب مکزیک و نواحی امروزی گواتمالا، بلیز و السالوادور
دوران: ۱۵۰۰ پیش از میلاد – ۱۵۴۶ میلادی
شهرهای مهم: پالنکه، چیچن ایتزا، تیکال، مایاپان، کوپان، تئوتی هواکان
مایا نام گروهی از اقوام سرخ‌پوست در جنوب مکزیک و شمال آمریکای مرکزی و نام تمدنی قدیمی در همین منطقه است.
مایاها که از مشهورترین قبایل سرخپوست بودند، معمولاً شهرهایشان را در دل جنگل‌های بارانی می‌ساختند. حوزه زندگی و فعالیت مایاها حدود جنوبی کشور مکزیک و نیز سرتاسر گواتمالا و السالوادر را شامل می‌شد.
قوم مایا پدیدآورنده یکی از تمدن‌های بسیار پیشرفته آمریکای مرکزی در دوران پیشاکلمبی بود که دست‌آوردهای بسیار چشمگیری در هنر، معماری، ستاره‌شناسی و ریاضیات داشته است. هم‌اکنون نیز گروه‌هایی از اقوام مایا در مکزیک و گواتمالا به‌سر می‌برند. مایاها با بهره‌گیری از تمدن‌های گذشته خود نظیر اولمک توانستند در خلال سال‌های۲۵۰ تا ۹۰۰ پس از میلاد تمدنی عظیم را در آمریکای مرکزی پایه‌گذاری نمایند. تاریخ مایاها به سه دوره مهم بخش‌بندی شده است و دوران پیشاکلاسیک یا زندگی ابتدایی و دوران کلاسیک یا عصر طلایی و دوره پساکلاسیک یا افول این تمدن را شامل می‌شود. این قوم به گویش‌های متعدد زبان مایایی تکلم می‌کردند و نوعی خط ابتدایی هیروگلیفی نیز داشتند که آثاری را به آن می‌نوشتند. تمدن مایا به دست اقوام مجاور ضعیف شد و سرانجام با هجوم اسپانیایی‌ها از میان رفت. پیش از این فروپاشی، مایاها به یک‌باره تمدن و شهرهای عظیم را رها کردند و به دامان کوهستان‌ها پناه بردند که دلیل این رویداد به‌سبب ازمیان‌رفتن آثار مکتوب آن دوره و طرح نظریات گوناگون، هنوز مشخص نیست. پس از آن تمدن مایا رها شد و اقتدار مایاهای کوهستان نیز ابتدا به دست آزتک‌ها و سپس اسپانیایی‌ها از میان رفت. جمعیت مایاهای امروزی که از بازماندگان فرمانروایان دوران باستان آمریکای مرکزی هستند، حدود هفت میلیون نفر است که بیشتر در جنوب مکزیک و نواحی کوهستانی گواتمالا و بلیز به‌سر می‌برند.
آثار به‌جای مانده از شهر تاریخی اوچمال که در سده هشتم میلادی در اوج شکوفایی بود. بیشتر این بناها پس از متروکه شدن در دل جنگل‌های انبوه پوشیده شدند و در قرن بیستم بیشتر آن‌ها از میان جنگل‌های یوکاتان در کشور مکزیک و گواتمالا بیرون آورده شد.
تاریخچه

گمانه‌زنی دربارهٔ زمان ورود مایاها به آمریکای مرکزی به حدود قرن دهم پیش از میلاد برمی‌گردد و نخستین نشانه‌های استقرار و سکونت بومیان در اکتشاف‌های باستان‌شناسی مربوط به ۲۶۰۰ پیش از میلاد در کشور بلیز تعیین شده است. تقویم مایایی به ۳۱۱۴ پیش از میلاد اشاره دارد و البته یک داستان قدیمی پذیرفته‌شده مایایی نیز، حوادث ۱۸۰۰ پیش از میلاد را توصیف کرده است. در دوران آغازین پیدایی مایاها، آن‌ها ابتدا از نواحی شمالی آمریکا به سمت جنوب آمدند و با سکونت در ارتفاعات گواتمالا تمدن عظیمی را به‌وجود آوردند. تاریخ تمدن مایاها به سه دوره پیشاکلاسیک، کلاسیک و پساکلاسیک دسته‌بندی شده است.
تاریخچه > دوران پیشاکلاسیک

دوران پیشاکلاسیک تمدن مایا از حدود ۱۰۰۰ پیش از میلاد تا ۲۵۰ میلادی را دربر می‌گیرد. خود این دوره به سه مرحله اولیه، میانه و پایانی بخش‌بندی شده است. با آغاز این دوران که با اکتشافات انجام‌شده به اواخر هزاره دوم پیش از میلاد بازمی‌گردد، گرایش به شهرنشینی و زندگی شهری پدید آمد و روستاها و شهرهایی ایجاد شد. خط مایایی به‌وجود آمد و زندگی قدیمی مایایی در اوایل این دوران که مبتنی بر شکار و خوشه‌چینی بود به زندگی شهری و کشاورزی تبدیل شد.
اطلاعات از دوران اولیه زندگی مایاها اندک است اما از دوران میانه که مربوط به چهار سده پیش از میلاد است با توجه به اکتشافات باستان‌شناسی اطلاعات بیشتری به دست آمده که آمیختگی فرهنگی مایا با تمدن اولمک، از سنت‌های پیشین را نشان می‌دهد. در مرحله پایانی دوران پیشاکلاسیک مایا بناهای اصلی شهرنشینی پدید آمد، این مرحله تا ۲۵۰ میلادی به درازا کشید. این مرحله پایانی را به واقع آغاز عصر شکوفایی تمدن مایا دانسته‌اند.
تاریخچه > دوران کلاسیک تمدن مایا

این مرحله که عصر طلایی مایا محسوب می‌شود، از ۲۵۰ تا۹۰۰ میلادی بود و در آن مایاها به اوج توانمندی و درخشش خود رسیدند. دولت-شهرهای بزرگ پدید آمد و شهرهایی مانند تیکال ساخته شد. در آن دوران تخمین زده می‌شود که نزدیک به دو میلیون تن در محدوده مایا نشین به‌سر می‌بردند که یکصد هزار تن از آنان ساکن شهر تیکال بودند. بیشتر بناهای ساخته‌شده، بجز خانه‌ها و امکانات شهری نظیر آبراهه‌ها، به بناهای عظیم و فاخر مذهبی مربوط می‌شد. شهرهای باشکوهی مانند کوپان، چیچن ایتزا، تیکال، تئوتیهواکان و پالنکه در منطقه یوکاتان پدید آمد. در این دوره به‌کارگیری طلا در مناسبت‌های مذهبی و نیز جهت آرایش و تزیین رایج بوده است.
در این دوره سطح زندگی و کیفیت آن در شهرهای مایا به بهترین حالت خود رسیده بود. پیروزی‌های نظامیان مایا در نبرد با اقوام همسایه و شهرهای خارج از قلمرو و فراوانی آذوقه و امکانات که ناشی از تدبیر طبقه حاکم بر جامعه بود نوعی رفاه نسبی را برای جامعه مایاها پدیدآورده بود. از سوی دیگر بازرگانی بین سواحل دور و نزدیک و وجود راه‌های پیاده‌رو بسیار طولانی میان شهرها زمینه را برای پیشرفت این قوم در دوره کلاسیک فراهم آورده بود. در این دوره بیش از یکصد شهر بزرگ و کوچک پدید آمد که البته گاهی ساختن یک شهر جدید برابر بود با تخلیه یک شهر دیگر اما با این وجود سرعت شهرسازی و مهارت آن‌ها در طراحی سیستم‌های مورد نیاز برای شهرهای بزرگ از شاخصه‌های مایاها در میان دیگر اقوام آمریکای باستان است. بهترین و بااهمیت‌ترین شناسه‌های تمدن مایا در خلال دوره کلاسیک چهار اصل آن بود که عبارت بودند از مذهب، هنر، معماری و جامعه آن‌ها.