اول چند تا تعریف:
نیازمندی آزمون (test requirement): مولفهی خاصی از یک مصنوع نرمافزاری (software artifact) که (حداقل) یک مورد آزمون باید آن را بپوشاند (میتونیم بهش مسیر آزمون هم بگیم)
معیار پوشش آزمون (test coverage criteria): مجموعه قوانینی است که نیازمندیهای آزمون را بر روی یک مدل (مدل آزمون) اعمال میکند.
پوشش آزمون (coverage): باتوجه به مجموعهای از نیازمندیهای آزمونِ TR و یک معیار پوششِ C، یک مجموعهی آزمون، C را پوشش میدهد، اگر و تنها اگر هر عضو در TR، حداقل با یک آزمون (از آن مجموعهی آزمون) پوشش داده شود.
بدیهتا پوشش تمام نیازمندیهای آزمون ممکن نیست (یا حداقل هزینهی زمانی زیادی داره). بنابراین باید سعی شود که مجموعهی آزمون تعداد بیشتری از نیازمندیهای آزمون را پوشش دهند.
موارد آزمون اینگونه بدست میان:
-
انتخاب معیار پوشش مناسب
-
تبدیل کد برنامه به مدل آزمون
-
اعمال معیار پوشش بر مدل آزمون و بدست آوردن نیازمندیهای آزمون
-
بدست آوردن موارد آزمون از این نیازمندیهای آزمون (که این موارد آزمون باید این نیازمندیها را پوشش دهند)
یکی از انواع رایج مدل آزمون، گراف جریانکنترلی (CFG یا control flow graph) هست.
از رایجترین معیارهای پوشش آزمون هم معیارهای پوشش گراف هست (که معمولا بر روی CFG اعمال میشن)، چند نمونه از معیارهای پوشش گراف (که در لینکهای زیر سوال شده بودن):
-
معیار پوشش شاخه (Branch Coverage)
-
معیار پوشش مسیر (Path Coverage)
-
معیارهای پوشش جریاندادهای (Data flow Coverage)
ابزارها و افزونههای مختلفی هم برای پوشش آزمون وجود دارن (برای جاوا)