Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Software Testing Does your software product perform as it is ...


Published on

  • Be the first to comment

  • Be the first to like this

Software Testing Does your software product perform as it is ...

  1. 1. Software Testing <ul><li>Does your software product perform as it is intended to perform? </li></ul><ul><li>Presented by: </li></ul><ul><li>Andy Bouts </li></ul><ul><li>John Kinuthia </li></ul>
  2. 2. Content <ul><li>Introduction </li></ul><ul><li>Background on software testing </li></ul><ul><li>Modern views of software testing </li></ul><ul><li>Key Terminology </li></ul><ul><li>Categories of software testing </li></ul><ul><li>OO software testing environment </li></ul><ul><li>Lessons Learned; Object oriented testing </li></ul><ul><li>Conclusion </li></ul>
  3. 3. What is Software Testing? <ul><li>Process of examining a software product or part of a software product to determine whether a software performs as it is expected to perform </li></ul><ul><li>Software testing is a part of quality assurance </li></ul><ul><li>Quality assurance: takes into account all business processes and not just testing </li></ul>
  4. 4. Testing outcomes <ul><li>Desired results are / are not achieved </li></ul><ul><li>Non – desired results are / are not achieved </li></ul><ul><li>Users accept / do not accept product </li></ul>
  5. 5. History of Software Testing <ul><li>There are four distinct periods of time that mark the development of software testing during the twentieth century. </li></ul><ul><li>During these periods, software testing has changed from its earliest days of continuously debugging to the more proactive approaches of today. </li></ul>
  6. 6. Four Periods of Development <ul><li>1957-1978: Engineers distinguish between testing and debugging software. This is the first time they were able to prove that a software system can meet requirements. </li></ul><ul><li>1979-1982: Engineers began trying to break the system to find errors, instead of just debugging the known errors. </li></ul>
  7. 7. Four Periods of Development <ul><li>1983-1987: Engineers began offering ‘observational periods’ on software, today these periods as called beta programs. </li></ul><ul><li>1988-Present: As software projects are more closely managed in terms of financials, risk, and timing, the focus has shifted toward detecting errors as soon as possible. This is because early detection leads to better products which are often delivered on time and with less risk to manage. </li></ul>
  8. 8. Software Testing: Modern View <ul><li>Software should be tested during different stages of system development life cycle. </li></ul><ul><li>Almost all software is developed using a type of iterative beta program where programmers, testers, developers, and users are encouraged to break the software or find software functionality that does not meet desired results. </li></ul><ul><li>It has been proven that it is cheaper to fix defects if detected early in development stages. </li></ul>
  9. 9. Key Terms: Black Box Testing <ul><li>Black, White, or Grey Box Testing refers to the point of view taken while designing test cases and plans. </li></ul><ul><li>Black Box Testing (BBT) takes an external view of the test object. </li></ul><ul><li>BBT focuses on inputs and outputs of the system, user functionality of the system, and the higher level workings of the system. </li></ul><ul><li>BBT is often automated and is usually one of the final steps before software is released. </li></ul>
  10. 10. Key Terms: White Box Testing <ul><li>White Box Testing (WBT) is focused on the internal aspects of the system. </li></ul><ul><li>WBT test cases and test plans are usually developed by programmers and engineers who understand and want to examine the inner workings of the system. </li></ul><ul><li>WBT is usually among the earliest tests performed in software development. </li></ul><ul><li>WBT can also be used to evaluate and fix system errors for software that is already in production. </li></ul>
  11. 11. Key Terms: Grey Box Testing <ul><li>Grey Box Testing (GBT) is a hybrid of the black and white box testing. </li></ul><ul><li>GBT is usually focused around databases and connectivity. </li></ul><ul><li>GBT often requires the tester to populate a development database with sample data to evaluate the proper workings of the data store. </li></ul><ul><li>Testers for GBT are often proficient with SQL, XML, or other data centric languages / technologies. </li></ul>
  12. 12. Three Types of Testing <ul><li>“Component testing tests the minimal software item that can be tested.” 1 </li></ul><ul><li>“Component integration testing exposes defects in the interfaces and interaction between integrated components.” 2 </li></ul><ul><li>“System testing tests an integrated system to verify that it meets its requirements.” 3 </li></ul><ul><ul><li>A team’s failed integration test… </li></ul></ul><ul><ul><li>1,2,3: </li></ul></ul>
  13. 13. Acceptance Testing <ul><li>“Acceptance testing - allows the end-user or customer to decide whether or not to accept the product.” 1 </li></ul><ul><ul><li>“ Alpha testing is simulated or actual operational testing by potential users/customers or an independent test team at the developers’ site.” 2 </li></ul></ul><ul><ul><li>“ Beta testing comes after alpha testing. Versions of the software, known as beta versions, are released to a limited audience outside of the company.” 3 </li></ul></ul><ul><ul><li>1,2,3: </li></ul></ul>
  14. 14. Regression Testing <ul><li>Regression testing is often used to re-test functionality that has previously passed system or acceptance testing. </li></ul><ul><li>It is being re-tested because of changes to the software code to ensure that the system still works properly and that the changes have not introduced unintentional regression of previously achieved results. </li></ul><ul><li>A vendor’s failure to thoroughly regression test… </li></ul>
  15. 15. OO Testing Environment … Unique Challenges <ul><li>In an Object Oriented (OO) programming environment, individual parts (objects) work together as a system. </li></ul><ul><li>An object has a set of attribute values that define a state of the object and the actions the object can do. </li></ul><ul><li>Because objects are the basic building blocks of a system, any change to their attribute values functionality, or accessibility may cause unintended changes downstream in the environment. </li></ul>
  16. 16. OO testing environment: So what’s the problem? <ul><li>In the paper, Developing an Object-Oriented Software Testing and Maintenance Environment, the main problems seen during OO testing are 1 : </li></ul><ul><ul><li>The understanding problem </li></ul></ul><ul><ul><li>Complex interdependency </li></ul></ul><ul><ul><li>Object state behavior testing problem </li></ul></ul><ul><ul><li>The tool support problem </li></ul></ul><ul><ul><li>1: Article Citation </li></ul></ul>
  17. 17. The Understanding Problem 1 <ul><li>It becomes difficult to decipher to process / data flow when encapsulation and information hiding are used. </li></ul><ul><li>Often multiple objects are used with multiple classes creating a system that can use an exponentially large number of object combinations. </li></ul><ul><ul><li>1,2: Article Citation </li></ul></ul>
  18. 18. The Understanding Problem 1 <ul><li>Understanding the relationships between objects is important for a successful test. </li></ul><ul><li>“Although each of the member functions is very small (a total of 15 lines of code, or an average of 5 lines per member function), it took, on average, 0.95, 0.93, and 0.79 person-hours to prepare the test data, test driver, and test stub, respectively.” 2 </li></ul><ul><ul><li>1,2: Article Citation </li></ul></ul>
  19. 19. Complex Dependency Problem 1 <ul><li>Analysts and testers spend large amounts of time trying to understand classes in large OO program and determine if the classes depend on other classes. </li></ul><ul><li>“Without sufficient insight, a tester may not know where to start testing an OO library.” 2 </li></ul><ul><ul><li>1,2: Article Citation </li></ul></ul>
  20. 20. Complex Dependency Problem 1 <ul><li>“It is difficult to identify and test the effect of polymorphism and dynamic binding.” 2 </li></ul><ul><li>“It is difficult to identify change impact in OO maintenance, since the impact may ripple throughout the OO program through the complex dependencies.” 3 </li></ul><ul><ul><li>1,2,3: Article Citation </li></ul></ul>
  21. 21. The State Behavior Testing Problem 1 <ul><li>What an object returns is very dependant on the state of the object when it is told to act. </li></ul><ul><li>It is erroneous to assume a product works fine by just testing individual operations without evaluating the object’s state. </li></ul><ul><li>Integration testing doesn’t solve this problem; it will just test that individual member functions are interfacing correctly. </li></ul><ul><ul><li>1: Article Citation </li></ul></ul>
  22. 22. The Tool Support Problem 1 <ul><li>Conventional testing methods used by commercially available software may not necessarily deal with problems identified in object oriented testing. </li></ul><ul><li>It is better to have a formal specification language that will be used by a testing tool to derive test cases customized to meet software specifications. </li></ul><ul><ul><li>1: Article Citation </li></ul></ul>
  23. 23. An OO Testing Situation <ul><li>“Central to the environment is a mathematically defined test model, consisting of three types of diagrams:” 1 </li></ul><ul><li>ORD: Object relation diagram - represents inheritance, aggregation, association 2 </li></ul><ul><li>BBD: block branch diagram - represents the control structure of a member function and its interface to other member functions 3 </li></ul><ul><li>OSD: Object state diagram - represents the state behavior of an object class 4 </li></ul><ul><ul><li>1,2,3,4: Article Citation </li></ul></ul>
  24. 24. Advantages of OO Test Model <ul><li>It uses graphical models to explain the relationships between classes and objects. </li></ul><ul><li>It accelerates preparations by helping the tester / analyst work more efficient. </li></ul><ul><li>It assists with defining and analyzing OO testing specs. </li></ul><ul><li>“It facilitates the development of the various algorithms and capabilities for OOTM.” 1 </li></ul><ul><ul><li>1: Article Citation </li></ul></ul>
  25. 25. Software Testing as an Industry <ul><li>Software testing has grown and is continuing to develop as an industry. </li></ul><ul><li>Larger companies have teams and / or departments that are solely focused on testing. </li></ul><ul><li>Often firms utilize automated testing tools to supplement human testing. </li></ul>
  26. 26. Testing Industry: Companies <ul><li> </li></ul><ul><li> </li></ul><ul><li>IBM will provide consulting or testing packages. </li></ul>
  27. 27. Automated Test Software <ul><li> </li></ul><ul><li> </li></ul><ul><li>Seapine offers a full suite of software development tools supporting the entire development life cycle. </li></ul>
  28. 28. Conclusions <ul><li>Test early and test often </li></ul><ul><li>Integrate the application development and testing life cycle. You'll get better results and you won't have to mediate between two armed camps in your IT shop. </li></ul><ul><li>Formalize a testing methodology; you'll test everything the Same way and you'll get uniform results. </li></ul><ul><li>Develop a comprehensive test plan; it forms the basis for the vesting methodology. </li></ul><ul><li>Use both static and dynamic testing . </li></ul>
  29. 29. Conclusions <ul><li>Define your expected results. </li></ul><ul><li>Understand the business reason behind the application. You'll write a better application and better testing scripts. </li></ul><ul><li>Review and inspect the work; it will lower costs. </li></ul><ul><li>Use multiple levels and types of testing (regression, systems, integration, load). </li></ul><ul><li>Don't let your programmers check their own work; they'll miss their own errors </li></ul>
  30. 30. Questions <ul><li>Do you have any questions? </li></ul>