شماره ركورد
19231
شماره راهنما(اين فيلد مربوط به كارشناس ميباشد لطفا آن را خالي بگذاريد)
۱۹۲۳۱
پديد آورنده
فريد فيضي
عنوان
مكانيابي آماري خطاهاي پنهان با توجه به ساختار برنامه و تحليل خطاخيزي
مقطع تحصيلي
دكتري تخصصي
رشته تحصيلي
نرم افزار
سال تحصيل
۱۳۹۲
تاريخ دفاع
۱۳۹۷/۰۲/۱۶
استاد راهنما
دكتر سعيد پارسا
دانشكده
كامپيوتر
چكيده
فرآيند اشكال زدايي نرمافزار، يكي از پيچيدهترين و پرهزينهترين مراحل توليد نرمافزار به حساب ميآيد. همين امر باعث شده راهكارهاي متعددي بهمنظور خودكارسازي اين فرآيند جهت كمك به كاربر در انجام اشكال زدايي ارائه شود. پژوهش هاي متعدد انجام گرفته در سال هاي اخير نشان از برتري روشهاي آماري نسبت به ساير روشها دارد؛ با اين وجود، اين روشها همچنان داراي برخي مشكلات و محدوديتها هستند. راهكارهاي آماري وابستگي زيادي به دادههاي ورودي داشته و با تغييرات دادهها دچار ناپايداري ميشوند. اين روشها احتمال يكساني را براي خطاخيزي بخشهاي مختلف كد در نظر مي-گيرند؛ در حالي كه مكان يك جمله در داخل برنامه و خطاخيزي ساختار برنامهنويسي كه جمله در آن قرارگرفته ميتواند در تعيين ميزان وابستگي آن جمله با عدم موفقيت برنامه مؤثر باشد. اين روشها بدنبال موجوديتهاي مرتبط با خطا مي گردند، در حالي كه مسئله مكانيابي خطا يك مسئله علّي-معلولي است و بايد بدنبال علتهاي خطا گشت. هدف اصلي اين رساله بهكارگيري تحليل علّي-آماري همگام با فنون تحليل برنامه، در نظرگرفتن ساختار ايستاي برنامه ها در حين مدلسازي آماري و توجه به احتمال خطاخيزي بخشهاي مختلف برنامه در كشف و مكانيابي علتهاي مربوط به اجراهاي خطادار برنامه مي باشد كه در راستاي كاهش وابستگي روشهاي آماري به دادههاي آزمون تعيين شده است. در اين راستا، دو راهكار جديد به نام هاي FPA-FL و Inforence ارائه شده اند كه قادرند با توجه به ساختار ايستاي برنامه و احتمالات خطاخيزي ايستا براي هر بخش از برنامه، به مكانيابي موثر خطاهاي برنامه ها بپردازند. هر دو راهكار براساس ساختار ايستاي برنامه عمل كرده و مانع از ايجاد مدلي كوركورانه و صرفاً مبتني بر دادههاي اجرايي برنامه ميشوند. همچنين، در راستاي كاهش وابستگي روشهاي آماري مكانيابي خطا به دادههاي اجرايي، در ابتدا راهكاري احتمالي، كه از مفهوم برشبندي برنامه استفاده مي كند، به منظور تشخيص اجراهاي تصادفاً موفق، در برنامههاي تكخطايي و چند خطايي، ارائه شده است. سپس، با توجه به عدم امكان شناسايي قطعي اجراهاي تصادفاً موفق با روشهاي احتمالي، يك روش جديد بر اساس نظريه بازي مشاركتي ارائه شده كه قادر است در حضور اجراهاي تصادفاً موفق در مجموعه هاي آزمون، به خوبي عمل كرده و علتهاي اصلي خطا را شناسايي نمايد. سرانجام، راهكار آماري جديدي به نام Bayes-TDG براي توليد موردهاي آزمون به هدف افزايش پوشش مسيرهاي اوليه برنامه و كشف زودهنگام دادههاي مسبب عدم موفقيت برنامه پيشنهاد شده است. در جهت ارزيابي عملكرد راهكارهاي پيشنهادي و مقايسه با ديگران، آزمايش هاي متنوع و گستردهاي برروي مجموعه برنامههاي آزمون انجام شده است و نتايج بدست آمده، عملكرد قابل توجه راهكارهاي پيشنهادي را در مقايسه با ديگران آشكار ميسازد. روش پيشنهادي به دليل بهره-گيري ار رويكرد تحليل تركيبي، به نتايج موثري در مورد مجموعه هاي آزمون نامناسب، حاوي تعداد بالايي از موارد آزمون تصادفاً موفق، دست يافته است.
تاريخ ورود اطلاعات
1397/05/12
عنوان به انگليسي
Statistical Latent Fault Localization Considering Program Structure and Fault-proneness Analysis
تاريخ بهره برداري
8/4/2018 12:00:00 AM
دانشجوي وارد كننده اطلاعات
فريد فيضي
چكيده به لاتين
Software debugging process is one of the most difficult, tedious, and time-consuming steps of software development. In this regard, several automated techniques have been developed to reduce the burden on the developer during debugging. Conducted research in recent years has shown that statistical techniques in many cases perform better than other techniques in terms of the amount of code the developer must examine to locate the fault. However, these techniques are still faced with major limitations. Statistical methods of automatic fault localization are biased by data collected from different executions of the program. This biasness could result in unstable statistical models which may vary dependent on the test data provided for trial executions of the program. These methods consider an equal fault-proneness likelihood for different portions of the code; whereas, the location of an entity inside the program and the fault-proneness of the programming structures could have strong impact on the suspiciousness assessment of the program elements. Moreover, statistical methods attempt to find the failure-correlated statements, while the fault localization is a causal problem and a statistical causal method is required. The overall goal of this thesis is to apply a statistical causal analysis combined with program analysis and consider the program structure and static fault-proneness likelihood of statements while locating the causes of failures. In this regard, in the first phase of the dissertation, two new methods, so called FPA-FL and Inforence, are proposed which are able to efficiently locate program faults by taking into account the static structure of the program and the static fault-proneness likelihoods of statements. Both methods use program static structure as a roadmap in order to avoid building a blind and inaccurate model which solely relies on dynamic runtime data. In the second phase of the dissertation, we investigate the methods of reducing the dependence of statistical fault localization on data obtained from test executions. In this regard, first, a probabilistic method based on program slicing is proposed to identify and handle the coincidentally correct test cases, in both single and multiple-bug settings. Since it is impossible to accurately recognize the coincidentally correct tests, a new method based on cooperative game theory is presented that is able to effectively diminish the negative impact of coincidentally correct tests on fault localization effectiveness and can pinpoint the failure causes in existence of these tests. Finally, we have proposed a novel statistical technique for automatic test case generation, Bayes-TDG, to assist the fault localization model in finding the location of unknown faults. To verify the effectiveness of proposed methods, we provide the results of our experiments with different subject programs, containing seeded and real faults. The experimental results are then compared with those provided by different fault localization techniques for the both single-fault and multiple-fault programs. The experimental results prove the outperformance of our proposed methods compared to the state-of-the-art techniques. Due to the combinatorial analysis capability, our proposed method performs highly effective in the case of inappropriate test suites, containing a great number of coincidentally correct test cases.