نحوه نوشتن سناریوهای آزمون که موفقیت برنامه را تضمین می کند

به عنوان یک تستر نرم افزار با تجربه ، شما موافقت خواهید کرد که می خواهید در تلاش های آزمایش خود تا حد امکان کامل باشید تا برنامه خود را به موفقیت بزرگی تبدیل کنید. بله ، موارد آزمایش مهم هستند اما آنها به تنهایی بر نتیجه نحوه دریافت برنامه شما تأثیر نمی گذارند.
به خصوص هنگام کار بر روی سیستم های بزرگتر ، محدودیت های زمانی و تغییر الزامات ، موارد آزمون نوشتن را برای همه چیز دشوار می کند. این جایی است که سناریوهای تست وارد می شوند – آنها یک روش ساختاری برای تأیید عملکرد سیستم در حالی که تلاش های تست را بهینه می کنند فراهم می کنند.
در این پست وبلاگ ، ما سناریوهای تست را بررسی خواهیم کرد ، چه موقع از آنها استفاده کنیم (و چه موقع نیست) ، و چگونه می توان آنها را بدون از بین بردن جزئیات بیش از حد ایجاد کرد.
سناریوی تست چیست؟
یک سناریوی آزمون شرح مختصری از سطح بالایی از عملکرد یا یک سفر کاربر خاص است که نیاز به اعتبارسنجی دارد. این شرایط دقیق را که در آن آزمایش انجام می شود ، تشریح می کند ، با تمرکز بر آنچه باید آزمایش شود و نه چگونه. شما از آن برای پوشش گردش کار کلیدی و رفتارهای سیستم استفاده می کنید.
چه موقع سناریوهای تست ایجاد کنید
بیایید بگوییم که شما در حال آزمایش یک بستر تجارت الکترونیک هستید. یک سناریوی آزمایش ممکن است: “تأیید کنید که کاربر می تواند با موفقیت یک فرآیند پرداخت را با روش های مختلف پرداخت انجام دهد.”
این سناریو به شما انعطاف پذیری در اجرای می دهد. ممکن است آن را به صورت دستی آزمایش کنید ، آن را خودکار کنید یا موارد لبه های مختلف را در همان سناریو کشف کنید بدون اینکه به یک مجموعه از پیش تعریف شده گره خورده باشید. برخی دیگر از مزایای سناریوهای آزمون شامل موارد زیر است:
آنها بحث در مورد دامنه آزمایش با توسعه دهندگان ، مدیران محصول و ذینفعان را آسان تر می کنند
آنها به مقابله با برنامه های پیچیده ، ادغام یا موقعیت هایی که در آن موارد تست اسکریپت شده برای نگهداری بسیار سفت و سخت یا وقت گیر هستند کمک می کنند
آنها با الزامات در حال تغییر سازگار هستند ، به این معنی که سناریوهای سطح بالا حتی در صورت تغییر عناصر یا فرآیندهای UI خاص مرتبط هستند
آنها در محیط های چابک یا DevOps هستند ، که در آن تکرار سریع و تغییرات مداوم باعث می شود موارد آزمایش دقیق ناکارآمد باشد
نحوه نوشتن سناریوهای آزمون
در اینجا چگونه می توانید یک سناریوی تست قانع کننده بنویسید:
1. الزامات را تجزیه و تحلیل کرده و ویژگی های کلیدی را شناسایی کنید
قبل از انجام هر کاری ، ابتدا باید نیازهای سیستم ، از جمله مشخصات عملکردی و داستانهای کاربر را به روشنی درک کنید.
با ذینفعان صحبت کنید ، نقص های گذشته را تجزیه و تحلیل کنید و اسناد موجود را بررسی کنید تا آنچه را که می خواهید آزمایش کنید تعیین کنید. به عنوان مثال ، شما می خواهید اعتبار ایجاد حساب ، انتقال وجوه و درخواست وام را در یک برنامه بانکی تأیید کنید.
2. لیست گردش کار کاربر و تعامل سیستم را لیست کنید
در مرحله بعد ، در مورد نحوه تعامل کاربران خود با برنامه فکر کنید. موارد استفاده عادی ، مسیرهای جایگزین و سناریوهای خطا چیست؟ تمام تغییرات دنیای واقعی را در پوشش آزمون خود لیست کنید. در یک فروشگاه تجارت الکترونیک ، برخی از سناریوها عبارتند از:
- یک کاربر ثبت شده که با استفاده از کارت اعتباری ذخیره شده ، خرید را انجام می دهد
- کاربری که سعی در خرید با بودجه کافی ندارد
- یک کاربر جدید که به عنوان مهمان در حال بررسی است و از طریق Apple Pay پرداخت می کند
3. سناریوهای بحرانی را در اولویت قرار دهید
همه سناریوهای آزمون خطر مشابهی ندارند. شما باید آنها را بر اساس عواملی مانند فرکانس استفاده ، اهمیت سیستم و تأثیر احتمالی شکست در اولویت قرار دهید.
به عنوان مثال ، تأیید یکپارچگی داده های بیمار و صحت سفارش دارو در یک برنامه مراقبت های بهداشتی ، اولویت بالاتری را برای آزمایش تغییر رنگ جزئی UI می گیرد. تکنیک های مبتنی بر ریسک ، مانند حالت خرابی و تجزیه و تحلیل جلوه ها (FMEA) ، برای تعیین اینکه سناریوها روی آن تمرکز کنید.
4. وابستگی ها و شرایط پیش را مشخص کنید
سناریوهای آزمون اغلب به پیش شرط هایی مانند تنظیمات سیستم ، نقش کاربر ، وابستگی به داده ها یا در دسترس بودن خدمات خارجی بستگی دارد. شما باید این مقدمات را مشخص کنید تا در حین اجرای با مسدود کننده های غیر منتظره روبرو نشوید.
در اینجا یک سناریوی تست وجود دارد:
در یک سیستم کنترل دسترسی مبتنی بر نقش (RBAC) ، سناریویی برای “کاربر مدیر مدیریت حساب کاربری” به یک حساب مدیر موجود با مجوزهای لازم نیاز دارد. به طور مشابه ، یک سناریوی آزمون مربوط به API ممکن است داده های آزمایش یا یک نقطه پایانی پیکربندی شده را قبل از اجرای نیاز داشته باشد.
- توضیحات واضح و مختصر را بنویسید به همان اندازه که می توانید هنگام نوشتن سناریوهای آزمون واضح باشید. جایی برای ابهام نگذارید.
به عنوان مثال ، به جای نوشتن:
“با نام کاربری و رمز عبور وارد شوید. روی دکمه انتقال صندوق کلیک کنید. جزئیات گیرنده را وارد کنید ، مبلغی را مشخص کنید و معامله را تأیید کنید.”
بنویسید:
“تأیید کنید که کاربر می تواند با موفقیت وجوه بین دو حساب را منتقل کند.”
این زبان سناریو را با رویکردهای مختلف تست ، از جمله اجرای آزمون دستی و خودکار سازگار می کند.
6. سناریوهای آزمون را تأیید و بررسی کنید
قبل از نهایی کردن سناریوهای تست ، آنها را با ذینفعان ، از جمله توسعه دهندگان نرم افزار ، تیزر و مدیران محصول ، مرور کنید. این به شناسایی شکاف ها ، حذف تکثیر و اطمینان از هماهنگی با اهداف تجاری کمک می کند. بررسی های همسالان و پیاده روی می توانند کیفیت کلی تست را بهبود بخشند.
نمونه الگوی سناریو آزمون
در زیر یک چارچوب ساختاری برای مستندسازی سناریوهای تست شما وجود دارد. ردیابی ، حفظ و اجرای سناریوها را آسان تر می کند.
سناریوی آزمون در مقابل مقایسه مورد تست
بنابراین ، آیا می توان از سناریوها و موارد آزمایش به صورت متقابل استفاده کرد؟ نه ، هر دو اصطلاح متفاوت هستند و نقش خود را در تست نرم افزار بازی می کنند. بیایید نگاهی بیندازیم که چگونه:
این تعریف می کند که بدون مشخص کردن مراحل اجرای ، چه چیزی را آزمایش کنید. این برای آزمایش اکتشافی مؤثر است ، جایی که مراحل سفت و سخت می تواند کشف مسئله را محدود کند.
از طرف دیگر ، یک مورد آزمایش شامل دستورالعمل های گام به گام برای اجرای یک آزمون است. همچنین داده های ورودی و نتایج مورد انتظار را بیان می کند. این مناسب برای انجام آزمایش رگرسیون است که در آن باید مراحل “T” دنبال شود.
با وجود مزایا ، سناریوهای آزمون همیشه رویکرد درستی نیستند. بعضی اوقات ، موارد آزمایش بیشتر حس می کنند ، به خصوص اگر:
- تأیید محاسبات یا قوانین پیچیده یا خسته کننده ؛ به عنوان مثال ، سناریوهای مربوط به شبکه نیاز به کنترل بیشتری بر تنظیمات ، پروتکل ها یا محاسبات در مقیاس بزرگ دارند
- شما در زمینه امور مالی ، مراقبت های بهداشتی ، مخابراتی یا یک صنعت مشابه که نیاز به رعایت دقیق دارد ، کار می کنید. حسابرسان ممکن است انتظار موارد آزمایش با قابلیت ردیابی را داشته باشند
- آزمایش کنندگان شما فاقد دانش دامنه هستند. موارد آزمایش دقیق از تفسیر نادرست جلوگیری می کند
فرض کنید شما در حال آزمایش یک سیستم محاسبه مالیاتی هستید که مالیات بر درآمد را بر اساس پارامترهای متعدد تعیین می کند ، مانند صفحات حقوق ، کسر ، معافیت و قوانین مالیاتی.
یک خطای کوچک در منطق می تواند منجر به محاسبات نادرست مالیاتی شود. سناریوی آزمایشی مانند “تأیید کنید که سیستم محاسبه مالیات نرخ مالیات صحیح را بر اساس صفحات درآمد اعمال می کند” در این شرایط کافی نخواهد بود. شما باید عمیق بروید و یک مورد آزمایشی بنویسید مانند:
- تأیید کنید که شخصی که 50،000 دلار با کسر 5000 دلار درآمد دارد با نرخ صحیح x ٪ مالیات می گیرد
- بررسی کنید که افراد در بالاترین براکت مالیاتی هیچ کس فراتر از حد قانونی دریافت نمی کنند
به طور خلاصه ، ایجاد یک مورد آزمایش و سناریوی آزمون برای اطمینان از پوشش کارآمد آزمون بسیار مهم است.
مورد آزمون در مقابل سناریوی آزمون: مقایسه جدولی
موانع جاده ای هنگام نوشتن سناریوهای آزمون به دنبال آن باشید
- همیشه چالش های منحصر به فرد و غیر منتظره وجود دارد که می تواند در اینجا مسائل را دشوار کند ، از جمله:
- سیستم های تصمیم گیری هوش مصنوعی و خودکار باید برای تعصب ، انصاف و عواقب ناخواسته آزمایش شوند. سناریوهای آزمون ممکن است همیشه پیامدهای اخلاقی رفتار نرم افزار را در نظر نگیرند
- سیستم های پیچیده به آزمایش کنندگان نیاز دارند تا وابستگی های متعدد ، ادغام و مواردی را از نظر ذهنی به دست آورند. فرسودگی و چشم انداز تونل می تواند منجر به سناریوهای از دست رفته شود
- حتی سناریوهای آزمایشی به خوبی برنامه ریزی شده اغلب آسیب پذیری های موردی مانند سوءاستفاده API ، افزایش امتیاز یا مهندسی اجتماعی را از دست نمی دهند. نکته اصلی این است که در خارج از جعبه فکر کنید
- خرابی تست متناوب به دلیل بی ثباتی محیط ، تأخیر در شبکه یا مسائل مربوط به خدمات خارجی می تواند نقص واقعی را مبهم کند
بهترین روشها برای ایجاد سناریوهای آزمون
در اینجا نحوه اصلاح و بهینه سازی سناریوهای آزمون خود برای جلوگیری از مسائل مشترک و اطمینان از حداکثر اثربخشی آورده شده است.
1. سناریوها را مدولار و مستقل نگه دارید
هر سناریو باید بدون بستگی به نتایج سناریوی دیگر ، روی یک کارکرد یا گردش کار واحد متمرکز شود. در غیر این صورت ، هنگامی که یک شکست آزمایش بر دیگران تأثیر می گذارد ، باید با مسائل اعدام مقابله کنید. همچنین ، سناریوهای تست را بنویسید تا بتوانند به هر ترتیب اجرا شوند – برای آزمایش موازی و اتوماسیون.
2. سناریوهای تست را با رفتار کاربر در دنیای واقعی تراز کنید
این باید گردش کار کاربر واقعی را به جای اعتبار دادن به عملکردهای جدا شده تقلید کند. این تضمین می کند که برنامه آزمایش شده است زیرا در زندگی واقعی استفاده می شود.
بیایید یک سناریوی آزمون را در نظر بگیریم:
یک فرآیند درخواست وام که در آن کاربر یک برنامه را از طریق تلفن همراه شروع می کند ، قطع می شود و بعداً آن را روی یک دسک تاپ تکمیل می کند. این سناریو باید تداوم چند دستگاه ، تداوم جلسه و وقفه های دنیای واقعی را آزمایش کند.
مراحل شامل:
- برنامه را از طریق تلفن همراه شروع کنید ، جزئیات را پر کنید ، اما از وسط راه خارج شوید
- رزومه روی دسک تاپ ، بارگذاری اسناد و ارسال
- سیستم نمرات اعتباری و صلاحیت را تأیید می کند
- کاربر تأیید مشروط می کند و اسناد اضافی را از طریق لینک ایمیل بارگذاری می کند
- وام تصویب شده و بودجه پرداخت می شود
3. شامل پوشش موارد لبه و سناریوهای آزمایش منفی است
بسیاری از تیم ها فقط روی رفتار کاربر مورد انتظار تمرکز می کنند و سناریوهای شکست را از دست نمی دهند. شما باید تأیید کنید که کاربر می تواند رمز عبور خود را با استفاده از یک ایمیل معتبر مجدداً تنظیم کند. اما چه اتفاقی می افتد که از یک ایمیل غیر موجود برای تنظیم مجدد رمز عبور استفاده می شود؟ آیا سیستم شما می تواند آن را پرچم گذاری کند؟
4. سناریوها را در مراحل آزمایش قابل استفاده مجدد کنید
یک سناریوی تست خوب نوشته شده می تواند در چرخه های مختلف آزمایشی از جمله دود ، عملکردی ، رگرسیون و آزمایش عملکرد اجرا شود. برای استفاده مجدد ، از ایجاد بیش از حد محیط زیست خودداری کنید.
به عنوان مثال ، تأیید کاربر می تواند با استفاده از یک مستر کارت در سرور مرحله بندی ، یک سناریو را انجام دهد. آیا می توانید آن را در جای دیگر اعمال کنید؟ شماره
5. به جزئیات بیش از حد نرسید
سناریوهای آزمون موارد آزمون نیستند. آنها را ساده و سطح بالا نگه دارید تا بتوانند به راحتی با موارد تست دقیق سازگار شوند. تمرکز کنید که چه چیزی را آزمایش کنید ، نه هر قدم کوچک.
6. سناریوهای تست خود را تازه کنید
با تکامل برنامه ها ، باید سناریوهای آزمون شما نیز انجام شود. آنها باید ویژگی های جدید ، به روزرسانی ها و استهلاک ها را منعکس کنند تا اطمینان حاصل شود که تست ها با آخرین رفتار سیستم مطابقت دارند. بررسی های منظم به حفظ ارتباط و اثربخشی کمک می کند.
پایان
در نتیجه ، سناریوهای آزمایشی بخش مهمی از آزمایش نرم افزار کارآمد است ، به خصوص هنگام برخورد با سیستم های پیچیده و به سرعت در حال تغییر نیازها. آنها یک رویکرد سطح بالا برای اعتبارسنجی عملکردهای مهم و گردش کار کاربر ارائه می دهند بدون اینکه در جزئیات بیش از حد دچار مشکل شوند. سناریوهای تست با تمرکز روی آنچه باید آزمایش شود ، امکان انعطاف پذیری و سازگاری بیشتر را فراهم می کند و آنها را برای آزمایش های چابک ، DevOps و اکتشافی ایده آل می کند. با این حال ، آنها باید با موارد آزمایشی که دقیق و دقیق و دقیق لازم است ، متعادل شوند. برای ایجاد سناریوهای آزمون مؤثر ، در اولویت بندی گردش کار بحرانی ، آنها را مدولار و هماهنگ با رفتار کاربر در دنیای واقعی نگه دارید و اطمینان حاصل کنید که با تکامل برنامه ، آنها قابل انطباق هستند.
منبع: این وبلاگ در ابتدا در TestGrid منتشر شد