بیایید با اصول اولیه شروع کنیم! بررسی دو حالت آزمایش عمومی و سه نوع متداول اتوماسیون تست.
همه ما آنجا بودهایم: یک میم کدنویسی تکراری که اغلب در زندگی واقعی اتفاق میافتد چیست؟
این میم آن را به خوبی خلاصه میکند: هر کشو بهطور جداگانه به خوبی کار میکند، اما در ترکیب با کشوی دیگر، یکدیگر را مسدود میکنند و کار نمیکنند. شما می خواهید هر دو کشو به خوبی با یکدیگر کار کنند و همزمان قابل اجرا باشند.
این را در توسعه وب اعمال کنید: شما چند آزمایش نوشتید، شاید حتی 100٪ پوشش آزمایشی را به دست آوردید، اما برنامه شما همچنان باید پس از قرار گرفتن قسمت های دیگر کار کند. واحدها ممکن است به تنهایی کار کنند اما نه در ارتباط با یکدیگر. نوشتن برخی از تستها بسیار مهم است، اما تنها بخشی از تنظیمات تست ایدهآل برای پروژه شما است. به عنوان اولین قدم، باید تعیین کنید که چه بخش هایی از کیفیت برنامه را باید تضمین کنید و چگونه می توانید به آن دست پیدا کنید.
به زبان ساده، قبل از شروع نوشتن کد آزمون واقعی، به یک برنامه نیاز دارید. برای نزدیک شدن به مبحث نحوه آزمایش عملی، بیایید با یک صفحه تمیز شروع کنیم و به دو سوال اساسی پاسخ دهیم:
- چطوری میخوای تست کنی؟
- چه چیزی را می خواهید تست کنید؟
این مقاله بر روی چیزهای کلی تمرکز دارد که باید برای پاسخ به سوال اول بدانید. برای شروع از یک زمینه مشترک، ابتدا بیاموزیم که چه حالت های تست وجود دارد و سپس بر روی انواع معمول تست تمرکز کنیم. در مقالات بعدی، به سوال دوم پاسخ میدهیم، پاسخها را با هم ترکیب میکنیم و استراتژی آزمایشی را که برای پروژه شما بهترین است، پیدا میکنیم. بیا بریم! 🙌
با اصول اولیه شروع کنید: حالت های آزمایش عمومی
در پاسخ به سوال نحوه تست کردن، اولین نکته ای که باید روشن شود بسیار انتزاعی است. آیا باید به صورت دستی تست کنید یا اجازه دهید کامپیوتر کنترل را به دست بگیرد؟ با این حال، مهم است که در اینجا به تفکر باینری نیفتیم.
تست دستی در مقابل تست خودکار
اگر از مهندسان تضمین کیفیت بخواهید تست را تعریف کنند، احتمالاً ابتدا آن را به دو "حالت" تقسیم می کنند:
- تست دستی . این یک روش آزمایش معمولی است که توسط افراد واقعی انجام می شود. یک مهندس تضمین کیفیت روی برنامه کلیک می کند، بررسی می کند که آیا کار می کند و در همان زمان سعی می کند آن را خراب کند. متداول ترین روش، آزمایش اکتشافی است، جایی که مهندس با استفاده از دانش خود از برنامه در برابر یک مسیر یا چک لیست از پیش تعریف شده، برنامه را بررسی می کند.
- تست خودکار . این یک نوع آزمایش است که توسط کامپیوتر انجام می شود. مهندسان تضمین کیفیت آن را برای خودکار کردن تستهای تکراری و یکنواخت اجرا میکنند.
این سری از راهنماها بیشتر بر روی تست خودکار تمرکز دارند. با این حال، شما نباید تنها بر یک روش آزمایش تمرکز کنید. حتی اگر اتوماسیون در زمان و تلاش زیادی صرفه جویی کند، آزمایش انسان و دستی همیشه نقشی حیاتی ایفا خواهد کرد. در عوض، اتوماسیون تست باید افراد را آزاد کند تا روی تست اکتشافی و حل خلاقانه مشکلات تمرکز کنند. به عنوان مثال، اطمینان از کیفیت تجربیات کاربر یا محافظت از منطق تجاری پرخطر. به عبارت دیگر، اتوماسیون پشت شماست. ❤️
جعبه مات در مقابل جعبه شفاف
بنابراین، شما حالت های کلی تست را تعریف کرده اید. با این حال، این هنوز کافی نیست. برای برنامه ریزی استراتژی تست، یک سوال دیگر وجود دارد که باید پاسخ داد: آیا باید بدانید که برنامه شما چگونه کار می کند یا بهتر است بدون این دانش تست کنید؟ بسته به پاسخ، دو روش برای استخراج و انتخاب موارد آزمون وجود دارد:
- تست جعبه مات (یا تست جعبه سیاه). این مبتنی بر تجزیه و تحلیل الزامات (مشخصات) عملکردی یا غیرعملکردی یک جزء یا سیستم بدون در نظر گرفتن ساختار داخلی آن است.
- تست جعبه شفاف (یا تست جعبه سفید) روشی است که ساختار داخلی جعبه مذکور را در نظر می گیرد. به عبارت دیگر، چگونه برنامه شما در زیر هود کار می کند.
هر دو روش را می توان برای آزمایش دستی و خودکار اعمال کرد. با این حال، برخی از جنبههای حالتهای آزمایش عمومی ممکن است بیشتر بر یکی از این دو تمرکز داشته باشند - ما بعداً به آن خواهیم پرداخت. در حال حاضر، اجازه دهید اتوماسیون آزمایشی را به انواع بیشتری تقسیم کنیم.
انواع اتوماسیون تست: چگونه می خواهید تست کنید؟
با نزدیکتر شدن به پاسخ دادن به سؤال «چگونه»، قبلاً تصمیم گرفتهاید آزمایشهای دستی انجام دهید. با این حال، انتخاب و استفاده از انواع اتوماسیون تست کمی چالش برانگیزتر است. انواع تست اتوماسیون ارتباط نزدیکی با معیارهایی دارد که می خواهید در پروژه های خود ایجاد کنید. بنابراین بیایید نگاهی دقیق تر به مهم ترین آنها بیندازیم.
همانطور که در میم قبلا ذکر شد، شما قبلاً با دو نوع برخورد کرده اید: تست واحد و تست یکپارچه سازی. تست انتها به انتها سومین مورد مهمی است که باید در نظر گرفته شود. اما این هنوز همه آنها نیست. بیایید نگاه دقیق تری بیندازیم.
تست واحد
تست واحد نوعی آزمایش است که در آن قطعات یا واحدهای کوچک قابل آزمایش یک برنامه کاربردی به صورت جداگانه و مستقل برای عملکرد مناسب آزمایش می شوند. این واحدها میتوانند از توابع، کلاسها یا رابطها گرفته تا سرویسها یا اجزای کامل از نظر دامنه متفاوت باشند. ویژگی های اولیه آنها سرعت اجرا، ایزوله بودن و قابلیت نگهداری راحت است. اگر میخواهید عمیقتر در تست واحد غواصی کنید، به این راهنمای آزمایش واحد بروید.
تست یکپارچه سازی
تست یکپارچه سازی بر تعاملات بین اجزا یا سیستم ها تمرکز دارد. به عبارت دیگر، در مورد اینکه چقدر با هم کار می کنند. نمونههای معمولی از تستهای ادغام، تستهای API یا جزء هستند.
تست انتها به انتها
این تست ها اغلب تست های رابط کاربری نامیده می شوند و این نام عملکرد آنها را حتی بهتر توضیح می دهد. این تستها با رابط کاربری برنامه شما، از جمله پشته کامل برنامه، تعامل دارند و برنامه شما را از یک سر به سر دیگر آزمایش میکنند.
اگر به تئوری تضمین کیفیت مراجعه کنید، آنها شبیه یک تست سیستمی هستند. این تست ها یک کاربر واقعی و تعاملات آنها را شبیه سازی می کنند. تستهای انتها به انتها زمان اجرا بیشتری میبرند زیرا کل سیستم را در بر میگیرند و زمان اجرا بیشتر به قدرت محاسباتی بیشتری نیاز دارد. در نتیجه، این تلاش اضافی منجر به هزینه های نگهداری بالاتر می شود.
تست رابط کاربری بصری
یک زیرمجموعه جالب از تست های UI تست های بصری است. این تستها، آزمایشهای پایان به انتها هستند که ابزاری برای تأیید خروجی قابل مشاهده یک برنامه کاربردی فراهم میکنند. چنین آزمایشی پس از تغییر یک اسکرین شات می گیرد و اسکرین شات دیگری حاوی «وضعیت موجود» (یا فایل طلایی) است، سپس آن نتایج را برای بازرسی و بررسی در اختیار یک بازبین انسانی قرار می دهد. به عبارت دیگر، به یافتن «اشکالات بصری» در ظاهر یک صفحه، فراتر از اشکالات صرفاً کاربردی کمک میکند و به صراحت در اظهارات نوشته نشده است.
تجزیه و تحلیل استاتیک
یک چیز دیگر برای معرفی در اینجا وجود دارد: تجزیه و تحلیل استاتیک. این یک نوع تست به معنای کتاب درسی نیست. با این حال، این یک جنبه اساسی در استراتژی های تضمین کیفیت در آینده خواهد بود. میتوانید تصور کنید که مانند یک تابع بررسی املا کار میکند: کد شما را برای نقصهای مهمتر و خطاهای نحوی بدون اجرای برنامه اسکن میکند، بنابراین مشکلات سبک کد را تشخیص میدهد. این اقدام ساده می تواند از بسیاری از باگ ها جلوگیری کند. اگر می خواهید با جزئیات بیشتری با آنالیز استاتیک آشنا شوید، این یک نکته خوب برای یادگیری استاتیک است.
آزمایش در همه اشکال: چگونه همه اینها با هم کار می کنند؟
در حالی که به دنبال پاسخ برای همه این سؤالات هستید، ممکن است راه حلی ممکن را در برخی قیاس ها بیابید. به طور خاص در وب و جوامع آزمایشی، توسعه دهندگان تمایل دارند از این قیاس ها استفاده کنند تا به شما ایده دهند که از چه نوع آزمایشی باید از چه تعداد تست استفاده کنید.
پنج استراتژی زیر که در این تصویر نشان داده شده اند رایج ترین آنها هستند:
- هرم تست
- الماس تست کنید
- مخروط یخ تست (همچنین به عنوان پیتزا آزمایشی شناخته می شود)
- لانه زنبوری را تست کنید
- جایزه تست
این واقعاً اطلاعات زیادی برای پردازش است. چگونه باید بر اساس همه اینها در مورد یک استراتژی تست تطبیق تصمیم بگیرید؟ نگران نباشید، ما شما را تحت پوشش قرار داده ایم. در مقاله بعدی، این استراتژی های مختلف را با جزئیات بیشتری مورد بحث قرار خواهیم داد و نحوه انتخاب بهترین مناسب برای پروژه خود را توضیح خواهیم داد. گوش به زنگ باشید! 🔥