CS 435 - Week 14 Lecture 1 Schedule changes!! * CS 435 - Final Exam Review Suggestions handout posted by TONIGHT * CS 435 - Homework 8 posted by TONIGHT due by 11:59 pm next Tuesday, MAY 6 * ETS CS MFT in BSS 416 on THURSDAY!!!!!!!!!!!!!!!!!!! *----------------------------- * SHOW UP, TAKE ETS CS MFT, or, ah, you can't pass CS 435 *----------------------------- ******************************* * 20 "bonus" points on a HOMEWORK IF you are IN BSS 416 by 2:57 pm <-- by my cell phone ******************************* * TUESDAY, MAY 6 - still MMM Ch 19 reading quiz, and additional review for Final (yes, with clicker questions) * Homework 8 problem solutions posted right after 11:59 pm... * Final exam on THURSDAY, MAY 8 - 3-4:50 * Project presentation on TUESDAY, MAY 13, 3-4:50, SH 002 * all project pieces for final iteration must be pushed to github team repo by 11:59 pm on TUESDAY, MAY 13 *********************** Jalote Ch. 8 - Testing *********************** * reliability: the chances of software failing * more defects -> more chances of failure -> lesser reliability * so, if quality is a goal, we'd LIKE as few defects as possible in the delivered software * failure: a software failure occurs if the behavior of the sw is different than expected/specified * fault: cause of software failure sometimes synonymous: fault == bug == defect * a failure implies the presence of defects * a defect has the POTENTIAL to cause failure * or... a failure implies the presence of one or more faults -- but a fault may not necessarily lead to a failure. * we've talked about a number of means for attacking software defects -- we can try to design in ways to prevent their injection, we can use processes like code review to find them, testing is YET ANOTHER means of trying to identify defects. * Testing is NOT exact, and NOT absolute -- * if a test results in a failure, there IS at least one fault -- * but if it doesn't, that cannot prove that there are NO faults. * (testing can increase one's confidence in the absence of faults, but it cannot prove the absence of faults) * SUT - software under test * during testing, SUT is executed with a set of test cases failure during testing implies that defects are present * IMPORTANT!!!!!!!! If you run a set of test cases, and don't observe a failure, that can be said to increase our confidence in the software -- but you can NOT say "defects are ABSENT" * test case - a set of test inputs and execution conditions designed to exercise SUT in a particular manner * A TEST CASE NEEDS TO SPECIFY THE EXPECTED OUTCOME * (and someone or some program needs to compare a test case's actual results to the expected results -- sometimes this someone/something is called a test oracle) * test suite: group of related test cases generally executed together * test harness/test framework - these automate some part of the testing process levels of testing: * unit testing - code-level * testing a particular code module * focus - defects injected during coding * frequently done by the programmer * integration testing - testing the design * system testing - testing the system against the requirements specifications * acceptance testing - testing the system against the users' needs * Testing process (at a very high level) * test planning * test case design * test execution * two classic categories/approaches to test case design: black box - functional white box - structural - "clear box" * NOT one-or-the-other -- ideally, they complement each other, and it's good to include some of both BLACK BOX (functional) * SUT is to be treated as a black box test cases are determined solely from the specificaton * examples: * equivalence class partitioning * divide the input space into equivalence classes -- if the SUT works for 1 test case from such a class, it should work for all of them * boundary value analysis * recognizing that faults often near on or near boundaries of equivalence classes * here, recommending testing AT the boundary, AND a little above, AND a little below * (also discussed white-box testing -- structural! * including the difference between statement coverage and branch coverage) ^ these are NOT the same!