رویکردهای KDT و BDT در تست نرم‌افزار

در این مقاله دو رویکرد اصلی در پیاده‌سازی اسکریپت های تست اتوماتیک مورد بررسی قرار گرفته و به منظور افزایش قدرت اسپکریپت‌ها مثالی از ترکیب این دو رویکرد ارائه خواهد شد

در این مقاله سعی داریم دو رویکرد Keyword Driven Testing و Behavior Driven Testing را مورد بررسی قرار دهیم. هر دو روش مزایایی در تست نرم‌افزار به خصوص در بخش طراحی تست دارا می‌باشند به صورتی که با به کار بردن آن‌ها قدرت نگهداشت آزمون و توسعه پذیری آن بسیار بالا خواهد رفت. در ادامه هر دو رویکرد تشریح و سپس با یکدیگر مقایسه می‌گردند.

رویکرد Keyword Driven Testing

تست کلمه کلیدی محور یک چارچوب در تست‌های اتومیشن است که مراحل طراحی و اجرای تست را از یکدیگر جدا می‌کند. در این رویکرد، تست کیس به صورت یک جدول در قالب یک مجموعه از کلمات کلیدی طراحی می‌شوند. این کلمات کلیدی نشان دهنده عملکردی هستند که باید مورد آزمون قرار گیرند. سپس با الگوبرداری و استفاده از این کلمات کلیدی، اسکریپت‌های تست ایجاد می‌شود. این رویکرد در ایجاد اسکریپت‌های تست با قابلیت استفاده مجدد مفید بوده و به کاهش وابستگی به مهارت‌های برنامه‌نویسی برای خودکارسازی تست کمک می‌کند. به عنوان نمونه فرض کنید یک وب سایت فروشگاه آنلاین به اسم gazmeh.ir داریم که می‌خواهیم آن را آزمایش کنیم. می‌توانیم آزمون‌ها را با استفاده از کلمات کلیدی زیر تقسیم بندی کنیم:

  • باز کردن مرورگر: این کلمه کلیدی مرورگر وب را باز می‌کند و به آدرس وب سایت مورد نظر می‌رود.
  • ورود به سیستم: این کلمه کلیدی نام کاربری و رمز عبور را وارد می‌کند تا وارد حساب کاربری شوید.
  • جستجوی محصول: این کلمه کلیدی برای جستجوی یک محصول در وب سایت استفاده می‌شود.
  • افزودن به سبد خرید: این کلمه کلیدی برای افزودن محصول انتخابی به سبد خرید استفاده می‌شود.
  • تسویه حساب: این کلمه کلیدی برای می‌آید تا پرداخت و خرید را تکمیل کند. با استفاده از این کلمات کلیدی، می‌توانیم آزمون‌هایی را مانند موارد زیر ایجاد کنیم:

تست کیس ۱: جستجو و خرید محصول

  • باز کردن مرورگر
  • ورود به سیستم
  • جستجوی محصول
  • افزودن به سبد خرید
  • تسویه حساب

تست کیس ۲: ورود به سیستم و جستجوی محصول

  • باز کردن مرورگر
  • ورود به سیستم
  • جستجوی محصول

برخی از مزایای تست کلمه کلیدی-محور عبارتند از:

  • آسانی ایجاد و نگهداری تست: با توجه به اینکه تست کیس با استفاده از یک مجموعه از کلمات کلیدی طراحی می شوند، ایجاد و نگهداری تست کیس حتی برای برنامه‌های پیچیده نیز آسان است.
  • ق**بل استفاده مجدد بودن: رویکرد کلمه کلیدی-محور به ایجاد تست کیس قابل استفاده مجدد کمک می کند که می توان آن‌ها را در سناریوهای تست و برنامه‌های مختلف استفاده کرد.
  • کاهش وابستگی به مهارت‌های برنامه‌نویسی: استفاده از زبان خاص دامنه و کلمات کلیدی وابستگی به مهارت‌های برنامه‌نویسی را برای خودکارسازی تست کاهش می‌دهد.
  • همکاری بهتر بین تیم فنی: فرمت استفاده شده در تست کلمه کلیدی-محور، به آزمون‌گرها، توسعه‌دهندگان، کمک می کند تا تست کیس را درک و با هم همکاری کنند.
  • اجرای تست سریعتر: استفاده از کلمات کلیدی و عملیات در تست کیس، نیاز به اسکریپت‌نویسی دستی را کاهش داده و منجر به اجرای سریعتر تست کیس می‌شود.

رویکرد Behavior Driven Testing

تست رفتار محور یا BDT روشی است که تمرکز آن بررسی رفتار یک برنامه از دید کاربران آن می‌باشد. این رویکرد از مفهوم توسعه رفتار محور یا Behavior Driven Development (‌BDD) استخراج گردیده. در BDT، تست کیس بر اساس رفتار مورد انتظار سیستم، به صورت زبان توصیف سطح کاربر تعریف می‌شوند. این سناریوها به طور معمول به صورت فرمت زبان طبیعی نوشته می‌شوند که برای افراد فنی و غیر فنی قابل فهم است. آزمون‌گرها تست کیس را برای اطمینان از رفتار درست سیستم در هر سناریو نوشته و اجرا می‌کنند. به عنوان نمونه سناریوهای آزمون وب سایت فروشگاه آنلاین gazmeh.ir به منظور خرید با کمک روش بالا توصیف می‌کنیم.

ویژگی۱: جستجو محصول

  • با فرض لاگین بودن کاربر
  • وقتی که کاربر از بخش جستجو عبارت مورد نظر را تایپ می‌کند
  • آنگاه محصول مورد نظر را مشاهده
  • و به منظور بررسی بر روی آن کلیک کرده
  • و جزییات آن را مشاهده می‌کند

ویژگی۲: افزودن محصول به سبد خرید

  • بافرض لاگین بودن کاربر
  • و جستجو و یافتن محصول
  • وقتی که کاربر بر روی دکمه "افزودن به سبد خرید" کلیک می‌کند
  • آنگاه محصول به سبد خرید اضافه می‌شود
  • و پیام موفقیت آمیز برای کاربر نمایش داده می‌شود

این روش از کلمات کلیدی با فرض اینکه (Given)، وقتی که (When) و آنگاه (Then) به منظور توصیف گام‌های یک ویژگی استفاده می‌کند، در بخش با فرض اینکه، فرضیاتی که برای پیاده سازی یک ویژگی مورد نیاز است رو توصیف می‌کنیم، به عنوان مثال لاگین بودن، دسترسی مربوطه را داشتن. در بخش وقتی که،‌ اکشن یا عمل اصلی مورد نظر برای فعال شدن آن ویژگی را توصیف می‌کنیم، به عنوان مثال وقتی که کاربر بر روی دکمه‌ای کلیک می‌کند یا وقتی که کاربر عبارتی را وارد می‌کند. در مرحله آخر یا آنگاه، نتایج مورد انتظار را توصیف می‌کنیم. تمامی این بخش‌ها به صورت توصیفی و وابسته به ویژگی و نحوه توصیف شماست و می‌توان بخش‌های مختلفی را به آن اضافه یا کم کرد. BDT با تمرکز بر روی رفتار سیستم، به اطمینان از اینکه نرم‌افزار به نیازها و انتظارات کاربران خود می‌پردازد، کمک می‌کند. همچنین با استفاده از شرح رفتار سیستم به زبان طبیعی، همکاری بین توسعه‌دهندگان، تسترها و سایر افراد مرتبط را ترویج می‌دهد. با تست رفتار سیستم از دید کاربران، BDT به اطمینان از قابلیت استفاده، قابلیت اعتماد و برآورده شدن نیازهای مخاطبان هدف، کمک می‌کند.

مقایسه دو رویکرد

تست کلمه کلیدی-محور و تست رفتار محور بر خلاف هم، دو رویکرد متفاوت برای تست خودکار هستند. در زیر تفاوت‌هایی بین این دو رویکرد آمده است:

  • تمرکز: تست کلمه کلیدی-محور بر روی استفاده از کلمات کلیدی برای ایجاد تست کیس تمرکز دارد، در حالی که تست رفتار محور بر روی رفتار سیستم تحت آزمون تمرکز دارد.
  • زبان: در تست کلمه کلیدی-محور از یک زبان خاص و مربوط به سامانه تحت آزمون، برای ایجاد تست کیس استفاده می‌شود، در حالی که در تست رفتار محور از یک فرمت زبان طبیعی برای توصیف رفتار سیستم استفاده می‌شود.
  • همکاری: تست رفتار محور با استفاده از شرح رفتار سیستم به زبان طبیعی، همکاری بین توسعه‌دهندگان، تسترها و سایر افراد مرتبط همچون Prodoct owner و ذی‌نفعان پروژه را ترویج می‌دهد. در حالی که تست کلمه کلیدی-محور به دلیل نیاز به دانش فنی بیشتر، ممکن است برای نهادهای غیر فنی قابل توصیف نباشد.
  • نگهداشت تست: با توجه به اینکه تست‌های کلمه کلیدی-محور با استفاده از یک مجموعه از کلمات کلیدی با در نظر گرفتن قابلیت استفاده مجدد ایجاد می‌شوند، نگهداری آن‌ها نسبت به تست‌های رفتار محور، ساده‌تر است.

ترکیب دو رویکرد

ترکیب تست محور رفتاری (BDT) و تست کلمه‌ کلیدی محور (KDT) می‌تواند به یک رویکرد جامع در تست نرم‌افزار منجر شود. BDT بر روی تست رفتار سیستم از دید کاربران آن تمرکز دارد، در حالی که KDT بر روی تست عملکرد سیستم با استفاده از مجموعه‌ای از کلمات کلیدی یا دستورات تمرکز دارد. با ترکیب BDT و KDT، تسترها می‌توانند به اطمینان از رفتار منتظره سیستم از دید کاربران و تست عملکرد سیستم به طور جامع دست یابند. این رویکرد همچنین با استفاده از شرح رفتار سیستم به زبان طبیعی و یک مجموعه مشترک از کلمات کلیدی یا دستورات برای تعریف تست کیس، همکاری بین تسترها، توسعه‌دهندگان و نهادهای مرتبط را ترویج می‌دهد. همچنین می‌تواند به یک رویکرد قدرتمند در تست نرم‌افزار منجر شود که به اطمینان از برآورده شدن نیازها و انتظارات کاربران، همچنین تست جامع عملکرد سیستم با قابلیت استفاده مجدد بالا کمک می‌کند. ترکیب این دو رویکرد را می‌توان با یک مثال نشان داد.

وب‌سایت خرید آنلاین را در نظر بگیرید که به کاربران اجازه می‌دهد محصولات را جستجو کرده و خرید کنند. رفتار کاربر با استفاده از BDT توصیف می‌شود، هر توصیف می‌تواند یک کلمه کلیدی بوده که قابلیت استفاده مجدد در سایر تست‌‌ کیس ها را داشته باشد.

تست کیس۱: نمایش لیست محصولات

  • بافرض لاگین بودن.
  • و اینکه من در صفحه اصلی هستم.
  • هنگامی که برای "لپ تاپ" جستجو می‌کنم.
  • آنگاه باید لیستی از لپ تاپ‌ها را ببینم.

تست کیس۲: افزودن محصول به سبد خرید

  • با فرض لاگین بودن.
  • و اینکه من در صفحه محصول برای یک لپ تاپ هستم.
  • هنگامی که بر روی دکمه "افزودن به سبد خرید" کلیک می‌کنم.
  • آنگاه لپ تاپ به سبد خرید من اضافه می‌شود.

تست کیس۳: حذف محصول از سبد خرید

  • با فرض لاگین بودن.
  • و لپتاپ در سبد خرید من اضافه شده باشد.
  • هنگامی که بر روی گزینه حذف از سبد خرید کلیک می‌کنم.
  • آنگاه لپتاپ از سبد خرید حذف می‌گردد.

در تمامی مثال‌های بالا من از کلمه کلیدی لاگین بودن استفاه شده است، پیاده سازی این کلمه کلیدی می‌توان شامل باز کردن مرورگر، رفتن به سایت مربوطه و رفتن به صفحه ورود و در نهایت وارد کردن اطلاعات کاربر می‌باشد. برای این کلمه کلیدی، یکبار پیاده‌سازی فنی با ابزار مربوط به تست اتوماتیک انجام می‌گیرد، سپس می‌توان در سناریو‌های دیگر مورد استفاده قرار گیرد.

نتیجه‌گیری

با استفاده از BDT برای تعریف سناریوهای سطح بالا و KDT برای تعریف موارد تست سطح پایین، می‌توانیم اطمینان حاصل کنیم که سیستم نیازها و انتظارات کاربران خود را برآورده می‌کند و همچنین اطمینان حاصل کنیم که عملکرد آن به طور کامل آزمایش شده است. در مقاله‌های آتی یک مثال عملی از ترکیب این دو رویکرد را به منظور پیاده‌سازی تست اتوماتیک شرح خواهیم داد.