آنچه یاد خواهید گرفت:
چگونه با pytest در پایتون، تست خودکار را برای کدی قابلنگهداری و باکیفیت پیاده کنید؟
چگونه تست را در پروژههای واقعی به کار بگیرید؛ از کدهای قدیمی پیچیده تا پروژههای جدید با اصول تست محور
چگونه یک سیستم تست مقیاسپذیر طراحی کنید که در پایپلاینهای موجود CI/CD یکپارچه شود، یا پایپلاینهای اولیه را برای اجرای خودکار تستها راهاندازی کند؟
چگونه یک مسیر عملی از %0 تا %100 پوشش تست را اجرا کنید؟
برای کاربردهای واقعی، بدون وسواس فکری یا گیر کردن در مرحله شروع، تستهایی را پیاده کنید.
چگونه با گردشکارهای ساختاریافته اشکالزدایی تست محور، باگها را به صورت قابلاعتماد شناسایی، بازتولید و فیکس کنید؟
پیشنیازهای دوره
مهارت پایه در پایتون لازم است. اگر میتوانید تابع و کلاس پیادهسازی کنید، برای شروع آمادهاید.
هیچ تجربه قبلی با pytest یا هر فریمورک تست دیگری لازم نیست.
توضیحات دوره
پایتون یکی از محبوبترین زبانهای برنامهنویسی در جهان و زبانی چندمنظوره، قدرتمند و پرکاربرد در همه موارد، از وب اپلیکیشنها تا پایپلاینهای داده و سیستمهای یادگیری ماشین است.
اما یک چیز وجود دارد که همه پروژههای جدی پایتون برای سالم ماندن به آن نیاز دارند: تستهای خوب
اگر برایتان مهم است که کدی باکیفیت بنویسید، پایداری را حفظ کنید و پایگاه کدتان در طول زمان به راحتی قابل تغییر بماند، به یک رویکرد تست قوی نیاز دارید.
اینجاست که pytest وارد میشود.
pytest یکی از پرکاربردترین فریمورکهای تست پایتون، سریع و انعطافپذیر است و طراحی شده تا تست کدهای واقعی را به جای دردسر، ساده کند.
این دوره درباره pytest و تست عملی در پایتون است، یعنی تبدیل تست از یک «چیز خوب اضافه» به یک ابزار اصلی برای کد قابلنگهداری و پایدار
شما یاد میگیرید چگونه از pytest در پروژههای واقعی پایتون استفاده کنید، هم زمانی که با کدهای قدیمی شلوغ و پیچیدهای روبهرو هستید که دستکاری آنها پرریسک به نظر میرسد، و هم زمانی که یک پروژه جدید را شروع میکنید و از همان روز اول به دنبال یک پایه تمیز و تست محور هستید. به جای تمرکز بر مثالهای ساده و آموزشی، الگوها، تکنیکها و گردشکارهایی را بررسی میکنیم که میتوانید مستقیماً در محل کار یا پروژههای شخصی خود به کار ببرید.
نیازی به پیشزمینه پیشرفته نیست.
دانش پایه پایتون برای استفاده از این دوره کافی است. چه مهندس نرمافزار باشید، چه فعال در حوزه یادگیری ماشین یا علم داده و مهندس داده، توسعهدهنده بکاند و فرانتاند یا بنیانگذار استارتاپ، این دوره به شما کمک میکند کد پایتون تمیزتر، قابلنگهداریتر و بهتر تست شده بنویسید.
از همان ابتدا با نوشتن و اجرای اولین تستها در pytest شروع میکنیم و به تدریج به راهاندازی تست حرفهای و مقیاسپذیر میرسیم که به طور طبیعی با گردشکارهای توسعه مدرن و پایپلاینهای CI/CD هماهنگ میشود.
به طور دقیق، این دوره موارد زیر را پوشش میدهد:
نصب و اجرای pytest
راهاندازی pytest در پروژههای جدید و موجود پایتون
درک test discovery، قواعد نامگذاری و ساختار پایه
نوشتن درست اولین تستها
استفاده مؤثر از assertions
تست توابع، کلاسها و ماژولها
اجتناب از اشتباهات رایج هنگام شروع تست
کار با فیکسچرهای pytest
ساخت فیکسچرهای قابل استفاده مجدد برای داده، پیکربندی و آمادهسازی محیط
درک محدودههای فیکسچر (تابع، کلاس، ماژول و سشن) و اینکه هر کدام را چه زمانی باید استفاده کرد.
اشتراکگذاری فیکسچرها بین تستها و ماژولها
پارامتریسازی و الگوهای قدرتمند تست
نوشتن یک تست برای پوشش چندین ورودی، حالت مرزی و سناریو
ساختاردهی و نامگذاری تستها برای شفافیت و نگهداری بلندمدت
استفاده از پارامتریسازی برای افزایش سریع پوشش بدون داپلیکیشن کد
سازماندهی مجموعه تست مقیاسپذیر
ساختاردهی تستها برای اسکریپتهای کوچک و اپلیکیشنهای بزرگ
گروهبندی، نامگذاری و تگگذاری تستها برای کارآمدی تیمها
استفاده از مارکرها برای مدیریت تستهای کند، flaky و یکپارچهسازی یا تست دود
تست اپلیکیشنهای واقعی پایتون
تست منطق کسبوکار، سرویسها و کدهای پردازش داده
استراتژیهایی برای تست کدی که با فایلها، APIs، پایگاه دادهها یا سرویسهای خارجی کار میکند.
کاهش flaky بودن و جداسازی اثرات جانبی
ماک کردن و patching و test doubles
چه زمانی ماک کنیم و چه زمانی نه؟
استفاده از monkeypatch و pytest - ماک کردن برای جایگزینی یا جداسازی وابستگیها
نوشتن کدی که بدون پیچیدگی غیرضروری، راحتتر تست میشود.
از %0 تا %100 پوشش تست (به صورت عملی)
استفاده از ابزارهای پوشش تست (مثل pytest-cov) برای دیدن اینکه دقیقاً چه مواردی تست شدهاند.
اولویتبندی اینکه در پایگاههای کد بزرگ و بدون تست، ابتدا چه چیزهایی را تست کنیم.
طراحی یک مسیر واقعبینانه از پوشش کم یا بدون پوشش تا پوشش بالا و معنادار
کار مؤثر با کد قدیمی
افزودن تست در اطراف کدهای موجود و شکننده بدون خراب کردن آنها
ساخت «شبکه اطمینان» قبل از اعمال تغییرات یا ریفکتور کردن
جداسازی تدریجی و بهبود کدهای دقیقا کوپلینگ شده با کمک تستها به عنوان راهنما
رویکردهای test-first و تست محور
اینکه TDD چه زمانی مفید است و چه زمانی زیادهروی محسوب میشود؟
استفاده از تستها برای هدایت طراحی قابلیتهای جدید
استفاده از تستها برای افزایش اطمینان و حرکت سریعتر، نه کندتر
یکپارچه سازی pytest در پایپلاینهای CI/CD
پیکربندی گردشکارها برای اجرای خودکار تستها در هر push و pull request یا release
افزایش سرعت مجموعه تست با موازیسازی تستها توسط pytest-xdist
مدیریت تستهای کند یا flaky در CI و شکلدهی به یک استراتژی تست متناسب با کادانس انتشار و میزان ریسک تیم شما
مثالهای واقعگرایانه و گردشکارهای کامل
ساخت تدریجی تستها برای ماژولهای واقعی پایتون و پروژههای کوچک
دیدن اینکه چگونه میتوان از نبود کامل تست به یک مجموعه تست خودکار و مفید رسید.
اعمال همین رویکرد در پروژههای شخصی یا پایگاه کد سازمانی خود
در طول دوره، فقط یاد نمیگیرید pytest چگونه کار میکند، بلکه میآموزید چگونه به تست به عنوان یک ابزار عملی فکر کنید:
چگونه وقتی پروژهتان %0 پوشش تست دارد شروع کنید؟
چگونه تست کدهای پیچیده یا قدیمی را که ترسناک به نظر میرسند آغاز کنید؟
چگونه یک راهاندازی تست طراحی کنید که همگام با تیم و پروژه شما مقیاسپذیر باشد؟
چگونه تستها را در CI/CD یکپارچه کنید تا به صورت خودکار و قابلاعتماد اجرا شوند؟
در پایان دوره، درک شفاف و عملی از pytest و تست در پایتون خواهید داشت. شما میتوانید:
از pytest به عنوان ابزاری برای حفظ پایداری و قابلیت نگهداری پایگاه کد خود استفاده کنید.
برای پروژههای واقعی بدون درگیرشدن بیش از حد با اینکه از کجا شروع کنید، تست پیادهسازی کنید.
یک سیستم تست مقیاسپذیر طراحی و نگهداری کنید که در CI/CD یکپارچه شده باشد.
یک مسیر عملی از %0 تا پوشش تست بالا را دنبال کنید که از ریفکتور و تحویل قابلیتهای جدید پشتیبانی کند.
بعد از گذراندن دوره، فقط «pytest را نخواهید شناخت»، بلکه میتوانید آن را با اعتمادبهنفس در کار روزمره، در تیمها و در هر پروژه پایتون که در آن کد تمیز، قابلاعتماد و قابل نگهداری اهمیت دارد، به کار بگیرید.
این دوره برای چه کسانی مناسب است؟
توسعهدهندگان تازهکار، میانی و ارشد که با پایتون کار میکنند و میخواهند دانش و مهارت خود را عمیقتر کنند تا مسیر شغلیشان را پیش ببرند و این بهبودها را در سازمان خود به کار بگیرند.
تیمهای توسعه و رهبران فنی در شرکتهای کوچک و بزرگ نیز از این دوره بهرهمند میشوند، زیرا این دوره pytest را پوشش میدهد، فریمورک تست بالغ و مقیاسپذیر که میتواند در پایگاههای کد موجود یکپارچه شود تا ریفکتور کردن کد قدیمی را پشتیبانی کند و توسعه قابلیتهای جدید را سرعت ببخشد.
کسی که میخواهد مهارتهای پایتون خود را ارتقا دهد و مفاهیم پیشرفتهای مثل تست را یاد بگیرد.
این دوره برای طیف گستردهای از توسعهدهندگان ارزشمند است، از جمله مهندسان نرمافزار، فعالان یادگیری ماشین و علم داده و تحلیل داده، مهندسان داده، و توسعهدهندگان وب فرانتاند و بکاند
این دوره همچنین برای افرادی که روی پروژههای شخصی کار میکنند یا در حال ساخت استارتاپهای اولیه هستند و میخواهند کدی تمیز و قابل نگهداری بنویسند، بسیار مناسب است.