تست اکتشافی، رویکردی برای تست نرمافزار است که اغلب به عنوان یادگیری همزمان، طراحی تست و اجرا تست توصیف میشود. این مدل تست بیشتر بر روی کشف مشکلات تمرکز میکند و برای کشف عیبهایی که به راحتی در تستهای دیگر پوشش داده نمیشوند، به کمک تستر آمده است. استفاده از تست اکتشافی در سالهای اخیر شتاب بیشتری گرفته است. آزمایش کنندهها (Testers) و مدیر QA تشویق میشوند که تست اکتشافی را به عنوان بخشی از استراتژی تستهای کامل و جامع خود قرار دهند.
تاریخچه تست اکتشافی
تست اکتشافی از روشهای تست است که از چندین سال قبل، مورد استفاده توسعهدهندگان مختلف قرار میگرفته است. اما تعریف این تست در اواخر دهه ۸۰ میلادی توسط Cem Kaner در کتاب Testing Computer Software ایجاد شد. در تست اکتشافی، تستر برنامه را از جهات مختلفی بررسی میکند تا خطاهای احتمالی را پیدا کند. در این تست، فرد آزمایش کننده نیاز به اطلاعات و دادههای قبلی ندارد و بدون پیشزمینه فکری به دنبال عیوب مختلف در یک برنامه میگردد.
چرا از تست اکتشافی استفاده کنیم؟
امروزه تیمها باید از CI/CD (توسعه و پیادهسازی پیوسته) استفاده کنند و بر اساس تقاضای بازار، تجارب دیجیتال با کیفیت ارائه دهند تا انتظارات رو به افزایش مشتریان را برآورده سازند. در حالی که سرعت عرضه در بازار بسیار مهم است، مواری مانند باگهای میلیون دلاری یا تجربه کاربری نامناسب، از بلایای پرهزینه به شمار میآیند. از کمپانی بوئینگ گرفته تا اینستاگرام، نمونههای زیادی وجود دارد که در آن عجله برای تحویل در موعد مقرر و تست بیکیفیت و ضعیف، منجر به خسارت مالی زیادی شده است.
اغلب تستهای کیفیت نرمافزار از یک رویکرد ساختاریافته استفاده میکنند. تست کیسها براساس user storieهای از قبل تعیین شده ایجاد میشوند، درحالی که اطلاعات حاصل شده از تست «test data»، بر اساس تست کیسهای از پیش تعیین شده ایجاد میشوند. پوشش تست با استفاده از معیارهای مهندسی نرمافزار اندازهگیری میشود و در بیشتر موارد، پوشش از نظر فنی کافی است. چیزی که اغلب از دست میرود، موارد لبهای و جدیدی هستند که از طریق آزمون پذیرش کاربر (UAT) کشف و براساس شخصیت کاربر تست میشوند.
ماهیت تست اکتشافی
تست اکتشافی در واقع ماهیتی تصادفی یا بدون ساختار دارد و میتواند اشکالات و باگهایی را که در مرحله ساختاریافته آزمایش کشف نمیشوند را آشکار کند. با تست اکتشافی، تسترها میتوانند با داستان کاربری (user stories) که دنباله مشخصی را دنبال میکند، همراه شوند. تسترها میتوانند نقایص را تفسیر کنند، اظهارات و یادداشتهای صوتی را اضافه کنند و اسناد و مدارک را در لحظه ایجاد کنند. این روشی است که یک user storie به یک test case تبدیل میشود. این اطلاعات را میتوان برای QA نیز مورد استفاده قرار داد.
به طور موثر، اجرای تست بدون مراحل تالیف رسمی آن اجرا میشود، سپس ابزار آزمایش اکتشافی به یک پیشگام برای اتوماسیون تبدیل میشود که این کار به رسمی کردن یافتهها و مستند کردن خودکار آنها کمک میکند. با کمک بازخورد بصری و ابزارهای آزمایش مشارکتی (collaborative testing tools)، همه میتوانند در آزمایش اکتشافی شرکت کنند.
علاوه بر این تستر میتواند آزمون اکتشافی را با استفاده از ابزارهایی برای تست خودکار مستندات به اسکریپتهای تست کاربردی تبدیل کند. این موضوع فرایند تست سنتی را تقویت میکند.
با ترکیب ابزارهایی مانند Jira و محصولات مدیریت تست، تیمها میتوانند به طور مستقیم اسناد ثبت شده را استخراج و به test case تبدیل کنند.
بنابراین، آزمایش اکتشافی جمعآوری اسناد را سرعت میبخشد، آزمایش و تست هر واحد را تسهیل میکند و به ایجاد یک حلقه بازخورد (feedback loop) کمک میکند.
همان طور که جیمز باخ، یکی از بنیانگذاران تست نرمافزار موضوعی (Context-driven testing) میگوید: «آزمایش اکتشافی تفکر علمی را در زمان واقعی تشویق میکند.»
۳۰ نکته برای افزایش بهرهوری تستهای اکتشافی شما
به عنوان یک تستر اکتشافی، شکی نیست که یافتن مشکلات مهم است. اما تست اکتشافی چیزی فراتر از آن است. ما این را به خوبی میدانیم، اما گاهی اوقات لازم است که به خودمان یادآوری کنیم. یک قدم به عقب بردارید و به یاد داشته باشید که شما فقط یک آهنربای جذب باگ نیستید!
آزمایش اکتشافی به ما این فرصت را میدهد تا به طور گسترده و جامع در یک محصول مشارکت داشته باشیم. ما محصولی که در واقع وجود دارد را به نسبت محصولی که افراد انتظار دارند ارزیابی میکنیم؛ این بخش مهمی از ساخت محصولاتی است که مشتریان از ما میخواهند.
این مجموعه نکات به من در تمام طول دوران کاریام به عنوان یک متخصص تست کمک کرده است. این فهرستی است که آرزو میکردم وقتی شروع به کار کرده بودم، داشته باشم ولی حالا آن را به شما میسپارم، به این امید که شاید به نفع شما باشد.
بسیار فراتر از کاربرد
۱. تست اکتشافی در همه جا وجود دارد
روی برنامههای فعال متمرکز نشوید. وایرفریمها (Wireframes) و نمونهها را بررسی کنید. پایگاه داده، نمودار سیستمها، APIها، معیارهای پذیرش، ایدهها، فرایندها، فایل ویژگیها، فرضیات، رابط کاربری (UI) و مشخصات را بررسی کنید. بروید و هر چیزی که میتوانید از آن اطلاعات مفید را بدست آورید، بررسی کنید.
۲. ذهنیت آزمایشی را بپذیرید
تست اکتشافی یک طرز فکر تجربی است. کنجکاوی خود را هدایت و کنترل کنید، روش تحقیق خود را گستردهتر، حقیقت را جستجو و پاسخ سوالات مربوط به ریسکها و فرضیات را کشف کنید. تست کردن با همان طرز فکر آزمایشی که توسط جامعه استارتاپی استفاده میشود، ارتباط نزدیکی دارد.
۳. شناسایی یک حوزه فعلی
استفاده از یک روش یکسان برای آزمایش اکتشافی کارآمد نیست. زمینه کاری فعلی شما چیست؟ فراتر از اهداف کلی تست و اهداف محصول، باید تمایل تیم خود به همکاری در تست و آزمایش را نیز در نظر بگیرید. تصمیماتی که کسب و کار شما در طول تاریخ خود گرفته است و حوزه تمرکز فعلی شرکت خود را به خوبی بشناسید. تمام این موارد میتواند بر نوع گزارش جلساتی که میخواهید تولید کنید، تاثیر بگذارد.
۴. فرضیات درباره نقش خود را به چالش بکشید
مدیر فروش عصبانی فریاد زد:
«فقط برنامه را منتشر کنید وگرنه به اهداف خود نمیرسیم!»
من فقط یک تستر هستم، آیا باید با این موضوع درگیر بشوم؟ همیشه هم حضور همکاران مفید و خوب نیست، اما به عنوان تستر، میتوانیم نقش بیشتر و مفیدتری داشته باشیم. در یکی از شرکتهای قبلی دیده بودم که توانستیم با کاهش سرعت، در واقع سرعت را افزایش دهیم. به همان اندازه که عجیب به نظر میرسید، میدانستم که این کار نتیجه میدهد و داد.
نگاهی فراتر از انتظارات به شغلتان داشته باشید. برای مثال من مدتی از کار خود فاصله گرفتم تا فرایند ۲ هفتهای انتشار یک برنامه را به سازمان گزارش دهم؛ و این بهترین کار ممکن بود. زمانی که فراتر از تسکهای روزانه خود فکر میکنیم، در واقع چه کمکی به تیم خود کردهاید؟ شما میتوانید با یک طراح روی نمونههای اولیه کار کنید، با مالک محصول روی داستان محصول کار کنید یا به یک توسعهدهنده روی حل مشکلات یک برنامه کار کنید. تمام این موارد به درک بهتر فرایندهای کسب و کار و در نتیجه کسب نتایج بهتر کمک میکند.
۵.کتاب Explore it! اثر الیزابت هندریکسون را بخوانید
کتاب «آن را کشف کن!»، یک کتاب بسیار مهم و حیاتی در زمینه تست اکتشافی است. این کتاب هر چیزی که شما برای آزمایش اکتشافی به آن نیاز دارید را در اختیار دارد.
۶. تناسب بین تست اکتشافی و یک تست استراتژیک را در نظر بگیرید
یک رویکرد اکتشافی از منشورهای آزمون (test charters)، مدیریت آزمون جلسه محور(Session-Based Test Management) و یادداشتها بهره میبرد. دن اشبی یک مدل مفید برای این که چگونه همه این موارد در یک قاب بزرگتر و جامع باشد، را ارائه میدهد.
برای کشف آماده باشید
۷. یک هدف برای جلسه خود تعریف کنید
برای جلسه اکتشافی خود هدف تعیین کنید. تبدیل به یک ماشین تولید منشور شوید. اگر بیش از حد متمرکز شوید، ممکن از برخی از اطلاعات را از دست بدهید؛ اگر بیش از حد گسترده فکر کنید، تمرکز خود و اکتشافات مهم را از دست خواهید داد. با تمرین، میتوانید اهدافی را تعیین کنید الیزابت هندریکسون یک چارچوب برای تعیین هدف و منشور ارائه میدهد.
تعریف منشور: بررسی «هدف» با «منابع» برای کشف «اطلاعات»
مثال: بررسی سبد خرید با سبد API برای کشف آسیبپذیریهای امنیتی
۸. تستهای خود را طوری چارچوببندی کنید که خطرات را نشان دهند
برخی از ریسکهای مهم چه هستند؟ سعی کنید یک چالش ۵ دقیقهای داشته باشید. چطور در مورد آنها تحقیق میکنید؟ استخراج ایده برای تست از ریسکها و پاسخ به سوالات مربوط به آن ریسکها از طریق اکتشاف، یک راه عالی برای صحبت با مدیریت در مورد تست است.
۹. اجازه ندهید الزامات از شما باجگیری کند
«بسیار خب، چیزی که من پیدا کردم به معیارهای پذیرش مربوط نیست، بنابراین نیازی نیست آن را ثبت کنم.»
الزامات شما، که اغلب به عنوان داستانهای کاربر نوشته و به عنوان معیارهای پذیرش (Acceptance Criteria) شناخته میشوند، نباید از شما باج بگیرند. من اغلب در دام آزمایش تا حد الزامات افتاده بودم؛ ولی میدانستم که فرصت کشف کردن چیزهای مهم را از دست دادهام. در نهایت الزامات به پیشگویی برای تحریک ایدههای تست و جلسه تبدیل شدند و نه کلیدی تاثیرگذار در مشخص کردن فرایند تستها.
۱۰. برای پشتیبانی از نتایج تست اکتشافی، تسکها را اتوماتیک کنید
تفکر اتوماسیون در تست را بپذیرید. از اتوماسیون برای گسترش نحوه اکتشاف و تستهای خود استفاده کنید، نه برای جایگزین کردن روشهای تست اکتشافی. چرا دادههای کاربر را به صورت دستی ایجاد میکنید در حالی که شما یا یک توسعه دهنده، میتوانید با نوشتن یک اسکریپت تمام آنها را کنار هم قرار دهید؟
۱۱. کاشفها (Heuristic) جرقه اولیه ایدههای تست هستند
یک فیلد خالی را ارسال کنید، فقط از یک کاراکتر و سپس از تعداد زیادی کاراکتر استفاده کنید! مدتی طول کشید تا متوجه شوم که از روشهای اکتشافی(Heuristics) زیادی برای هدایت تستهای خودم استفاده میکنم. یک مجموعه از شیوههای اکتشافی را قبل از تست اکتشافی تعریف و برای شروع ایدهها به آنها مراجعه کنید. یک برگ تقلب (cheat sheet) از تست اکتشافی گنجینه فوقالعاده است. وقتی بیش از حد روی یک موضوع غیر ضروری متمرکز شدهاید، هیوریستیکها به شما کمک میکنند تا تفکر خود را گسترش دهید.
۱۲.زمان تست اکتشافی خود را محدود و مشخص کنید
زمان تمرکز ایجاد میکند. به راحتی میشود ساعتها برای پیدا کردن یک موضوع به کاوش ادامه داد. یک جلسه با زمانی ثابت و از قبل تعیین شده به شما کمک میکند که توقف کنید، یک قدم به عقب بروید و بهترین نتیجه را از یک جلسه کوتاه بگیرید. زمان زیادی طول نخواهد کشید تا بتوانید یک جلسه زمانی دیگر را داشته باشید.
من بیش از ۹۰ دقیقه در هر جلسه را توصیه نمیکنم. هر چه بیشتر اطلاعات کسب کنید، احتمال اینکه مخاطبین خود را تحتتاثیر قرار دهید، بیشتر میشود. به زمان و مخاطبین خود احترام بگذارید. یک زمان اکتشاف کوتاه را با یک هدف مشخص ترکیب کنید، سپس یک تست اکتشافی و ترکیبی قدرتمند خواهید داشت.
۱۳. از دفترچه یادداشتهای مختلف استفاده کنید
همیشه یک دفترچه یادداشت فیزیکی یا دیجیتالی در دست داشته باشید. هر مکالمه فرصتی برای کشف و ضبط آموختهها است. برای تست موفق مبتنی بر جلسه، باور دارم که داشتن یک ابزار یادداشتبرداری ضروری است.
ثبت با قصد و نیت
۱۴. یادداشتها را طوری بنویسید که انگار میخواهید برای کسی داستان بگویید
شما در وسط یک جلسه اکتشافی هستید. چه اتفاقی در حال رخ دادن است؟ به چه موضوعی فکر میکنید؟ چه کاری انجام میدهید؟ شما میخواهید با مخاطبین خود ارتباط برقرار کنید و به آنها کمک کنید با تجربه استفاده از محصول همراه باشند. من با یاد گرفتن نحوه روزنامهنگاری چیزهای زیادی یاد گرفتهام. این مثال را امتحان کنید:
تصور کنید که شما یک خبرنگار هستید که از یک پارک آبی جدید، بازدید میکنید. خوانندگان شما میخواهند بدانند این پارک خوب است؟ شما باید آنها را درگیر کنید، با آنها همدردی کنید و همزمان به آنها کمک کنید درک کنند که آیا این مکان برای آنها مناسب است؟
۱۵. اکتشافات خود را دستهبندی کنید
با دستهبندی اکتشافات خود، به آنها معنا و مسیر بدهید. من موفق شدهام که یادداشتهای خود را به عنوان یک مشکل، سوال، ایده یا طرح (روش PQIP) دستهبندی کنم. آیکونها، تصاویر و رنگها ابزارها ارتباطی قوی هستند، از آنها برای بهبود سازماندهی کشفیات خود استفاده کنید.
۱۶. استفاده از ویدئو برای توصیف یک اشکال (Bug)
یک ویدئو، شما را از زحمت تهیه لیست مراحل برای بازسازی و توضیح آن چه که واقعا اتفاق افتاده است، نجات خواهد داد. از یک توضیح متنی در کنار ویدئو استفاده کنید. ابهام را حذف کنید؛ صرف گفتن کافی نیست، اشکالات را نشان دهید. برای این کار میتوانید از ابزارهای مختلف ضبط صفحه (Screen Recorder) استفاده کنید.
۱۷. سوال بپرسید
سوالات به شما در تعیین چارچوب تست اکتشافی کمک میکنند. از آنها برای یافتن پاسخ در طول جلسه خود استفاده کنید. اگر از چیزی مطمئن نیستید سوال بپرسید؛ سوالات فرضیات را حذف میکنند. چیزهایی که نمیدانید را با پرسیدن سوال، بهتر درک کنید.
۱۸. با ایدههای خود جرقههای همکاری را روشن کنید
ایدهها ابزار قدرتمندی هستند. ما به هنگام اکتشاف، نکات جالبی بدست میآوریم. این ایدهها را مستندسازی و آنها را به عنوان بخشی از خلاصهنویسی خود معرفی کنید. به خودتان فرصت دهید تا به شکلگیری یک محصول کمک کنید.
۱۹. بیشتر وقتها تعریف و تمجید کنید
به جای این که همیشه دنبال چیزی باشید که در جای خود نیست، سپاسگزار آنچه هست باشید. زمانی که در حال اکتشاف هستید، پا جای پای دیگران بگذارید -نه تنها مشتریان بلکه افرادی که به چیزی که در حال بررسی آن هستید، کمک میکنند. قدردانی خود را با آن افراد به اشتراک بگذارید. این مهربانی باعث ایجاد رابطه خوب با تیم شما و حتی فراتر از آن میشود.
۲۰. از محصولات قابل مقایسه برای نظرات بیشتر استفاده کنید
ما همیشه از محصولات استفاده میکنیم. در مورد آنها چه چیز مناسب و پرکاربردی وجود دارد؟ شما به چه مواردی علاقه ندارید؟ برای هدایت ارزیابی خود از محصولات مشابه برای حل مشکل استفاده کنید. این محصولات به شما کمک خواهند کرد تا ایدههایی برای آزمایش، توسعه یا بهبود ویژگیهای آنها ایجاد کنید.
۲۱.زدن تگ «خارج از منشور» به موارد
این خیلی خوب است که از هدف جلسه اکتشافی خود منحرف شوید؛ ولی این موارد را خارج از منشور قرار دهید. این کار را به مرور زمان دنبال کنید تا احساس کنید که ماندن در منشور چقدر مفید است. آیتمهای خارج از منشور میتوانند منشور بعدی شما را تشکیل بدهند. از این رو میتوانید منشور و مستندات بعدی خود را کاملتر کنید و در نهایت از آیتمهای خارج از منشور برای شروع مکالمه در مورد ریسک استفاده کنید.
۲۲.توجه بیشتر به جزئیات
اگر یک برنامه کاربردی وب را بررسی میکنید، تمامی جزئیات را با کنسول مرورگر نگاه کنید و لاگ(log time)برنامه کاربردی خود را ببینید. قطعا بستههای اطلاعات مفیدی را کشف خواهید کرد.
۲۳. کمی استراحت کنید
گاهی اوقات شما بیش از حد عمیق هستید و مغز شما بیش از حد فکر میکند که چه چیزی را میخواهد به دست آورد. کار را متوقف کنید و بروید کمی هوا یا یک لیوان آب بخورید. باور نکردنی است که یک استراحت کوتاه، چه کاری میتواند انجام دهد و چقدر میتواند مفید باشد.
اشتراک یک داستان تست بزرگ
۲۴. پیش از به اشتراکگذاری، یادداشتهای خود را بررسی کنید
پیش از به اشتراکگذاری، حداقل یکبار یادداشتهای خود را بخوانید. تا به حال اتفاق افتاده است که به تمامی سوالات پاسخ دهید؟ آیا لازم است برای سوالات بیپاسخ منشور، اهداف یا ماموریتهای بیشتری ایجاد کنید؟ آیا یادداشتهای شما برای مخاطب هدف منطقی هستند؟ یادداشتهای جلسه را روان بنویسید تا بتوانید برای استفادههای بعدی به آنها رجوع کنید.
۲۵. به اصل مطلب برسید، اما خودتان را سانسور نکنید
همیشه یک مرز باریک بین ثبت کامل همه چیز و رسیدن به هدف وجود دارد. هنر خلاصه کردن مطالب، در الویتبندی مواردی است که میخواهید به دیگران ارائه دهید. به این فکر کنید که چه چیزی برای مشتریان، تیم شما و به طور گستردهتر، کسب و کار مهم است؟ پیغام خود را بر اساس آن تنظیم کنید. با یک خلاصه شروع کنید و به دریافت کننده متن اجازه دهید به راحتی از جزئیات استفاده کند.
۲۶. زود به زود و اغلب گزارش دهید
شما تازه یک جلسه در بازه زمانی را تمام کردهاید. یادداشتهای خود را مرور و ویرایش کردهاید و یک خلاصه مفید بدست آوردهاید .خب حالا چه اتفاقی میافتد؟ برای به اشتراکگذاشتن با مخاطبین هدف خود تردید نکنید. با یک سوال پیش بروید: «هدف جلسه، آماده شدن برای توضیح است. چه زمانی برای با هم شروع کردن در کنار یکدیگر و اجرای آموختههایمان است؟»
الهام بخشیدن به خود برای الهام بخشیدن به دیگران
۲۷.همکاری و هماهنگی با دیگر تسترها
یاد بگیرید که یک تستر دیگر، چگونه موارد را بررسی میکند. رویکرد آزمایش اکتشافی آنها را امتحان کنید. در توسعه یک رویکرد با یکدیگر همکاری کنید. ما میتوانیم چیزهای زیادی از همکارانمان یاد بگیریم.
۲۸.در بحث و جلسات تست اکتشافی شرکت کنید
در کانال تست اکتشاف در Ministry of Testing، همواره گفتگوی مداومی درباره تست اکتشافی وجود دارد و موضوعات مفیدی در این باشگاه مورد بحث و گفتگو قرار میگیرد. آیا به کمک کردن فکر کردهاید؟ مهم نیست که پنج دقیقه یا پنج سال است که تستر هستید، شما میتوانید در این مکالمه شرکت کنید.
۲۹. در یک کتابخانه رو به رشد در حوزه موارد آموزشی سرمایهگذاری کنید
از سایتهای مختلف فعال در زمینه تست نرمافزار استفاده کنید. اطلاعات خود را به روز نگه دارید و به منابع مختلف سر بزنید.
۳۰. یک پست در وبلاگ در مورد تجربیات خود بنویسید
نوشتن درباره آن چه انجام میدهید و یاد میگیرید، به شما کمک میکند رویکرد خود را بازتاب دهید. در نهایت زمان نوشتن یک مقاله درباره موضوع آن تحقیق خواهید کرد تا به شما در نگارش آن کمک کند و موارد شگفت انگیزی را کشف خواهید کرد که تا حالا نمیشناختید، مانند روش آزمایش اکتشافی مارسل گهلن که از روشهای نوین تست اکتشافی است.
یک سفر برای یادگیری
یک فرصت باورنکردنی برای استفاده از آزمایش اکتشافی به عنوان تجربه یادگیری وجود دارد. این مورد را نباید دست کم بگیریم. چیزهای زیادی برای کشف و حتی پتانسیل بیشتری برای پیشبرد این رویکرد و طرز فکر وجود دارد. یک گام بردارید و با دیگران به اشتراک بگذارید، جرقه همکاری را ایجاد کنید و به تکامل تمرین تست اکتشافی ادامه دهیم. بیایید یکدیگر را به کاوش و جستجو تشویق کنیم!
جمعبندی
همانطور که از ابتدای مقاله به آن اشاره کردیم، تست اکتشافی در واقع یک تیر و چند نشان است. با انجام این تست شما میتوانید با ابعاد مختلف یک نرمافزار و سیستم آشنا شوید، باگهای مختلف را در مراحل مختلف حل کنید و در همین فرایند، یادگیری مستمر هم داشته باشید. استفاده از تست اکتشافی که از دههها قبل وجود داشته است، امروز و با پیشرفت هرچه بیشتر نرمافزارها اهمیت بیشتری پیدا کرده است. البته توجه کنید که خوب است در کنار تست اکتشافی به دیگر روشهای تست نرمافزار هم توجه کنید تا برنامه شما، به بهترین شکل ممکن اجرا شود.
منبع: www.ministryoftesting.com
دیدگاهتان را بنویسید