Software Testing for


Published on

  • Be the first to comment

  • Be the first to like this

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Software Testing for

  1. 1. Software Testing for Safety-Critical Applications Presented by: Ciro Espinosa & Daniel Llauger
  2. 2. Agenda <ul><li>Introduction </li></ul><ul><li>Software and Industrial Automation </li></ul><ul><li>Software Testing Strategies </li></ul><ul><ul><li>Black-Box Testing </li></ul></ul><ul><ul><li>White-Box Testing </li></ul></ul><ul><li>Software Testing Processes and Steps </li></ul><ul><ul><li>Unit Testing </li></ul></ul><ul><ul><li>Integration Testing </li></ul></ul><ul><ul><ul><li>Top-Down Integration Testing </li></ul></ul></ul><ul><ul><ul><li>Bottom-Up Integration Testing </li></ul></ul></ul><ul><li>System Testing </li></ul><ul><li>Software Performance Testing </li></ul><ul><ul><li>Availability, Survivability, Flexibility, Stress, Security, Usability and Maintainability Testing </li></ul></ul><ul><li>Software Maintenance </li></ul><ul><li>Conclusion </li></ul>
  3. 3. Introduction <ul><li>Safety-critical applications in industrial automation have unique concerns for software quality (demanding requirements on system performance). </li></ul><ul><li>Software testing consists in functional and performance testing. </li></ul>
  4. 4. Software and Industrial Automation <ul><li>The possibility for malfunction of complicated industrial automation software becomes much greater than the traditional one. </li></ul><ul><li>Embedded measurement and control systems in life-critical systems have unique concerns for system safety and reliability. </li></ul>
  5. 5. <ul><li>Any error in the software system is fatal to the real-world applications of industrial automation software </li></ul><ul><li>Basic testing principles: </li></ul><ul><ul><li>Present expected testing results when designing test cases. </li></ul></ul><ul><ul><li>Separate sw testing team from sw development team. </li></ul></ul><ul><ul><li>Design invalid test cases. </li></ul></ul><ul><ul><li>Perform regression testing each time sw under-test is revised. </li></ul></ul><ul><ul><li>Tester should concentrate on error-prone program segments. </li></ul></ul>
  6. 6. Software Testing Strategies <ul><li>Black-Box Testing </li></ul><ul><li>White-Box Testing </li></ul><ul><li>In practical applications, the tester often combines black-box testing and white-box testing to conduct a more thorough test of the software. </li></ul>
  7. 7. Software Testing Processes and Steps <ul><li>Testing real-time & embedded software is difficult </li></ul><ul><li>50 % of overall work in life cycle dedicated to testing and optimizing </li></ul><ul><li>Complexity – large number of potential paths </li></ul><ul><li>Real-time constraints exacerbate testing </li></ul>
  8. 8. <ul><li>Unit Testing </li></ul><ul><li>Integration Testing: </li></ul><ul><ul><li>Top-Down Integration </li></ul></ul>
  9. 9. <ul><li>Bottom-Up Testing: </li></ul>
  10. 10. System testing <ul><li>Find discrepancies between actual SW performance to its expected performance by comparing it w/ requirements </li></ul><ul><li>Test cases created based on requirement analysis description </li></ul><ul><li>On-site testing after SW installed with other equipment </li></ul>
  11. 11. Software Performance Testing <ul><li>Real-time monitoring & control system </li></ul><ul><li>Sensor measures monitored values </li></ul><ul><li>Manner in which error between actual & target measurement to be corrected determined by microprocessor-based controller </li></ul><ul><li>Actuator executes command to drive control variable close to target values. </li></ul>
  12. 13. Availability testing <ul><li>Applies to time-critical, on-time, & real-time applications </li></ul><ul><li>Real-time SW needs to be designed to meet time constraints </li></ul><ul><li>Must meet deadline in responding to an operation </li></ul><ul><li>Control correctness and real-time restrictions can be considered simultaneously in design process </li></ul>
  13. 14. Availability testing (cont.) <ul><li>Example: Chemical plant </li></ul><ul><li>Alarm MGMT SW responsible for triggering a siren (alarm) when abnormal process occurs </li></ul><ul><li>If it cannot perform alarm operation quickly, then disaster or production incident occurs </li></ul>
  14. 15. Reliability testing <ul><li>Measures the likelihood for failure-free SW operations </li></ul><ul><li>Tests ability to operate w/o failure in environment designed for </li></ul><ul><li>Capture any abnormal status </li></ul><ul><li>Why is this testing needed? </li></ul><ul><ul><li>Low reliability SW can destroy industrial equipment or have a loss of life </li></ul></ul><ul><ul><li>To guarantee quality in manufactured products </li></ul></ul>
  15. 16. Survivability Testing <ul><li>Distributed and embedded real-time software system should be able to recover from the degraded performance. </li></ul><ul><li>Fault-tolerant control algorithms should be incorporated into the software design to maintain software performance in the presence of component failures. </li></ul>
  16. 17. Flexibility Testing <ul><li>In the industrial automation area, the sw needs to work with heterogeneous hardware drivers and software components provided by different manufactures and vendors. </li></ul><ul><li>Today, open architecture-based software is gradually replacing traditional, proprietary software architecture </li></ul>
  17. 18. Stress Testing <ul><li>Stress testing tests the software by pushing the system to its limits. </li></ul><ul><li>Stress testing may find both hardware and software defects. </li></ul><ul><li>Stress testing can be used to examine what types of system failures will occur when the system is heavily overloaded. </li></ul>
  18. 19. Security Testing <ul><li>Security is an increasingly important issue in industrial automation software systems, especially with the proliferation of Internet-based industrial applications. </li></ul><ul><li>System security needs to be considered during all phases of the software life cycle. </li></ul>
  19. 20. Usability Testing <ul><li>Usability tests how well the user operates the software system and likes doing so. </li></ul><ul><li>It is crucial to design the software with high usability </li></ul><ul><li>GUI design is an important component in system usability. </li></ul>
  20. 21. Maintainability Testing <ul><li>High maintainability enables the released software to be revised in the presence of errors during system operations and makes the software expansion and change easy for new applications. </li></ul><ul><li>Maintainability should be considered from the very start of the life cycle. </li></ul>
  21. 22. <ul><li>For complex software, high maintainability becomes more necessary, as it is hard to identify the faulty lines of code without well-written documentation. </li></ul>
  22. 23. Software Maintenance <ul><li>Establish safe & well controlled mechanism for update and modification </li></ul><ul><li>ID unexposed defects after installation </li></ul><ul><li>Adapt to changing user requests & to different operating conditions </li></ul><ul><li>Corrective maintenance </li></ul><ul><li>Adaptive maintenance </li></ul><ul><li>Perfective maintenance </li></ul><ul><li>Preventative maintenance </li></ul>
  23. 24. Conclusion <ul><li>In the testing of industrial automation software systems, performance, flexibility, reliability, survivability, and usability should also be tested thoroughly. </li></ul><ul><li>Testing, code inspections and reviews are needed to prevent loss of life or industrial accidents </li></ul>
  24. 25. Questions?