Software Testing Quality
Quality Assurance and Software Testing
What is quality assurance? Definitions and types of SW testing
What is Quality Assurance?
Quality Assurance makes sure the project will be completed based on the previously agreed specifications, standards, and functionality required without defects and possible problems. It monitors and tries to improve the development process from the beginning of the project to ensure this. It is oriented to "prevention".
When should QA testing start in a project? Why?
QA is involved in the project from the beginning. This helps the teams reach and understand the problems and concerns, also gives time to set up the testing environment and configuration. On the other hand, actual testing starts after the test plans are written, reviewed and approved based on the design documentation.
What is Software Testing?
Software testing is oriented to "detection". It's examining a system or an application under controlled conditions. It's intentionally making things go wrong when they should not and things happen when they should not.
What is Software Quality?
What is Software Quality?
Quality software is reasonably bug-free, delivered on time and within budget, meets requirements and/or expectations, and is maintainable.
What is Software Verification and Validation?
Verification is preventing mechanism to detect possible failures before the experiment begin. It involves reviews, meetings, evaluating documents, plans, code, inspections, specifications, etc. Validation occurs after verification and it's the actual testing to find defects against the functionality or the specifications.
What is Test Plan?
Test Plan is a document that describes the objectives, scope, strategy, and focus of a software testing effort.
What is a Test Case?
A test case is a document that describes an input, action, or event and an expected response, to conclude if a feature of an application is working correctly. A test case should contain particulars such as test case identifier, test case name, objective, test conditions/setup, input data requirements, steps, and expected results.
What is Good Software Coding?
Good code is code that works according to the requirements, bug-free, readable, expandable in the future and easily maintainable.
What is Good Design?
In good design, the overall structure is clear, understandable, easily modifiable, and maintainable. Works correctly when implemented and functionality can be traced back to the customer and end-user requirements.
Who is a Good Test Engineer?
Good test engineer has the ability to think the unthinkable, has the test to break position, strong desire to quality and attention to detail.
What is Walkthrough?
A walkthrough is a quick and informal meeting for evaluation purposes.
What is the Software Life Cycle?
The Software Life Cycle begins when an application is first conceived and ends when it is no longer in use. It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out, and other aspects.
What is Software Inspection?
The purpose of the inspection is trying to find defects and predicaments mostly in documents such as test plans, specifications, test cases, coding, etc. It helps to find the problems and report it but not to fix it. It is one of the most cost-effective methods of software quality. Many people can join the inspections but normally one moderator, one reader, and one note taker are mandatory.
What are the benefits of Automated Testing?
It's very valuable for the long term and ongoing projects. You can automize some or all of the tests which need to be run from time to time repeatedly or difficult to test manually. It saves time and effort, also makes measurement possible out of working hours and nights. They can be used by different people and many times in the future. By this way, you also standardize the testing process and you can depend on the results.
What do you imagine are the main problems of working in a geographically distributed team?
The main problem is communication. To know the team members, sharing as much information as possible whenever you need is very valuable to solve the problems and concerns. On the other hand, increasing the wired communication as much as possible, setting up meetings help to reduce the miscommunication problems.
What are the common problems in Software Development Process?
Poor requirements, unrealistic schedule, inadequate testing, miscommunication, and additional requirement changes after development begin.
- Organizations vary considerably in how they assign the contract for QA and testing. Sometimes they're the combined responsibility of one group or individual. Also common are project teams that include a mix of testers and developers who work closely together, with overall QA processes monitored by project managers. It will depend on what best fits an organization's size and business structure.
- solid requirements - clear, complete, detailed, cohesive, attainable, testable requirements that are agreed to by all players. In 'agile'-type environments, continuous close coordination with customers/end-users is necessary to ensure that changing/emerging requirements are understood.
- realistic schedules - allow adequate time for planning, design, testing, bug fixing, re-testing, changes, and documentation; personnel should be able to complete the project without burning out.
- adequate testing - start testing early on, re-test after fixes or changes, plan for adequate time for testing and bug-fixing. 'Early' testing could include static code analysis/testing, test-first development, unit testing by developers, built-in testing and diagnostic capabilities, automated post-build testing, etc.
- stick to initial requirements where feasible - be prepared to defend against excessive changes and additions once development has begun, and be prepared to explain consequences. If changes are necessary, they should be adequately reflected in related schedule changes. If possible, work closely with customers/end-users to manage expectations. In 'agile'-type environments, initial requirements may be expected to change significantly, requiring that true agile processes be in place and followed.
- communication - require walkthroughs and inspections when appropriate; make extensive use of group communication tools - groupware, wiki's, bug-tracking tools and change management tools, intranet capabilities, etc.; ensure that information/documentation is available and up-to-date - preferably electronic, not paper; promote teamwork and cooperation; use prototypes and/or continuous communication with end-users if possible to clarify expectations.
Tools - Software QA and Test Tools
- Test tools
- CM tools and PM tools
- Web site test and management tools
- Load and performance test tools
- Java test tools
- HTML Validators
- Link Checkers
- Free On-the-Web HTML Validators and Link Checkers
- PERL and C Programs for Validating and Checking
- Web Functional/Regression Test Tools
- Web Site Security Test Tools
- External Site Monitoring Services
- Web Site Management Tools
- Log Analysis Tools
- Mobile Web/App Testing Tools
- Other Web Test Tools
- Web Job Boards useful to QA and Test Engineers
- Latest News Headlines -- Technology, Software Development, Computer Security, Tech Stocks, more...
- Software Testing Books
- Software Test Automation Books
- Software Security Testing Books
- Software Load Testing Books
- Software Quality Assurance Books
- Software Requirements Engineering Books
- Software Metrics Books
- Configuration Management Books
- Software Risk Management Books
- Software Engineering Books
- Software Project Management Books
- Technical Background Basics Books
- Other Books
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. It is oriented to 'opposition'. (See the Bookstore section's 'Software QA' category for a list of useful books on Software Quality Assurance.)
Testing involves the operation of a system or application under controlled conditions and evaluating the results (eg, 'if the user is in interface A of the application while using hardware B, and does C, then D should happen'). The controlled conditions should include both normal and abnormal conditions. 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. It is oriented to 'detection'. (See the Bookstore section's 'Software Testing' category for a list of useful books on Software Testing.)
While all projects will benefit from testing, some projects may not require independent test staff to succeed.
Which projects may not need self-sufficient test staff? The answer depends on the size and context of the project, the risks, the development methodology, the skill and experience of the developers, and other factors. For instance, 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.
In some cases, an IT organization may be too small or new to have a testing staff even if the situation calls for it. In these circumstances, it may be appropriate to instead use builders or outsourcing, or adjust the project management and development approach (by switching to more senior developers and agile test-first development, for example). Inexperienced managers sometimes gamble on the success of a project by skipping thorough testing or having programmers do post-development functional testing of their own work, a certainly high-risk gamble.
For non-trivial-size projects or projects with non-trivial risks, a testing staff is usually necessary. As in any business, 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 addition of differing prospects. For example, programmers typically have the perspective of 'what are the technical issues in making this functionality work?'. A test engineer typically has the aspect of 'what might go wrong with this functionality, and how can we ensure it meets expectations?'. A technical person who can be highly effective in approaching tasks from both of those perspectives is rare, which is why, sooner or later, organizations bring in test specialists.
Verification typically involves reviews and meetings to evaluate documents, plans, code, requirements, and designations. This can be done with checklists, issues lists, walkthroughs, and parade meetings. Validation typically involves actual testing and takes place after verifications are performed. The term 'IV & V' refers to Independent Verification and Validation.
A 'walkthrough' is an informal meeting for evaluation or informational purposes. Little or no preparation is usually required.
(See the Softwareqatest.com Bookstore section's 'Software QA', 'Software Engineering', and 'Project Management' categories for useful books with more information.)
Web Tools - Web Site Test Tools and Site Management Tools
Jobs & News - Jobs and News
Bookstore - Software QA and Testing Bookstore