کتاب Software Test Design (طراحی تست نرمافزار: برنامههای آزمایشی جامع بنویسید تا باگهای حیاتی را در برنامههای وب، دسکتاپ و موبایل کشف کنید.) یک منبع کاربردی و عملیاتی برای یادگیری طراحی تست برای نرمافزار است. این کتاب در 13 فصل به بررسی و شرح طراحی تست نرمافزار از مقدماتی تا پیشرفته خواهد پرداخت.
در ادامه مقدمهای از کتاب Software Test Design را از زبان نویسنده شرح خواهیم داد.
مقدمهای بر کتاب Software Test Design:
این کتاب به شما نشان میدهد که چگونه ویژگیهای نرمافزار جدید را به طور جامع آزمایش کنید، خواه در صفحات وب، دسکتاپ یا برنامههای موبایل پیادهسازی شوند. همه چیز را از تولید مشخصات عمیق گرفته تا تست دقیق جعبه سیاه و سفید، رسیدگی به موارد خطا و ملاحظات تجربه کاربر، تا مناطقی که گاهی اوقات برنامههای آزمایشی مانند قابلیت نگهداری و عملکرد در شرایط خرابی را از دست میدهند، پوشش میدهد.
همان باگها و نقصها بهطور مکرر در توسعه نرمافزار ظاهر میشوند، بنابراین کتاب Software Test Design دارای طیف گستردهای از تستها و سناریوهایی برای بررسی است تا به شما در دستیابی به پوشش آزمایشی عالی کمک کند.
آنها با دهها نمونه مثال نشان داده شده اند که من در طول دهههای خود در صنعت نرمافزار با آنها مواجه شده ام. در حالی که هرگز نمیتوان تضمین کرد که یک محصول بدون اشکال است، توصیههایی که در اینجا ارائه میشوند بهترین شانس را برای تشخیص نقص به شما میدهند.
کتاب Software Test Design برای چه کسی است؟
بسیاری از افراد مختلف میتوانند آزمایش را در طول چرخه توسعه انجام دهند. علاوه بر تسترهای اختصاصی، توسعهدهندگان باید همیشه کد خود را امتحان کنند و صاحبان محصول، مهندسان پشتیبانی و نویسندگان فنی نیز می توانند بازخورد رسمی کم و بیش ارائه دهند.
کتاب Software Test Design برای هر کسی است که در تست نرمافزار، صرف نظر از عنوان شغلی رسمی خود، درگیر است. همه میتوانند از پیشنهادات اینجا برای افزایش پوشش تست و بهبود کیفیت ویژگیهایی که منتشر میکنید استفاده کنند.
تست منحنی یادگیری دوست داشتنی دارد. میتوانید با آزمایش دستی روی رابطهای عمومی با استفاده آسان که به خوبی صیقل داده شده و مستند شده اند، شروع کنید. از آنجا، میتوانید عمیقتر به سیستم بروید، گزارشها و معیارها را بررسی کنید و از رابطهای داخلی استفاده کنید. آزمایشکنندگان با مجموعه مهارت مناسب میتوانند کد را مستقیماً با انجام بازبینی کد و نوشتن آزمونهای واحد بهبود دهند. این کتاب همه این رویکردها را برای بهبود تست شما، چه مبتدی یا یک آزمایش کننده متخصص، توصیف میکند.
آیا این کتاب برای پروژههای چابک یا آبشار است؟ هر دو!
کتاب Software Test Design در مورد مدلهای مختلف توسعه مانند Agile یا waterfall بحث نمیکند. از هر کدام که استفاده میکنید، باید یک برنامه آزمایشی جامع برای اعمال ویژگیهای جدید و کشف عیوب آنها طراحی کنید.
با این حال، بسته به روشی که استفاده میکنید، تفاوتهای زمانی قابل توجهی وجود خواهد داشت. پروژههای آبشار ممکن است چندین ماه طول بکشد و هفتهها به حوزههای مختلف آزمایشی که در اینجا توضیح داده شده است اختصاص داده شود. در مقابل، پروژههای Agile به سرعت در انواع مختلف آزمایش چرخه میزنند و هر کدام را در چرخه به چرخه انجام میدهند.
علیرغم تفاوتهایشان، هر دو نوع پروژه، و بسیاری از هیبریدهای دنیای واقعی که در عمل استفاده میشوند، نیاز به یک طرح آزمایشی کامل دارند که جنبههای مختلف رفتار سیستم را پوشش دهد. روی هر نوع پروژهای که کار میکنید، کتاب Software Test Design میتواند به شما در نوشتن طرحهای تست بهتر کمک کند.
آیا این کتاب برای تست دستی است یا خودکار؟ هر دو!
کتاب Software Test Design پیشنهادهای زیادی برای آنچه که باید تست کنید دارد. نحوه اجرای آن تستها را پوشش نمیدهد. هدف، پس از اعمال این کتاب در ویژگی شما، تولید یک طرح آزمایشی جامع با مراحل تشخیص بسیاری از انواع نقص است.
نحوه اجرای طرح آزمایشی به شما بستگی دارد. برخی از زمینهها باید به صورت دستی انجام شوند – برای مثال، آزمایش اکتشافی شامل یک آزمایشکننده میشود که یک ویژگی را برای بررسی نحوه رفتار آن به روشی غیرساختیافته در اختیار میگیرد.
تنها زمانی که نحوه عملکرد آن را یاد گرفتید، میتوانید مشخصات ویژگی را بنویسید و آزمایش سیستماتیک، دستی یا خودکار انجام دهید. تست تجربه کاربر نیز بهتر است با حضور یک کاربر واقعی شروع شود. برعکس، آزمایش بار برای رسیدن به سطوح بار مورد نیاز به اتوماسیون نیاز دارد و نمیتوان آن را با دست انجام داد.
در بین بسیاری از تستهای عملکردی، امنیت، موارد خطا و حتی برخی از تستهای تجربه کاربر را میتوان خودکار کرد. در صورت امکان، این یک مرحله حیاتی در فرآیند آزمایش برای آزاد کردن زمان آزمایشکنندگان برای طراحیهای آزمایشی آینده است. این امر به ویژه در هنگام پیروی از یکپارچگی مداوم/پیوسته صادق است
خط لوله استقرار (CI/CD)، که در آن تغییرات در عرض چند دقیقه به سیستمهای زنده منتقل میشوند. در آنجا، باید تستها را خودکار کنید و با دقت انتخاب کنید که در هر تغییر کدام مورد اجرا شود.
کتاب Software Test Design در مورد چگونگی انجام تست دستی، تستهای خودکار یا ابزارهایی که باید استفاده کنید صحبت نمیکند.
این موضوعات برای سایر کتابهای فهرست Packt هستند. در اینجا، ما توضیح خواهیم داد که چه تستهایی را باید اجرا کنید و چگونه باید برنامه آزمون خود را طراحی کنید.
انواع تست
سطوح مختلفی از تست وجود دارد، اما این کتاب تنها بر یک مورد تمرکز دارد – تست سیستم. این سخت ترین بخش آزمایش است زیرا کل سیستم را پوشش میدهد که با هم کار میکنند زیرا بسیار دشوار است، نیاز به فکر و برنامهریزی دارد که در این کتاب توضیح داده شده است. این بدان معنا نیست که این تنها نوع آزمایش است. شما باید تمام تستهای سیستم را در اینجا با آزمایش در سطوح دیگر تکمیل کنید
هر کدام نقاط قوت متفاوتی دارند. در پایینترین سطح، تست واحد است که به عنوان تست کامپوننت نیز شناخته میشود، جایی که اسکریپتها به صورت فردی بررسی میشوند.
توابع یا ماژولها این شکل از آزمایش اغلب توسط توسعهدهندگان انجام میشود، زیرا آنها میدانند که از کد خود چه انتظاری دارند و بهترین موقعیت را برای نوشتن مهارهای آزمایشی برای هدایت آن دارند.
تستهای واحد میتوانند اقدامات فردی را به طور کامل آزمایش کنند، اما نمیتوانند مشکلاتی را که هنگام استفاده از توابع با هم ایجاد میشوند، پیدا کنند. برای یافتن این مسائل، به تست یکپارچهسازی نیاز دارید.
این رویکرد شامل اجرای کل ماژولهای جدا شده از بقیه سیستم، مانند رابطهای کاربر یا پایگاههای داده است. در این مرحله، آزمایش بسیار پیچیدهتر میشود. از آنجایی که موارد بسیار بیشتری ممکن است اشتباه پیش بروند، به شما امکان میدهد دسته دیگری از مسائل را پیدا کنید.
در حالی که هر دو تابع A و B ممکن است به تنهایی به خوبی کار کنند، فرضیات یا اجرای نادرست ممکن است به این معنی باشد که آنها با هم کار نمیکنند. تست یکپارچه سازی آن دسته از اشکالات را پیدا می کند.
این میتواند توسط توسعهدهندگان یا آزمایش کنندگان اختصاصی انجام شود، اگرچه به مقدار قابل توجهی از اتوماسیون نیاز دارد و برای آزمایش دستی نامناسب است. استفاده از ماژولها یا کلاینتها بهطور مستقل از سایر قسمتهای سیستم، نیازمند مهارهای آزمایشی برای قرار گرفتن در مناطقی است که اجرا نمیشوند.
تمرکز کتاب Software Test Design فراتر از تست ادغام، تست سیستم است. هنگامی که کل سیستم با هم کار میکند و همه ماژولها با سایر ماژولها ادغام میشوند، کلاس نهایی اشکالات آشکار میشود. این مشکلات تنها در هنگام اجرای کامل سیستم در یک محیط واقعی مانند بارگذاری و مشکلات بین ماژولها رخ میدهد.
نکته مثبت این است که تست سیستم میتواند تمام اشکالات واقعبینانهای را که روی کاربران تاثیر میگذارد را پیدا کند. از جنبه منفی، ترجمه از رفتار سیستم به عملکردهای فردی که در حال شکست هستند دشوار است، و سیستمها میتوانند به طور کامل آزمایش شوند. هدف این کتاب ارائه تکنیکها و ایدههایی برای عبور موفقیتآمیز آن چالش است.
قرارداد نامگذاری مورد استفاده در اینجا از برنامه درسی هیئت بینالمللی تست صلاحیت تست نرمافزار (ISTQB) پیروی میکند که به تست مؤلفه، یکپارچهسازی و سیستم اشاره دارد. برخی از همپوشانی با موضوعات تحت پوشش وجود دارد، اگرچه این کتاب به جای تمرکز بر نظریه، رویکرد عملی و عملیتری دارد.
با انتخاب مفیدترین بخشهای برنامه درسی ISTQB و گسترش جنبههای عملی آنها، این کتاب به شما نشان میدهد که چگونه ویژگیهای نرمافزار را به طور کامل آزمایش کنید. روند آزمون موضوعات مهم زیادی وجود دارد که این کتاب نمیتواند به آنها بپردازد. کتاب Software Test Design فقط در مورد نوشتن برنامههای آزمون عالی برای یافتن طیف گستردهای از مسائل در برنامه شما است.
فرآیندهای آزمایشی
موضوعات مهم زیادی وجود دارد که این کتاب نمی تواند به آنها بپردازد. این کتاب فقط در مورد نوشتن برنامههای آزمون عالی برای یافتن طیف گستردهای از مسائل در برنامه شما است. این تیمهای آزمایشی یا هر چیزی که با فرآیندهای آزمایشی مرتبط است را پوشش نمیدهد.
به چند تستر در شرکت خود نیاز دارید؟ چگونه باید ترتیب داده شوند تا با صاحب محصول و توسعهدهندگان کار کنند؟ چقدر زمان باید به اشکال مختلف تست اختصاص دهند؟ همچنین مدیریت ارتباطات را پوشش نمیدهد، مانند نحوه ایجاد اشکالات و چرخه عمر آنها، اما به شما میگوید چگونه آن اشکالات را پیدا کنید.
در نهایت، کتاب Software Test Design روند انتشار، از جمله نحوه ارزیابی نتایج آزمایش، استفاده داخلی و برنامههای بتا، و نحوه امضا و اجرای نسخهها را شرح نمیدهد. باز هم، این بستگی به محصول و صنعت شما دارد. حتی اگر تصمیم ندارید همه آزمایشها را در اینجا انجام دهید، میتوانید عمداً انتخاب کنید که کدام یک را حذف کنید تا بهترین تصور ممکن را از خطراتی که در پیش دارید داشته باشید.
هدف کتاب Software Test Design، این است که شما باید بتوانید به سرعت یک طرح آزمایشی جامع تهیه کنید، که به سرعت بخشهای مختلف آزمایش مربوط به محصول شما و ویژگیهای آن را پوشش میدهد.
اغلب در توسعه نرمافزار، عاملی که سرعت شما را محدود میکند، شناسایی کارهایی است که باید انجام دهید، بنابراین با درک انواع اصلی تستها و شکستهای رایج، میتوانید تستها را سریعتر توسعه دهید.
این قابلیت به شما امکان میدهد مشکلات بیشتری را در اوایل چرخه توسعه پیدا کنید، در زمان صرفهجویی کنید، پروژهها را سرعت بخشید و به مشتریان خود تجربه کاربری بهتری ارائه دهید. با این گفته، اکنون میتوانیم حوزههایی را که این کتاب پوشش میدهد به تفصیل ببینیم.
آنچه این کتاب پوشش میدهد:
قسمت 1 کتاب Software Test Design، آماده سازی برای تست، مراحل لازم را قبل از شروع نوشتن برنامه آزمون پوشش میدهد.
فصل 1 کتاب Software Test Design، استفاده حداکثری از تست اکتشافی، نحوه بهترین انجام تست اکتشافی و زمان انجام آن را شرح میدهد. هدف اصلی آزمایش اکتشافی یافتن اشکال نیست، بلکه درک بهتر یک ویژگی به منظور بهبود مشخصات ویژگی و برنامههای آزمایشی است. همچنین هرگونه مشکل مسدود کردن را که ممکن است آزمایشات بعدی را به تاخیر بیندازد، پیدا میکند.
فصل 2 کتاب Software Test Design، نوشتن مشخصات ویژگیهای عالی، نحوه نوشتن مشخصات ویژگی جامع و مفید را نشان میدهد. این سند مبنایی برای همه آزمایشهای بعدی خواهد بود، بنابراین باید تمام سؤالاتی را که ممکن است ایجاد شود پوشش دهد. این نیاز به ورودی از چندین گروه دارد، بنابراین این سند همیشه نیاز به بررسی کامل دارد.
این بررسی مشخصات در فصل 3، نحوه اجرای بررسیهای مشخصات موفقیت آمیز پوشش داده شده است، که در آن مشخصات را با توسعهدهندگان و صاحبان محصول بررسی میکنید.
توسعهدهندگان باید موارد یا شرایط خاصی را که مجبور بودند کد اضافه کنند، برجسته کنند، در حالی که مالک محصول تصمیماتی میگیرد که میتواند بر تجربه کاربر و دامنه تغییرات تأثیر بگذارد. اجرای موفقیت آمیز آن بررسی برای دریافت آنچه آزمایش کنندگان از آن نیاز دارند، مسئولیت شماست.
با داشتن مشخصات و تجربه آزمایش اکتشافی، میتوانید طراحی طرح آزمایشی را شروع کنید. بخش 2 کتاب Software Test Design، تست عملکردی، این کتاب انواع مختلف تست عملکردی را توضیح میدهد که در آن محصول شما به ورودیهای مختلف پاسخ میدهد.
فصل 4 کتاب Software Test Design، انواع تست، موارد، و محیط، به بررسی بهترین نحوه نوشتن موارد تست و محل اجرای آنها می پردازد. این نشان می دهد که چگونه واحد، یکپارچهسازی، و تستهای سیستم میتوانند با هم کار کنند و در کجا در چرخه انتشار قرار میگیرند.
فصل 5 کتاب Software Test Design، تست عملکرد جعبه سیاه، آشناترین حوزه آزمایش است و اولین موردی که مردم به آن فکر میکنند. وقتی از ویژگی استفاده میکنید، آیا به درستی کار میکند و به اهداف اعلام شده خود میرسد؟ حتی در این نوع تست، ایدهها و پیشنهادات زیادی برای یافتن نقاط ضعف و مسائل رایج وجود دارد.
فصل 6 کتاب Software Test Design، تست عملکرد جعبه سفید، با دانش کد زیربنایی و معماری آن مطلع میشود. درک نحوه عملکرد کد به شما امکان میدهد مجموعه مهم دیگری از تستها را اضافه کنید.
فصل 7 کتاب Software Test Design، آزمایش موارد خطا، به ورودیها یا موقعیتهای نامعتبر و نحوه مدیریت برنامه با آنها اختصاص دارد. این یک منطقه آزمایشی بزرگ است زیرا تعداد ورودیهای نامعتبر اغلب به طور گسترده ای از ورودیهای معتبر احتمالی بیشتر است. علاوه بر این، موارد خطا بیشتر احتمال دارد که نقص داشته باشند زیرا زمان کمتری برای فکر کردن به عواقب آنها نسبت به سناریوهای مسیر شاد صرف می شود.
فصل 8 کتاب Software Test Design، تست تجربه کاربر، مجموعه منحصربهفردی از ملاحظات را پوشش میدهد تا اطمینان حاصل شود که استفاده از برنامه شما آسان است. این بسیار ذهنیتر از سایر حوزههای آزمایش است و ممکن است نیاز به قضاوت در مورد این باشد که به عنوان مثال، نام فرمان واضحتر است، یا کدام تابع بیشتر مورد استفاده قرار میگیرد و باید راحتتر به آن دسترسی داشت. بسیار مهم است که این سؤالات را به درستی دریافت کنید تا بهترین تجربه را به کاربران خود ارائه دهید.
فصل 9 کتاب Software Test Design، تست امنیت، آسیبپذیریهای امنیتی رایجی را که باید به طور معمول توسط برنامههای آزمایشی شما بررسی شوند، فهرست میکند، و همچنین حملات مختلفی را که میتوانید برای اطمینان از وجود حفاظتهای مناسب انجام دهید، فهرست میکند.
فصل 10 کتاب Software Test Design، قابلیت نگهداری، گزارش برنامه شما، تولید رویداد و نظارت را در نظر میگیرد. اگر مشکلی وجود داشته باشد، تشخیص و رفع آن چقدر آسان خواهد بود؟ این میتواند برای کسب و کارها اهمیت کمتری داشته باشد، زیرا مستقیماً با مشتری روبرو نیست، اما برای تیم آزمایش و سایر کاربران داخلی که زمان زیادی را صرف پیگیری مسائل میکنند، از اهمیت بالایی برخوردار است.
آن فصلها حوزههای عملکردی آزمایش را پایان میدهند، جایی که شما یک عمل خاص را انجام میدهید و یک نتیجه خاص را بررسی میکنید. اگر برنامه تحت آزمایش همه این تستها را گذرانده باشد، در شرایط عادی برای کاربران کار خواهد کرد. بخش 3، تست غیر عملکردی، شرایط غیرعادی مانند بار زیاد و خرابی سیستم را در نظر میگیرد.
فصل 11 کتاب Software Test Design، آزمایش مخرب، سناریوهایی را در نظر میگیرد که در آن بخشهای مختلف سیستم عمداً غیرفعال یا تخریب میشوند تا اطمینان حاصل شود که بقیه سیستم به خوبی رفتار میکند و میتواند از مشکلات بازیابی شود.
فصل 12 کتاب Software Test Design، تست بارگذاری، رفتار زمانی که برنامه شما با حداکثر کارایی خود اجرا میشود را بررسی میکند.
در حالی که ممکن است بتواند اقدامات فردی را به درستی انجام دهد، آیا زمانی که چندین بار تکرار شوند قابل اعتماد است؟ این تستها همچنین بررسی میکنند که برنامه شما به عملکرد خوب خود ادامه میدهد، حتی زمانی که برخی از زیرسیستمها تحت بار قرار میگیرند.
در نهایت، فصل 13 کتاب Software Test Design، تست استرس، آزمایشهایی را توصیف میکند که به طور عمدی سیستم را فراتر از قابلیتهای آن بارگذاری میکنند – برای مثال، اگر تعداد زیادی از موجودیتها پیکربندی شده باشند یا اگر سیستم از محدودیتهای بارگذاری خود فراتر رفته باشد.
مانند آزمایش مخرب، رفتار صحیح این است که با ظرافت شکست بخورید و پس از رفع شرایط استرس، بهبود پیدا کنید.
پیوست شامل یک طرح آزمایشی نمونه است که این ایدهها را برای یک ویژگی مثال – کاربرانی که در یک صفحه وب ثبت نام میکنند – عملی میکند.
استفاده از این راهنما بهترین شانس را برای یافتن نقص در نرمافزار خود به شما میدهد. با این حال، علیرغم تمام پیشنهادات اینجا، طبق تجربه من، وقتی از طرح آزمایشی خارج میشوید، جالبترین اشکالها را پیدا میکنید.
امتحان کردن ایدههایی برای خودتان یا دنبال کردن چیزهای عجیب و غریبی که میبینید، راهی عالی برای فکر کردن به موارد آزمایشی است که هیچکس دیگری در نظر نگرفته است. مشاهده و کنجکاوی در طول آزمایش حیاتی است، بنابراین همیشه چشمان خود را باز نگه دارید.
پیشنهادات اینجا دستور العملی نیستند که باید دنبال شوند، بلکه در عوض راهنمایی هستند که از آن میتوانید برنامههای آزمایشی خود را ایجاد کنید. آزمایش مانند ماهیگیری است. نمیتوانید چیزی را که پیدا میکنید تضمین کنید، و در میان مسائل بزرگی که واقعاً به دنبال آن هستید، موارد کوچکتر زیادی وجود خواهد داشت. با این حال، با جستجو در امیدوارکنندهترین مکانها و استفاده از بهترین تکنیکها، بیشترین شانس موفقیت را به خود میدهید.
شکار باگها مبارک!
سرفصلهای کتاب Software Test Design:
- Cover
- Title Page
- Copyright and Credits
- Contributors
- Table of Contents
- Preface
- Part 1 – Preparing to Test
- Chapter 1: Making the Most of Exploratory Testing
- Chapter 2: Writing Great Feature Specifications
- Chapter 3: How to Run Successful Specification Reviews
- Chapter 4: Test Types, Cases, and Environments
- Part 2 – Functional Testing
- Chapter 5: Black-Box Functional Testing
- Chapter 6: White-Box Functional Testing
- Chapter 7: Testing of Error Cases
- Chapter 8: User Experience Testing
- Chapter 9: Security Testing
- Chapter 10: Maintainability
- Part 3 – Non-Functional Testing
- Chapter 11: Destructive Testing
- Chapter 12: Load Testing
- Chapter 13: Stress Testing
- Conclusion
- Appendix – Example Feature Specification
- Index
- Other Books You May Enjoy
جهت دانلود کتاب Software Test Design میتوانید پس از پرداخت، دریافت کنید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.