Course Overview CS 362: Software Engineering II Outline • • • • • Syllabus Course Objectives Schedule Required Software About this Course 1 July 24, 2016 Syllabus: Course Website • http://classes.engr.oregonstate.edu/eecs/winter2015/cs362-501/ 2 July 24, 2016 Syllabus: Contact Information • Dr. Marc Rubin • Cascades Hall 212 (new office!!) • marc.rubin@osucascades.edu 3 July 24, 2016 Syllabus: Office Hours • Cascades Hall 212 • Mondays and Wednesdays, 15:00 – 16:00 • PLEASE COME TO OFFICE HOURS FOR HELP!! 4 July 24, 2016 Syllabus: Textbook • “Introduction to Software Testing” by Ammann and Offutt 5 July 24, 2016 Syllabus: Grades • 50% Homework • 25% Midterm • 25% Final • Cheating will NOT be tolerated. • if you cheat, I WILL report you 6 July 24, 2016 Outline • • • • • Syllabus Course Objectives Schedule Required Software About this Course 7 July 24, 2016 Course Objectives • Apply automated tools such as make and CVS in a realistic setting. • Describe the cost-benefit trade-offs inherent in the use of automated tools for building software and configuration management. • Describe several techniques for validating and measuring the quality of software. 8 July 24, 2016 Course Objectives • Apply testing techniques, including black-box and white-box techniques, automatic testing activities, and regression testing. • Use appropriate techniques and tools, including a debugger, to locate program faults. • Describe several types of maintenance processes associated with correcting and enhancing software systems. 9 July 24, 2016 Course Objectives • Participate effectively in a software inspection. • Participate effectively in a team environment. 10 July 24, 2016 How to Learn… 11 July 24, 2016 Outline • • • • • Syllabus Course Objectives Schedule Required Software About this Course 12 July 24, 2016 Schedule • Detailed course schedule on website • Software Engineering II: Testing • • • • • • Graph coverage Logic coverage Test inputs Regression testing Testing OO vs. web apps vs. GUIs etc. • Team-based software project: Blackjack 13 July 24, 2016 Outline • • • • • Syllabus Course Objectives Schedule Required Software About this Course 14 July 24, 2016 Required Software • In accordance with Corvallis, we will use Linux 15 July 24, 2016 Required Software • OSU students get VMWare for free • via OSU TEACH • Download the virtual Linux image from course website • Compatible with VMWare • http://classes.engr.oregonstate.edu/eecs/winter2015/cs362501/virtual_machine.zip 16 July 24, 2016 Required Software • Access to a cloud-based git repository • • • • github bitbucket mercurial etc. • You will need this to: • Subversion team software • Submit assignments 17 July 24, 2016 Outline • • • • • Syllabus Course Objectives Schedule Required Software About this Course 18 July 24, 2016 Software Testing • Essential to producing high-quality software • NOT just for testing specialists or domain experts • Developers must test 19 July 24, 2016 Software Testing: Coverage Criteria • Testing is all about satisfying coverage criteria • Four types of coverage: • • • • graphs logical expressions input space syntax structures • CS 362: learn about coverage • Implement a non-trivial program (Blackjack in C++) • Create automated tests to verify / validate program 20 July 24, 2016 Why this book? • In the past, software testing was considered a non-engineering activity • Limited to users and domain experts • Little expectation of technical expertise • Most CS students never have a course ONLY about testing • At best, a lecture or two • Book balances theory and application • Many examples • Homework to solidify understanding 21 July 24, 2016 Students taking this course • Goal: learn fundamental principles behind testing • Expect to use this knowledge for the rest of your career! • Required knowledge: • • • • • • Data structures Discrete math C++ programming make / Makefiles command line git 22 July 24, 2016 Software • Defines behavior of many things: • • • • • Networks Websites Operating system User programs Embedded systems • Modern househoulds have over 50 processors • New cars have over 100! 23 July 24, 2016 Software Testing • Testing is primary method that industry evaluates software • Design and development are important, … but testing determines viability of product! 24 July 24, 2016 Software Testing “Testing is simple, all a tester needs to do is ‘find a graph and cover it.’”. - Beizer 25 July 24, 2016 Software Testing • Graphs are only one type of software testing • Do not characterize all testing techniques • Other abstract models are necessary: • • • • graphs logical Expressions input domain characterization syntax descriptions • Testing can be classified into these four categories • Book / course is about!! 26 July 24, 2016 Software Testing • Testing is a collection of objective and quantitative activities • Tests are measurable and repeatable • Book’s goal: “present concepts in such a way that students or practicing engineers can easily apply them to any software testing situation” 27 July 24, 2016 Next Steps • Download Linux image from course website • Create a cloud-based git repository • E.g., bitbucket or github • Find a teammate • Start homework 1 • Implement Card and Deck classes • Create automated tests to validate objects 28 July 24, 2016