Mostafa Ali Mansour
Mostafa Ali Mansour

@MostafaAliManos

18 تغريدة 35 قراءة Jul 03, 2021
ثريد سريع عن أنواع الTesting في الSoftware
ف لنتخيل إن حضرتك عملت Web Application عبارة عن زرار لما تدوس عليه يقوم موريلك آخر تويتة حضرتك نزلتها و بعدين تطلع رسالة Success .. إيه هي الطرق المختلفة اللي ن Test بيها الapplication ده ؟
1- Canary testing
زمان كان عمال المنجم قبل ما يخشوا يحفروا .. كانوا بيحطوا طائر كاناري ف قفص و ينزلوه ف جردل .. طول ما طائر الكانار بيصوصو .. كده مفيش غاز ممكن يقتلهم .. أول ما يبطلوا يسمعوا صوت صوصوة الكناري .. بيشوفوا العمق وصل لفين و بعدين يعرفوا انهم مينفعش ينزلوا أعمق من ده
الcanary testing في الsoftware هو انك ت generate robot traffic ي act as real customer traffic و ت monitor الservice بتاعتك .. هل الlatency زادت .. هل الavailability قلت .. هل فيه حاجة كده ولا كده بت throw exception .. و بعدين تصلحها
2- Unit testing
زي ما اسمه بيقول .. بنtests كل unit من الapplication بتاعك .. بن tests ان لما الbutton بيتداس يقوم م trigger event و ان الرسالة تطلع مظبوط .. بس الفكرة اننا بنعمل mock objects .. يعني بدل ما نكتب الobject بتاع الزرار أو الرسالة أو الevent
بنستعمل Testing framework عبارة اننا بنcreate variables و بنقول للframework ان الmock variables دول المفروض انهم بيمثلوا الreal variables .. بس الvalue بتاعتهم مش لازم تبقى populated .. احنا حنملاها بأقل الproperties
علشان ن test الحاجات الcritical .. يعني مش لازم ان الزرار يبقى الtext بتاعه زي اللي ف الproduction code .. احنا ممكن نسمي الزرار hamada بس المفروض اني لما أدوس على hamada .. حايtrigger event برضه
3- Integration tests
و ده بنشوف هل الcomponents بتشتغل مع بعض كما هو متوقع ؟ يعني مثلا احنا حندوس عالزرار و الزرار حايdisplay التويتة .. طيب كده معناه ان الapplication حيكلم Twitter API .. هل احنا معانا permissions عشان نبعت request ؟ هل معانا API_dev_key ؟ هل الCSRF token شغال
ف الunit tests عمرنا ما بنعمل API calls عشان كده حيبقى load عالسيرفر و مش حنستفيد حاجة منها .. المفروض الAPI provider يكون هو عمل unit testing لل API components بتاعته .. لكن الweb application ده بتاعنا و لازم نتأكد ان الrequests بتعدي بالpayload المظبوط و بترجع الresponse
4- Load testing or Stress testing
عبارة عن عدد مهول من الCanary requests بتعمل traffic عالservice بتاعتك بغرض انك تشوف عند انه load ال service ممكن تقع من كتر الload .. فيه مدرسة فكرية بتقول اننا المفروض نعمل Load testing على gamma environment عشان الprod environment متتأثرش
لأن المفروض الgamma تبقى زي الprod بس مش exposed لل external customers ف احنا منحسسهمش بحاجة .. و فيه مدرسة تانية بتقول لأ .. ده احنا ن test عالprod عشان محتاجين الconditions تبقى as realistic as possible .. حتسألني طب المفروض نعمل أنهين ؟ حقول لحضرتك على حسب الservice
و ف أنهي phase من المشروع .. يعني مثلا لو المشروع لسه متعملهوش launch ف قشطة ممكن ن test عالproduction كده كده مفيش customers أساسًا عشان يتأثروا .. حتسألني طب ليه الناس بيtestوا بغرض انهم يوقعوا الserver .. حقولك عشان فيه ساعات الload بيبقى أكتر من العادي
لو جينا مثلا Google ف في وقت الإنتخابات الأمريكية .. كله بيخش على Google يتابع النتيجة و بيبقى ترافيك عالي .. ف فيسبوك وقت رمضان و الأعياد الناس بتكتب بوستات كتير بتعييد على بعض .. ف أمازون وقت الprime day بيبقى فيه customer بالهبل بيشتروا
و بيبقى فيه traffic estimates على أساسها الشركات بتallocate extra servers عشان تستقبل الحِمل الجديد .. طبعًا عزيزتي و عزيزي القراء إنتوا مش حِمل إنتوا قمرات 😘
5- UI Testing
ده عبارة انك بتستعمل Framework بيبقى ليها Headless browser بتعمل ال customer behaviour و بت assert الresult .. في مثالنا المفروض انك تكتب instructions ت دوس عالزرار و تشوف التويتة و تشوف الsuccess message
ده بيحصل بطريقتين: يا إما تستعمل نفس الHTML elements اللي ف الapplication code و تreference them بنفس الIDs .. و ت Create DOM tree مماثلة للي ف الApplication code وت test عليها .. شخصيًا بفضل الطريقة التانية عشان لو حد غير ف الIDs بتاعة الHTML elements ف ال application code
و نسى يغيرها ف الUI tests .. كده التيست حيدور على element مش موجود و حايfail .. عيب الطريقة دي ان كما هو واضح انك حتكتب duplicate code بس المفروض لو الframework نضيفة مش حتضطر تكتب كتير
6- A/B testing
لما الشركة بتحط feature جديدة .. مابتفرضهاش عالusers كده .. لكن بتقسمهم ناس شايفين الfeature القديمة و ناس شايفين الجديدة .. و تقارن هل الtraffic زاد ؟ هل الprofit زاد ؟ و بتتحط launching criteria قبل ما الtest يتنفذ و بيتم التجربة لمدة اسبوعين تلاتة ..
عشان ميبقوش حاطوا feature و بعدين خسرتهم فلوس.
لو وصلتوا لنهاية الثريد ادعولي نومي يتظبط عشان بقالي كذا يوم مش عارف أنام كويس و تعبان.
أتمنى أكون فدتكم and always test your applications ❤️

جاري تحميل الاقتراحات...