<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>أساسيات الاختبار on تعلّم Go بالاختبارات</title><link>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/</link><description>Recent content in أساسيات الاختبار on تعلّم Go بالاختبارات</description><generator>Hugo</generator><language>ar</language><atom:link href="https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/index.xml" rel="self" type="application/rss+xml"/><item><title>مقدمة إلى اختبارات القبول</title><link>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/intro-to-acceptance-tests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/intro-to-acceptance-tests/</guid><description>&lt;h1 id="مقدمة-إلى-اختبارات-القبول"&gt;مقدمة إلى اختبارات القبول&lt;a class="anchor" href="#%d9%85%d9%82%d8%af%d9%85%d8%a9-%d8%a5%d9%84%d9%89-%d8%a7%d8%ae%d8%aa%d8%a8%d8%a7%d8%b1%d8%a7%d8%aa-%d8%a7%d9%84%d9%82%d8%a8%d9%88%d9%84"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;في &lt;code&gt;$WORK&lt;/code&gt;، كنا نواجه حاجة متكررة إلى &amp;ldquo;الإيقاف الرشيق&amp;rdquo; (graceful shutdown) لخدماتنا. فالإيقاف الرشيق يضمن أن نظامك يُنهي عمله كما ينبغي قبل إنهائه. ومثال من الحياة الواقعية: شخص يحاول إنهاء مكالمة هاتفية على نحو لائق قبل الانتقال إلى الاجتماع التالي، بدلًا من إغلاقها في منتصف الجملة.&lt;/p&gt;&#10;&lt;p&gt;سيقدّم هذا الفصل مقدمة عن الإيقاف الرشيق في سياق خادم HTTP، وعن كيفية كتابة &amp;ldquo;اختبارات القبول&amp;rdquo; (acceptance tests) لتمنح نفسك ثقة في سلوك كودك.&lt;/p&gt;</description></item><item><title>توسيع نطاق اختبارات القبول</title><link>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/scaling-acceptance-tests/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/scaling-acceptance-tests/</guid><description>&lt;h1 id="توسيع-نطاق-اختبارات-القبول"&gt;توسيع نطاق اختبارات القبول&lt;a class="anchor" href="#%d8%aa%d9%88%d8%b3%d9%8a%d8%b9-%d9%86%d8%b7%d8%a7%d9%82-%d8%a7%d8%ae%d8%aa%d8%a8%d8%a7%d8%b1%d8%a7%d8%aa-%d8%a7%d9%84%d9%82%d8%a8%d9%88%d9%84"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;هذا الفصل تكملة لفصل &lt;a href="https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/intro-to-acceptance-tests/"&gt;مقدمة إلى اختبارات القبول&lt;/a&gt;. ويمكنك العثور على &lt;a href="https://github.com/quii/go-specs-greet"&gt;كود هذا الفصل النهائي على GitHub&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;اختبارات القبول ضرورية، وهي تؤثر تأثيرًا مباشرًا في قدرتك على تطوير نظامك بثقة عبر الزمن، وبكلفة تغيير معقولة.&lt;/p&gt;&#10;&lt;p&gt;وهي أيضًا أداة بديعة تساعدك في التعامل مع الكود القديم (legacy code). فحين تواجه قاعدة كود ضعيفة بلا أي اختبارات، قاوم الرغبة في البدء بإعادة الهيكلة. واكتب بدلًا من ذلك بعض اختبارات القبول لتصنع لنفسك شبكة أمان تتيح لك تغيير داخل النظام بحرية دون التأثير في سلوكه الخارجي الوظيفي. فاختبارات القبول لا تهتم بالجودة الداخلية، لذا فهي مناسبة جدًا لهذه المواقف.&lt;/p&gt;</description></item><item><title>العمل بدون الـ Mocks والـ Stubs والـ Spies</title><link>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/working-without-mocks/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/working-without-mocks/</guid><description>&lt;h1 id="العمل-بدون-الـ-mocks-والـ-stubs-والـ-spies"&gt;العمل بدون الـ Mocks والـ Stubs والـ Spies&lt;a class="anchor" href="#%d8%a7%d9%84%d8%b9%d9%85%d9%84-%d8%a8%d8%af%d9%88%d9%86-%d8%a7%d9%84%d9%80-mocks-%d9%88%d8%a7%d9%84%d9%80-stubs-%d9%88%d8%a7%d9%84%d9%80-spies"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;يتعمّق هذا الفصل في عالم الـ test doubles، ويستكشف كيف تؤثر في عملية الاختبار والتطوير. سنكشف حدود الـ mocks والـ stubs والـ spies التقليدية، ثم نقدّم نهجًا أكثر كفاءة وقابلية للتكيّف باستخدام الـ fakes والـ contracts.&lt;/p&gt;&#10;&lt;h2 id="باختصار"&gt;باختصار&lt;a class="anchor" href="#%d8%a8%d8%a7%d8%ae%d8%aa%d8%b5%d8%a7%d8%b1"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;الـ Mocks والـ spies والـ stubs تشجعك على ترميز افتراضاتك حول سلوك اعتمادياتك بشكل ارتجالي (ad-hoc) في كل اختبار.&lt;/li&gt;&#10;&lt;li&gt;وهذه الافتراضات لا يُتحقق منها عادةً إلا يدويًا، ما يهدد فائدة مجموعة اختباراتك.&lt;/li&gt;&#10;&lt;li&gt;أما الـ fakes والـ contracts فتمنحاننا طريقة أكثر استدامة لإنشاء test doubles بافتراضات مُتحقق منها، وبإعادة استخدام أفضل من البدائل الأخرى.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;هذا الفصل أطول من المعتاد، فلنأخذ نفسًا قصيرًا، ابدأ باستكشاف &lt;a href="https://github.com/quii/go-fakes-and-contracts"&gt;مستودع الأمثلة&lt;/a&gt;. وبالأخص، ألقِ نظرة على &lt;a href="https://github.com/quii/go-fakes-and-contracts/blob/main/domain/planner/planner_test.go"&gt;اختبار planner&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>قائمة تحقق إعادة الهيكلة</title><link>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/refactoring-checklist/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://zeyadsleem.github.io/learn-go-with-tests-ar/docs/testing-fundamentals/refactoring-checklist/</guid><description>&lt;h1 id="خطوة-إعادة-الهيكلة-قائمة-تحقق-البداية"&gt;خطوة إعادة الهيكلة، قائمة تحقق البداية&lt;a class="anchor" href="#%d8%ae%d8%b7%d9%88%d8%a9-%d8%a5%d8%b9%d8%a7%d8%af%d8%a9-%d8%a7%d9%84%d9%87%d9%8a%d9%83%d9%84%d8%a9-%d9%82%d8%a7%d8%a6%d9%85%d8%a9-%d8%aa%d8%ad%d9%82%d9%82-%d8%a7%d9%84%d8%a8%d8%af%d8%a7%d9%8a%d8%a9"&gt;&lt;/a&gt;&lt;/h1&gt;&#10;&lt;p&gt;إعادة الهيكلة (refactoring) مهارة تصبح، بفعل التدريب الكافي، طبيعة ثانية سهلة في معظم الحالات.&lt;/p&gt;&#10;&lt;p&gt;وكثيرًا ما يُخلط بين هذا النشاط وتغييرات تصميمية أكبر، لكنهما منفصلان. والتمييز بين إعادة الهيكلة وغيرها من أنشطة البرمجة مفيد لأنه يتيح لي العمل بوضوح وانضباط.&lt;/p&gt;&#10;&lt;h2 id="إعادة-الهيكلة-مقابل-أنشطة-أخرى"&gt;إعادة الهيكلة مقابل أنشطة أخرى&lt;a class="anchor" href="#%d8%a5%d8%b9%d8%a7%d8%af%d8%a9-%d8%a7%d9%84%d9%87%d9%8a%d9%83%d9%84%d8%a9-%d9%85%d9%82%d8%a7%d8%a8%d9%84-%d8%a3%d9%86%d8%b4%d8%b7%d8%a9-%d8%a3%d8%ae%d8%b1%d9%89"&gt;&lt;/a&gt;&lt;/h2&gt;&#10;&lt;p&gt;إعادة الهيكلة ليست سوى تحسين للكود الموجود &lt;u&gt;دون تغيير السلوك&lt;/u&gt;؛ ولذلك لا ينبغي أن تضطر الاختبارات إلى التغيير.&lt;/p&gt;&#10;&lt;p&gt;ولهذا فهي الخطوة الثالثة في دورة التطوير الموجه بالاختبار (TDD). فبعد أن تضيف سلوكًا واختبارًا يسنده، ينبغي أن تكون إعادة الهيكلة نشاطًا لا يتطلب أي تغيير في كود اختبارك. &lt;strong&gt;أنت تفعل شيئًا آخر&lt;/strong&gt; إذا كنت &amp;ldquo;تعيد هيكلة&amp;rdquo; كود ما وتضطر إلى تغيير الاختبارات في الوقت نفسه.&lt;/p&gt;</description></item></channel></rss>