SE 333/433 Software Testing and Quality Assurance
Useful Information
Table of Contents
- Text Book
- Software (Articles, Documentation and Access to Downloads)
- Web Pages of General Interest
- Student recommended readings
- Readings for the lectures
Text Book
Required
Recommended:
These references are available online at the DePaul Libraries Web site, http://library.depaul.edu.
- The Art of Software Testing, Second Edition, by Glenford J. Myers et. al. Digital copy available in library.
- Software Engineering: A Practitioner's Approach, Roger S Pressman, 7th edition, McGraw-Hill, 2010. ISBN: 978-0-07-337597-7, Chapters 14-20, 23
Other books (worth reading)
These two books are ones that every practitioner in the field ought to read. They are the defining books in the field and often cited by others.
- Frederick P. Brooks, The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition) (Paperback), Addison-Wesley, ISBN-10: 0-201-83595-9.
- Gerald M. Weinberg, The Psychology of Computer Programming: Silver Anniversary Edition (Paperback), Dorset House, ISBN-10: 0-932633-42-0
General Articles
- Programming Laws and Reality: Do We Know What We Think We Know? How well do programming maxims stand up when compared with hard data?
Student recommended readings
Software (Articles, Documentation and Access to Downloads)
Remember Google is your friend.
Java
- How do I install Java ? – https://java.com/en/download/help/download_options.xml
- Instructions to download and install Java for Windows online
- Instructions to download and install Java for Windows offline
- Instructions to download and install Java for Mac OS X
- Instructions to download and install Java for Linux
- Java Platform Standard Edition 8 Documentation – http://docs.oracle.com/javase/8/docs/
- Java™ Platform, Standard Edition 8 API Specification – http://docs.oracle.com/javase/8/docs/api/
Eclipse
Eclipse is an integrated development environment (IDE). It contains a base workspace and an extensible plug-in system for customizing the environment. Eclipse is written mostly in Java and its primary use is for developing Java applications, but it may also be used to develop applications in other programming languages through the use of plugins.
- Eclipse (software) - Wikipedia, the free encyclopedia – https://en.wikipedia.org/wiki/Eclipse_(software)
- Eclipse home page - http://www.eclipse.org
- Eclipse IDE for Java Developers – http://www.eclipse.org/downloads/packages/eclipse-ide-java-developers/mars1
Eclipse IDE for Java Developers: Package Description; The essential tools for any Java developer, including a Java IDE, a Git client, XML Editor, Mylyn, Maven integration and WindowBuilder. This package includes: Eclipse Git Team Provider, Eclipse Java Development Tools, Maven Integration for Eclipse, Mylyn Task List, Code Recommenders Tools for Java Developers, WindowBuilder Core, Eclipse XML Editors and Tools
- Download Eclipse – http://www.eclipse.org/downloads/
- Eclipse/Installation – https://wiki.eclipse.org/Eclipse/Installation
- 5 Steps to Install Eclipse – https://www.eclipse.org/downloads/index.php?show_instructions=TRUE This set of instructions seems to be the best.
- Eclipse documentation - Current Release (Eclipse Mars SR1 – http://help.eclipse.org/mars/index.jsp
- Eclipse Tutorials – https://courses.cs.washington.edu/courses/cse143/11wi/eclipse-tutorial/index.shtml
Ant
Apache Ant is a Java library and command-line tool whose mission is to drive processes described in build files as targets and extension points dependent upon each other. The main known usage of Ant is the build of Java applications. Ant supplies a number of built-in tasks allowing to compile, assemble, test and run Java applications.
- Apache Ant - Welcome – http://ant.apache.org
- Apache Ant - Binary Distributions – https://ant.apache.org/bindownload.cgi
- Apache Ant - Source Distributions – http://ant.apache.org/srcdownload.cgi
- Installing Apache Ant – http://ant.apache.org/manual/install.html
- Apache Ant™ 1.9.6 Manual – https://ant.apache.org/manual/
- Tutorial: Hello World with Apache Ant – https://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
- Using Apache Ant: Writing a Simple Buildfile – http://ant.apache.org/manual/using.html
- How to install Apache Ant on Mac OS X – http://www.mkyong.com/ant/how-to-apache-ant-on-mac-os-x/
Junit
JUnit is a simple framework to write repeatable tests. It is an instance of the xUnit architecture for unit testing frameworks.
- JUnit http://junit.org/ Documentation and the place to download the software
- JUnit FAQ - SourceForge http://junit.sourceforge.net/doc/faq/faq.htm
- JUnit Test Infected: Programmers Love Writing Tests – http://junit.sourceforge.net/doc/testinfected/testing.htm
- JUnit Cookbook – http://junit.sourceforge.net/doc/cookbook/cookbook.htm
- JUnit - A Cook's Tour – http://junit.sourceforge.net/doc/cookstour/cookstour.htm
- JUnit – Getting started – https://github.com/junit-team/junit/wiki/Getting-started
- JUnit Tutorial - TutorialsPoint http://www.tutorialspoint.com/junit/ JUnit tutorial for beginners - Learn JUnit testing framework in simple and easy
- [PDF]What is JUnit? https://cs.gmu.edu/~offutt/classes/437/slides/swe437-junit.pdf JUnit. Automated Software Testing Framework. Jeff Offutt. SWE 437. George Mason University
- Chapter 4. JUnit – http://etutorials.org/Programming/Java+extreme+programming/Chapter+4.+JUnit/ etutorial on JUnit
Cobertura
Cobertura is a free Java tool that calculates the percentage of code accessed by tests. It can be used to identify which parts of your Java program are lacking test coverage. It is based on jcoverage.
- Cobertura – http://cobertura.sourceforge.net
- Execute via Ant – https://github.com/cobertura/cobertura/wiki/Ant-Task-Reference
- Execute via Command Line – https://github.com/cobertura/cobertura/wiki/Command-Line-Reference
- In pursuit of code quality: Don't be fooled by the coverage report – http://www.ibm.com/developerworks/library/j-cq01316/
Wikipedia
- Apache Ant - Wikipedia, the free encyclopedia – https://en.wikipedia.org/wiki/Apache_Ant
- JUnit - Wikipedia, the free encyclopedia – https://en.wikipedia.org/wiki/JUnit [Wikipedia] JUnit is a unit testing framework for the Java programming language.
- Eclipse (software) - Wikipedia, the free encyclopedia – https://en.wikipedia.org/wiki/Eclipse_(software)
- Verification and validation – https://en.wikipedia.org/wiki/Verification_and_validation
- Equivalence partitioning – https://en.wikipedia.org/wiki/Equivalence_partitioning
Tutorials
- CSE 331 Software Design and Implementation: Editing, Compiling, Running, and Testing Java Programs – https://courses.cs.washington.edu/courses/cse331/14au/tools/editing-compiling.html
- How to Run the JUnit Testing Framework Using Apache Ant - http://www.devx.com/Java/how-to-run-the-junit-testing-framework-using-apache-ant.html
- JUnit Tutorial - http://www.tutorialspoint.com/junit/
JUnit tutorial for beginners - Learn JUnit testing framework in simple and easy steps starting from Environment Setup, Test Framework, Basic usage, Writing ...- Unit Testing Your Application with JUnit – http://www.oracle.com/technetwork/articles/adf/part5-083468.html
A primer on creating unit tests for Oracle Application Development Framework projects and executing them from within Oracle JDeveloper.- Java: Measure Test Coverage with Cobertura –http://solutions.devx.com/ibm/skillbuilding/archives/java-measure-test-coverage-with-cobertura.html
General
Columns, Articles, etc.
- Getting started with test-driven development | JavaWorld http://www.javaworld.com/article/2073090/testing-debugging/getting-started-with-test-driven-development.html
JavaWorld Dec 6, 2004 - A key feature of Ant is its integration with the JUnit test framework listed previously.- Software QA and Testing Resource Center - Table of Contents – http://www.softwareqatest.com/index.html
- Software Testing Quotes – http://softwaretestingfundamentals.com/software-testing-quotes/
Readings for the lectures
Material is organized in the approximate order it is covered in the course.
- Lecture 1:Introduction and Overview: Class Logistics and Administrivia; Introduction to Software Testing
- Readings:
- Pezze and Young: Chapters 1-4
- Supplemental Readings
- Assignment 1
- http://docs.oracle.com/javase/8/docs/api/java/util/Scanner.html - The scanner class used in assignments
- Lecture 2: Software Quality
- Readings:
- Pezze and Young: Chapters 1-4
- Supplemental Readings:
- Software quality - Wikipedia, the free encyclopedia – https://en.wikipedia.org/wiki/Software_quality
- Software Quality Characteristics – http://thetesteye.com/posters/TheTestEye_SoftwareQualityCharacteristics.pdf
Software Quality Characteristics. Go through the list and think about your product/ features. Add specifics for your context, and transform the list to your own.- Mean time between failures – https://en.wikipedia.org/wiki/Mean_time_between_failures
MTBF can be calculated as the arithmetic mean (average) time between failures of a system. The MTBF is typically part of a model that assumes the failed system is immediately repaired (mean time to repair, or MTTR),- Availability (system) – https://en.wikipedia.org/wiki/Availability_(system)
- Deming’s Principles of Quality Re-stated for the Quality Assurance Professional
- Deming, W. Edwards, Out of the Crisis, MIT Center for Advanced Engineering Study, 1992.
- Weinberg, Gerald M., The Psychology of Computer Programming: Silver Anniversary Edition, ISBN 0-932633-42-0
- Lecture 3: Unit Testing and JUnit: JUnit Part 1
- Readings
- Pezze and Young: Chapters 17.4-17.5
- JUnit documentation: http://junit.org
- An introductory tutorial http://www.vogella.com/tutorials/JUnit/article.html
- Using JUnit in Eclipse – https://courses.cs.washington.edu/courses/cse143/11wi/eclipse-tutorial/junit.shtml
- An example test: JUnit1.zip in D2L
- Supplemental Readings:
- Lecture 4: Black Box Testing, JUnit Part 2
- Readings
- Pezze and Young: Chapter 9-10
- JUnit documentation: http://junit.org
- An example of parameterized test: JUnit2.zip in D2L
- Supplemental Readings:
- What is Black Box Testing? – http://www.guru99.com/black-box-testing.html
- What is Boundary value analysis and Equivalence partitioning?– http://www.softwaretestinghelp.com/what-is-boundary-value-analysis-and-equivalence-partitioning/
- Lecture 5: Black Box Testing Part 2, JUnit & Ant
- Readings
- JUnit documentation: http://junit.org
- Ant documentation: http://ant.apache.org
- Ant introductory tutorial: http://www.vogella.com/tutorials/ApacheAnt/article.html
- An example of using JUnit with Ant: JUnit3.zip in D2L
- Supplemental Readings:
- Lecture 6: Combinatorial Testing, White Box Testing Part 1
- Readings:
- Pezze and Young, Chapters 5.1-5.3, 11.1, 11.3, 12
- Supplemental Readings:
- Lecture 7: White Box Testing Part 2, Test Coverage with Cobertura
- Readings
- Pezze and Young, Chapter 12
- Cobertura documentation: http://cobertura.github.io/cobertura/
- An example of using Cobertura and JUnit: Coverage1.zip in D2L
- Supplemental Readings:
- Code coverage – https://en.wikipedia.org/wiki/Code_coverage
- Java Code Coverage Tools – https://en.wikipedia.org/wiki/Java_Code_Coverage_Tools
- Cyclomatic complexity – https://en.wikipedia.org/wiki/Cyclomatic_complexity
- Modified condition/decision coverage – https://en.wikipedia.org/wiki/Modified_condition/decision_coverage
- Lecture 8: Static Analysis & Inspection
- Readings:
- Pezze and Young, Chapter 18, 23
- Supplemental Readings:
- Lecture 9: Integration & System Testing
- Readings
- Pezze and Young, Chapter 21.1, 21.2, 22
- Supplemental Readings:
- Lecture 10: Test Plans, Interview questions: aka Review, Statistics and metrics , Miscellaneous
- Readings
- Pezze and Young, Chapter 20, 24
- Supplemental Readings:
- Test plans – http://en.wikipedia.org/wiki/Test_plan
- Example test plan templates:
- QA METRICS: THE VALUE OF TESTING METRICS WITHIN SOFTWARE DEVELOPMENT – http://www.getzephyr.com/resources/whitepapers/qa-metrics-value-testing-metrics-within-software-development
- Software Quality - Formal Technical Review Methods
- QA Metrics The Value of Testing Metrics Within Software Development – http://www.getzephyr.com/resources/whitepapers/qa-metrics-value-testing-metrics-within-software-development
Web Pages of General Interest
Risks
Forum On Risks To The Public In Computers And Related Systems [The RISKS Forum is a moderated digest. Its USENET equivalent is comp.risks. (Google/Deja news archive)] You may also may access this forum in Google Groups.