CS706 - Software Quality Assurance
Course Page
Q & A
Short Question & Answers
Q1: What is 'Software Quality Assurance'?
Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with.
Q2: What is 'Software Testing'?
Testing involves operation of a system or application under controlled conditions and evaluating the results. Testing should intentionally attempt to make things go wrong to determine if things happen when they shouldn't or things don't happen when they should.
Q3: Does every software project need testers?
It depends on the size and context of the project, the risks, the development methodology, the skill and experience of the developers. If the project is a short-term, small, low risk project, with highly experienced programmers utilizing thorough unit testing or test-first development, then test engineers may not be required for the project to succeed. For non-trivial-size projects or projects with non-trivial risks, a testing staff is usually necessary. The use of personnel with specialized skills enhances an organization's ability to be successful in large, complex, or difficult tasks. It allows for both a) deeper and stronger skills and b) the contribution of differing perspectives.
Q4: What is Regression testing?
Retesting of a previously tested program following modification to ensure that faults have not been introduced or uncovered as a result of the changes made.
Q5: Why does software have bugs?
Some of the reasons are:
•Miscommunication or no communication.
•Programming errors
•Changing requirements
•Time pressures
Q6: How can new Software QA processes be introduced in an existing Organization?
•It depends on the size of the organization and the risks involved.
•For small groups or projects, a more ad-hoc process may be appropriate, depending on the type of customers and projects.
•By incremental self managed team approaches
Q7: What is verification and Validation?
Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and specifications. This can be done with checklists, issues lists, walkthroughs, and inspection meetings. Validation typically involves actual testing and takes place after verifications are completed.
Q8: What is a 'walkthrough'? What's an 'inspection'?
A 'walkthrough' is an informal meeting for evaluation or informational purposes. Little or no preparation is usually required. An inspection is more formalized than a 'walkthrough', typically with 3-8 people including a moderator, reader, and a recorder to take notes. The subject of the inspection is typically a document such as a requirements spec or a test plan, and the purpose is to find problems and see what's missing, not to fix anything.
Q9: What kinds of testing should be considered?
Some of the basic kinds of testing involve: Blackbox testing, Whitebox testing, Integration testing, Functional testing, smoke testing, Acceptance testing, Load testing, Performance testing, User acceptance testing.
Q10: What are 5 common problems in the software development process?
•Poor requirements                •Unrealistic Schedule        •Inadequate testing
•Changing requirements        •Miscommunication
Q11: What are 5 common solutions to software development problems?
•Solid requirements           •Realistic Schedule        •Adequate testing
•Clarity of requirements    •Good communication among the Project team
Q12: What is software 'quality'?
Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable
Q13: What are some recent major computer system failures caused by software bugs?
Trading on a major Asian stock exchange was brought to a halt in November of 2005, reportedly due to an error in a system software upgrade. A May 2005 newspaper article reported that a major hybrid car manufacturer had to install a software fix on 20,000 vehicles due to problems with invalid engine warning lights and occasional stalling. Media reports in January of 2005 detailed severe problems with a $170 million high-profile U.S. government IT systems project. Software testing was one of the five major problem areas according to a report of the commission reviewing the project.
Q14: What is 'good code'? What is 'good design'?
'Good code' is code that works, is bug free, and is readable and maintainable. Good internal design is indicated by software code whose overall structure is clear, understandable, easily modifiable, and maintainable; is robust with sufficient error-handling and status logging capability; and works correctly when implemented. Good functional design is indicated by an application whose functionality can be traced back to customer and end-user requirements.
Q15: What is SEI? CMM? CMMI? ISO? Will it help?
These are all standards that determine effectiveness in delivering quality software. It helps organizations to identify best practices useful in helping them increase the maturity of their processes.
Q16: What steps are needed to develop and run software tests?
•Obtain requirements, functional design, and internal design specifications and other necessary documents
•Obtain budget and schedule requirements.
•Determine Project context.
•Identify risks.
•Determine testing approaches, methods, test environment, test data.
•Set Schedules, testing documents. •Perform tests.
•Perform reviews and evaluations •Maintain and update documents
Q17: What's a 'test plan'? What's a 'test case'?
A software project test plan is a document that describes the objectives, scope, approach, and focus of a software testing effort. A test case is a document that describes an input, action, or event and an expected response, to determine if a feature of an application is working correctly.
Q18: What should be done after a bug is found?
The bug needs to be communicated and assigned to developers that can fix it. After the problem is resolved, fixes should be re-tested, and determinations made regarding requirements for regression testing to check that fixes didn't create problems elsewhere
Q19: Will automated testing tools make testing easier?
It depends on the Project size. For small projects, the time needed to learn and implement them may not be worth it unless personnel are already familiar with the tools. For larger projects, or on-going long-term projects they can be valuable.
Q20: What's the best way to choose a test automation tool? Some of the points that can be noted before choosing a tool would be:
•Analyze the non-automated testing situation to determine the testing activity that is being performed.
•Testing procedures that are time consuming and repetition.
•Cost/Budget of tool, Training and implementation factors.
•Evaluation of the chosen tool to explore the benefits.
Course Instructor

Dr. Ghulam A Farrukh
Ph.D Software Engineering
George Mason University, USA

Customer Oriented Software Quality Assurance by Frank P. Ginac

Inroads to Software Quality by Alka Jarvis and Vern Crandell

Requirements Engineering: Processes and Techniques by Gerald Kotonya and Ian Sommerville

Software Assessments, Benchmarks, and Best Practices by Capers Jones

Software Engineering: A Practitioner’s Approach by Roger S. Pressman

Software Engineering by Ian Sommerville

Software Engineering Quality Practices by Ronald K. Kandt

Software Quality: Analysis and Guidelines for Success by Capers Jones

Software Requirements: Objects, States, and Functions by Alan M. Davis

High Quality Low Cost Software Inspections by Ronald A. Radice