QA and Software Testing Frequently Asked Questions
What "software quality assurance?
Software QA involves the entire software development process - to monitor and improve processes to ensure that all standards and agreed procedures are followed and that problems are identified and treated. It is based on "prevention".
What "software testing?
Testing involves operation of a system or application under controlled conditions and evaluating results (eg, "if the user is in the A-interface of the application while using hardware B, and C are not, then it should occur, D '). The control conditions should include normal and abnormal conditions. Testing should intentionally attempt, things go wrong to determine if things happen when they happen or not things are not where they should. It is based on "recognition".
Organizations differ greatly in how they assign responsibility for quality assurance and testing. Sometimes it is a joint responsibility of a group or individual. So the project team shared a combination of testers and developers who work in close collaboration include a total quality assurance processes of project managers are monitored. It depends on what is appropriate for an organization the size and economic structures.
What is the great thing about software quality assurance and tests?
Quality assurance and testing to help avoid situations like the following:
• Software bugs in a Soviet system of early warning monitoring near nuclear war in 1983 for posts in the spring of 1999. The software must filter out false missile detections caused by Soviet satellites picking up sunlight reflections cloud tops, but not enough. Disaster was averted when a Soviet commander was based on what he said "... funny feeling in my stomach, "the apparent missile attack was decided on a false alarm. The filtering software code was rewritten.
• software bugs caused the bank accounts of 823 customers of a large U.S. bank with $ 924,844,208.32 each in May 1996 will be credited, according to newspapers. The American Bankers Association said it was the biggest mistake of the history of these banks. A spokesman said the Bank of programming errors have been corrected and all funds were recovered.
• In November 1996, newspapers reported that software bugs not the 411 telephone information system of the U. S. RBOCs' for most of a day has caused. The majority of the 2000 operators had to search by phone with £ 13,000,000, instead of the registration database. The error has been committed by changes in new software and implemented the software problem had both production and backup systems have been installed. A spokesman for the software vendor reportedly said that "he had nothing to do with the integrity of the software. He was a human error. "
• In August 1997, arrested one of the major consumer credit reporting companies have said their new public web site after less than two days of operation due to software problems. The new site allows visitors to access the site now, for a small supplement to their personal credit reports. However, ending a series of early users to view each others reports instead of their own, leading to angry customers and advertising nationally. The problem is, "... attributed to unexpectedly high demand from consumers and faulty software routed to the wrong files on computers. "
The expiration dates of treatment • The complaint department store chain filed in August 1997 against a vendor transaction processing system (not credit card companies) credit card software failure in 2000.
• In November 1997, the stock of the industry to a major social health has declined 60% due to reports of failures in computer billing systems, problems with a large database conversion, and tests inadequate software. It was reported that over $ 100,000,000 in debts are written off and fines of several million dollars have been earned if the company had government agencies.
January 1998 • News reported software problems at a U.S. telecommunications company that has not resulted in major long-distance charges for one month for 400,000 customers. The problem went undetected until customers called to ask questions about their bills.
• In April 1998, a leading data communications network in the United States is not 24 hours, crippling a large part of some systems of credit card authorization for U.S. trading as well as other major U.S. banks, retail, government and data systems. The cause was ultimately a lack of software.
• The computerized system of an online service of the U.S. major trading stock failed during trading hours several times over a period of days in February 1999 after national news. The problem was due to problems in a software upgrade to the commercial speed of confirmations online.
Why it is often difficult for management to take seriously with the assurance of quality?
Solving problems is a process with high visibility, preventing problems is low visibility. This is illustrated by an old parable:
In ancient China was a family of healers, one of whom was known throughout the country and employed as a doctor, a great man. The doctor asked what his family was the most skillful healer. He replied:
"I tend to the sick and dying with drastic and dramatic treatments, and sometimes a person is cured and my name is among the masters."
"My elder brother cures sickness when it just begins to take root, and his skills are known among the local peasants and neighbors."
"My eldest brother is able to eradicate the spirit and meaning of the disease before it forms. His name is unknown outside our home. "
Why do software bugs?
• misunderstandings or no communication - as the specifics of what an application should or not (the requirements of the application).
• software complexity - the complexity of current software applications can be difficult to understand for everyone, no experience in modern software development. Windows-type interfaces, client-server applications and distributed, data communications, contributed to a huge relational databases, and the sheer size of applications throughout the exponential growth of software and system complexity. And to complicate the use of object-oriented techniques, rather than facilitating a project if it is well designed.
• programming errors - programmers, like everybody can make mistakes.
• Changing requirements - the customer can not understand, can influence the understanding of change, or, and ask them anyway - redesign, rescheduling of engineers, the impact on other projects, previous work that can be re-established or at the door that the hardware requirements may be affected, etc. If there are many small changes or major changes, known and unknown dependencies among parts of the project are likely to interact and problematic and complex track changes can lead to errors. The enthusiasm of engineers may be affected. In some rapidly changing environments, continuously modified requirements may be a reality. need to understand in this case, management, the risks, and QA and test engineers to adapt and sustain its plan for continuous extensive testing on the inevitable failure of lack of control - see "What if these requirements are constantly changing? "In Part 2 of the FAQ.
• time pressure - planning of software projects is difficult at best, often with a lot of trial and error. When time job and, at worst, mistakes are made.
• Ego - people prefer to say things like:
"No problem"
"Cake"
"I can whip a few hours"
"It should be easy to update the old code"
instead of
'Adds that a lot of complexity and we could end up
made many mistakes "
"We have no idea if we can do, we'll wing"
"I can not estimate how long it takes until I
Pay special attention to it "
"We can not understand what the old spaghetti code
In the first place "
If there are too many unrealistic 'no problem', which
The result is bugs.
• poorly documented code - it is difficult to obtain and modify the code is poorly written or poorly documented, the result is bugs. In many organizations management provides no incentive for programmers to write their code or document in a clear, readable code. In fact, it is usually the opposite: they get points for fast turn most of the code, and there is job security if nobody can understand (though it is difficult to write, it should be difficult to read).
• The software development tools - visual tools, class libraries, compilers, scripting tools, etc. often introduce their own errors, or are poorly documented, which has bugs.
How can new Software QA processes be implemented in an existing organization?
• Much depends on the size of the organization and the associated risks. For large enterprises high risk (in terms of lives or money) projects, serious management buy-in is necessary and a formal quality assurance is necessary.
• When the risk is low, management and organizational buy-in and QA implementation may slow, will process step-at-a-time. quality assurance processes must be balanced with productivity so as to reduce the bureaucracy of climbing.
• For small groups or projects, an ad hoc method can be useful, depending on the type of clients and projects. Much will depend on team leaders or managers, feedback from developers, and appropriate communication between customers, managers, developers and testers.
• In all cases the greatest value of the force management processes in order to clear, complete, verifiable specifications.
What is verification? Validation?
Review typically includes assessments and meetings to evaluate documents, plans, codes, requirements and specifications. This can be done with check lists, lists of questions, visits and meetings of inspection. Validation typically involves actual testing and inspections are carried out after completion. The term 'IV & V "refers to an independent verification and validation.
What is a walkthrough?
A "transition" is an informal meeting for evaluation or informational purposes only. Little or no preparation is usually required.
What is an inspection?
An inspection is more than a "Walkthrough" formalized, usually with 3-8 people including a moderator, reader (the author, who is currently under revision), and a recorder to take notes . The purpose of the inspection is typically a document such as the requirement specification or test plan, and the goal is to find problems and see what is missing, so as not remove everything. Participants must for this kind of meetings prepared by reading the document, which are most of the problems encountered in this preparation. The result of the inspection meeting should be a written report. Thorough preparation for inspections is difficult, painstaking work, but is one of the cheapest methods to ensure quality. Employees who are more qualified inspections as "elder brother" in the parable of "Why it is often difficult for management to take seriously with the assurance of quality?." Your skills are low visibility, but they are extremely valuable to any software development organization, since bug prevention is far cheaper than the error detection.
What types of tests are taken into account?
• Black box testing - not on knowledge of internal design or code base. Testing requirements and functionality.
• White box testing - based on knowledge of the internal logic of the application code. The tests are on the cover of the Code states, branches, paths, conditions.
• Unit Testing - Testing of the more 'micro' scale of testing;, special functions or modules code. In general, the programmer and not by testers performed because it requires detailed knowledge of the program code and internal structure. Not always easy to do if the application has a well-designed architecture with tight code that may require the development of modules test pilot and test environments.
• Test additional integration - continuous monitoring of the application will be added as new functionality requires that the various aspects of application functionality sufficiently independent to all parties separately before the program is completed, or that test drivers developed work than is necessary and done by programmers or Tester.
• Determine integration - Testing of combined parts of an application if they work well together. The parties "can code modules, individual applications, client applications and server on a network, etc. This type of testing is especially relevant to client / server and distributed systems.
• Functional testing - black-box testing of functional requirements of an application are suitable for this type of testing should be done by testers. This does not mean that programmers should not check that their code works before the release (which of course applies to all phases of the trial.)
• Test System Test - Type "black box" which is based on the specification requirements in general, covers all parts of a combined system.
• End-to-end testing - similar to the system test the "macro" scale testing includes a complete environment to test the application in a situation to use the real world, imitating how to interact with a database with the network communication or interaction with other equipment, systems or applications, if any.
• Business Review - most often an attempt initial test to determine if a new version of software to complete this will accept for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems in place in neutral or destroying databases, the software can not be in a "healthy" sufficient condition for warrant further testing in its current state.
re • Regression testing - testing after fixes or modifications of the software or its environment. It may be difficult to determine how many new trials are needed, especially towards the end of the development cycle. Automated test tools can be particularly useful for this type of test.
• acceptance testing - final testing of the specifications for the end user or customer, or based on the use by certain end-users/customers limited time.
• load testing - testing an application under heavy loads, such as determination of the test a website under a number of charges, how the system will degrade the response time or not.
• Stress testing - term often used synonymously with "last", and "performace test. Also used to describe tests as a system, while functional tests under unusually heavy loads, heavy repetition of certain actions or inputs, input of numerical values, large, complex query to a database, etc.
• Performance testing - term often means test "is used stress" and "End". Ideally test "performance" (and any other "standard" test) is in the documentation or quality assurance requirements or test plans.
• Usability testing - testing "friendliness". This is of course subjective and depends on the target end users or customers. user interviews, surveys, video recording of user sessions and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
• Install / Uninstall - testing of full, partial, or upgrade install / uninstall process.
• recovery testing - testing the effectiveness of a system recovers from crashes hardware failures or other catastrophic problems.
• Security - Controls how the system protects against access to unauthorized internal or external, intentional damage, etc., may require sophisticated control technology.
• compatibility testing - testing how software performs in a specific material / software / operating system / network / environment, etc..
• acceptance tests to determine - if the software stisfactory to a client.
• Comparison Test - comparing software weaknesses and strengths of competing products.
• Consideration alpha - an application for development is almost complete, minor design changes can still be made as a result of this review. Generally, by end users or others, not made by testers or developers.
• Beta testing - testing when development and testing are essentially completed and final bugs and problems need to be found before the final version. Generally, by end-users or others, carried out not by programmers or testers.
What are the 5 common problems in software development?
• poor requirements - if requirements clear, incomplete, too general or not verifiable, there will be problems.
• The realistic schedule - if too much work is crammed into too little time, problems are inevitable.
• inadequate testing - no one will know if the program is all good until the customer complains or systems crash is.
• featuritis - Access to a bunch of new features after development is underway, very often.
• misunderstandings - if developers do not know what is needed, or customers have unrealistic expectations, problems are guaranteed.
What are the 5 common solutions to problems of software development?
• solid requirements - clear, complete, detailed, coherent, attainable, testable requirements that are accepted by all players. Use prototypes to help define the requirements.
• realistic schedules - allow time for planning, design, testing, bug fixing, re-testing, modifications and documentation, staff should be able to complete the project without burning.
• adequate testing - start early detection, a new test after fixes or changes, plan enough time for testing and bug fixes.
• Make sure you have as much as possible to the original requirements - ready to defend against changes and additions once development has begun, and be prepared to explain the consequences. If changes are necessary, they must be properly in relation to changes in timing of expression. If possible, use rapid prototyping in the design phase so that customers can see what is expected. This will provide a superior level of comfort with their decisions and minimize the requirements of any subsequent changes.
• communication - require inspections and walkthroughs, as appropriate; make extensive use of communication in the Tools group - e-mail, groupware, network tools and bug tracking tools for managing change , intranet capabilities, etc., to ensure that documentation is available and updated - preferably electronic, not paper, promote teamwork and cooperation; use early prototypes, so that expectations customers are clarified.
What is software 'quality'?
quality software is pretty accurate, delivered on time and on budget, meets the requirements or expectations and is easy to maintain. However, quality is a subjective term. It refers to the "customer" and depend on their influence in the overall scheme of things. A wide angle view of the customer "includes a software development project could end users, testers, customer acceptance, management of customer contract officers, management development organization / accountants / testers / Seller future software maintenance engineers, stockholders, magazine columnists, etc. Each type of "clients" are their own views on the 'quality' - have records could define quality in terms of profits, while defining quality of end user can use and accurate.
What "code of good"?
Code of good works is the code that is correct, and is readable and maintainable. Some organizations have coding 'standards' that all developers want to stay competitive, but everyone has different ideas about what is best, or This is too much or too little regulation. In addition, there are various theories and metrics such as McCabe complexity metrics. It is recalled that the excessive use of standards and rules can stifle creativity and productivity are maintained. tools "peer review" buddy checks' code analysis, etc., can be used to identify problems and enforce standards.
For C and C + + programming, here are some typical ideas to consider establishing rules and standards, which may or may not apply to a particular situation:
• reduce or eliminate the use of global variables.
• Do use descriptive function and method names - two upper and lowercase letters, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters is not out of line), in accordance naming conventions.
• Use descriptive variable names to use - two uppercase and lowercase letters, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters are not out of line), as naming conventions .
• The function and method sizes should be minimized, and less than 100 lines of code is correct, less than 50 lines is preferable.
• function descriptions should be clearly stated in previous comments by a function code.
• organize code for readability.
• the use of space generously - vertically and horizintally
• Each line of code should contain 70 characters max.
• declaration of a code per line.
• the type of programming should be compatible thought a program (eg the use of brackets, indentations, naming conventions, etc.)
• Add comments, err on the side of too much rather than too few observations, a common rule of thumb is that there are at least as many lines of comments (including header blocks) and line code.
• no matter how small, should be a demand for documentation for the overall program function and flow (even a few paragraphs is better than nothing), or possibly an organization separate and detailed program documentation.
• extensive use of error-handling procedures and the registration status and error messages.
• For C + +, to minimize complexity and increase maintainability avoid hierarchies at multiple levels of inheritance of the class (depending on the size and complexity of the application). Limit the use of multiple inheritance, and minimize use of operator overloading (note that the Java programming language eliminates multiple inheritance and operator overloading.)
• For C + +, keep class method of small, less than 50 lines of code per method is preferable.
• For C + +, make liberal use of exception handlers
What is "good design"?
'Design' could refer to many things, but often refers to "functional design" or "regime". Good internal design is indicated by software code whose overall structure is clear, understandable, easily modifiable, maintainable and is solid with error handling and logging sufficient condition of the function and works correctly when implemented. Good functional design is an application whose functionality for customers and end-user requirements will be traced s poster.
For programs that have a user interface, it is often a good idea to think that the end users in knowledge and little computer can not read a user manual or even online help, some common rules , periods of thumb:
• The program should, so that at least surprises the user to act
• There must always be clear what the user can do next and how to exit
• The program should not allow the user to do something stupid without warning.
What is SEI? CMM? ISO? IEEE? ANSI? T Help?
• SEI = 'Software Engineering Institute, initiated by Carnegie-Mellon, the U.S. Department of Defense to help improve software development process.
• CMM = 'Capability Maturity Model, developed by the SEI. There is a model of 5 levels of the organizational unit "maturity" that the determination of the effectiveness in providing high quality software. It is geared to large organizations such as the large defense contractors in the United States. But most of the quality assurance processes are appropriate for any organization, and when it can reasonably used may be useful. Organizations may submit comments CMM assessments maintained by qualified auditors.
Level 1 - chaos, panic and heroism marked periodic
The efforts of people needed for success
complete projects. Few processes in place;
Success may not be reproducible.
Level 2 - Monitoring software projects, requirements management,
realistic planning and configuration management
Processes are in place, successful practices
be repeated.
Level 3 - standard software development and maintenance
Integrated processes within an organization;
software engineering process group is in place
control software processes and training programs
be used to ensure understanding and compliance.
Measures level 4 - are used to track productivity, processes,
and products. Project performance is predictable,
and the quality is always high.
Level 5 - is the emphasis on process improvement continouous. The
Impact of new procedures and technologies
predicted and effectively implemented if necessary.
(Perspective on CMM ratings: During 1992-1996 533 organizations
were evaluated. Of these, 62% at level 1, 23% were assessed at 2,
13% 3 2% to 4% and 0.4 to 5 The average size of
Was 100 organizations software engineering maintenance personnel /;
31% of organizations were U.S. federal contractors. Those
Level 1 assesses the most problematic area of the key process was
in quality assurance software.)
What "software quality assurance?
Software QA involves the entire software development process - to monitor and improve processes to ensure that all standards and agreed procedures are followed and that problems are identified and treated. It is based on "prevention".
What "software testing?
Testing involves operation of a system or application under controlled conditions and evaluating results (eg, "if the user is in the A-interface of the application while using hardware B, and C are not, then it should occur, D '). The control conditions should include normal and abnormal conditions. Testing should intentionally attempt, things go wrong to determine if things happen when they happen or not things are not where they should. It is based on "recognition".
Organizations differ greatly in how they assign responsibility for quality assurance and testing. Sometimes it is a joint responsibility of a group or individual. So the project team shared a combination of testers and developers who work in close collaboration include a total quality assurance processes of project managers are monitored. It depends on what is appropriate for an organization the size and economic structures.
What is the great thing about software quality assurance and tests?
Quality assurance and testing to help avoid situations like the following:
• Software bugs in a Soviet system of early warning monitoring near nuclear war in 1983 for posts in the spring of 1999. The software must filter out false missile detections caused by Soviet satellites picking up sunlight reflections cloud tops, but not enough. Disaster was averted when a Soviet commander was based on what he said "... funny feeling in my stomach, "the apparent missile attack was decided on a false alarm. The filtering software code was rewritten.
• software bugs caused the bank accounts of 823 customers of a large U.S. bank with $ 924,844,208.32 each in May 1996 will be credited, according to newspapers. The American Bankers Association said it was the biggest mistake of the history of these banks. A spokesman said the Bank of programming errors have been corrected and all funds were recovered.
• In November 1996, newspapers reported that software bugs not the 411 telephone information system of the U. S. RBOCs' for most of a day has caused. The majority of the 2000 operators had to search by phone with £ 13,000,000, instead of the registration database. The error has been committed by changes in new software and implemented the software problem had both production and backup systems have been installed. A spokesman for the software vendor reportedly said that "he had nothing to do with the integrity of the software. He was a human error. "
• In August 1997, arrested one of the major consumer credit reporting companies have said their new public web site after less than two days of operation due to software problems. The new site allows visitors to access the site now, for a small supplement to their personal credit reports. However, ending a series of early users to view each others reports instead of their own, leading to angry customers and advertising nationally. The problem is, "... attributed to unexpectedly high demand from consumers and faulty software routed to the wrong files on computers. "
The expiration dates of treatment • The complaint department store chain filed in August 1997 against a vendor transaction processing system (not credit card companies) credit card software failure in 2000.
• In November 1997, the stock of the industry to a major social health has declined 60% due to reports of failures in computer billing systems, problems with a large database conversion, and tests inadequate software. It was reported that over $ 100,000,000 in debts are written off and fines of several million dollars have been earned if the company had government agencies.
January 1998 • News reported software problems at a U.S. telecommunications company that has not resulted in major long-distance charges for one month for 400,000 customers. The problem went undetected until customers called to ask questions about their bills.
• In April 1998, a leading data communications network in the United States is not 24 hours, crippling a large part of some systems of credit card authorization for U.S. trading as well as other major U.S. banks, retail, government and data systems. The cause was ultimately a lack of software.
• The computerized system of an online service of the U.S. major trading stock failed during trading hours several times over a period of days in February 1999 after national news. The problem was due to problems in a software upgrade to the commercial speed of confirmations online.
Why it is often difficult for management to take seriously with the assurance of quality?
Solving problems is a process with high visibility, preventing problems is low visibility. This is illustrated by an old parable:
In ancient China was a family of healers, one of whom was known throughout the country and employed as a doctor, a great man. The doctor asked what his family was the most skillful healer. He replied:
"I tend to the sick and dying with drastic and dramatic treatments, and sometimes a person is cured and my name is among the masters."
"My elder brother cures sickness when it just begins to take root, and his skills are known among the local peasants and neighbors."
"My eldest brother is able to eradicate the spirit and meaning of the disease before it forms. His name is unknown outside our home. "
Why do software bugs?
• misunderstandings or no communication - as the specifics of what an application should or not (the requirements of the application).
• software complexity - the complexity of current software applications can be difficult to understand for everyone, no experience in modern software development. Windows-type interfaces, client-server applications and distributed, data communications, contributed to a huge relational databases, and the sheer size of applications throughout the exponential growth of software and system complexity. And to complicate the use of object-oriented techniques, rather than facilitating a project if it is well designed.
• programming errors - programmers, like everybody can make mistakes.
• Changing requirements - the customer can not understand, can influence the understanding of change, or, and ask them anyway - redesign, rescheduling of engineers, the impact on other projects, previous work that can be re-established or at the door that the hardware requirements may be affected, etc. If there are many small changes or major changes, known and unknown dependencies among parts of the project are likely to interact and problematic and complex track changes can lead to errors. The enthusiasm of engineers may be affected. In some rapidly changing environments, continuously modified requirements may be a reality. need to understand in this case, management, the risks, and QA and test engineers to adapt and sustain its plan for continuous extensive testing on the inevitable failure of lack of control - see "What if these requirements are constantly changing? "In Part 2 of the FAQ.
• time pressure - planning of software projects is difficult at best, often with a lot of trial and error. When time job and, at worst, mistakes are made.
• Ego - people prefer to say things like:
"No problem"
"Cake"
"I can whip a few hours"
"It should be easy to update the old code"
instead of
'Adds that a lot of complexity and we could end up
made many mistakes "
"We have no idea if we can do, we'll wing"
"I can not estimate how long it takes until I
Pay special attention to it "
"We can not understand what the old spaghetti code
In the first place "
If there are too many unrealistic 'no problem', which
The result is bugs.
• poorly documented code - it is difficult to obtain and modify the code is poorly written or poorly documented, the result is bugs. In many organizations management provides no incentive for programmers to write their code or document in a clear, readable code. In fact, it is usually the opposite: they get points for fast turn most of the code, and there is job security if nobody can understand (though it is difficult to write, it should be difficult to read).
• The software development tools - visual tools, class libraries, compilers, scripting tools, etc. often introduce their own errors, or are poorly documented, which has bugs.
How can new Software QA processes be implemented in an existing organization?
• Much depends on the size of the organization and the associated risks. For large enterprises high risk (in terms of lives or money) projects, serious management buy-in is necessary and a formal quality assurance is necessary.
• When the risk is low, management and organizational buy-in and QA implementation may slow, will process step-at-a-time. quality assurance processes must be balanced with productivity so as to reduce the bureaucracy of climbing.
• For small groups or projects, an ad hoc method can be useful, depending on the type of clients and projects. Much will depend on team leaders or managers, feedback from developers, and appropriate communication between customers, managers, developers and testers.
• In all cases the greatest value of the force management processes in order to clear, complete, verifiable specifications.
What is verification? Validation?
Review typically includes assessments and meetings to evaluate documents, plans, codes, requirements and specifications. This can be done with check lists, lists of questions, visits and meetings of inspection. Validation typically involves actual testing and inspections are carried out after completion. The term 'IV & V "refers to an independent verification and validation.
What is a walkthrough?
A "transition" is an informal meeting for evaluation or informational purposes only. Little or no preparation is usually required.
What is an inspection?
An inspection is more than a "Walkthrough" formalized, usually with 3-8 people including a moderator, reader (the author, who is currently under revision), and a recorder to take notes . The purpose of the inspection is typically a document such as the requirement specification or test plan, and the goal is to find problems and see what is missing, so as not remove everything. Participants must for this kind of meetings prepared by reading the document, which are most of the problems encountered in this preparation. The result of the inspection meeting should be a written report. Thorough preparation for inspections is difficult, painstaking work, but is one of the cheapest methods to ensure quality. Employees who are more qualified inspections as "elder brother" in the parable of "Why it is often difficult for management to take seriously with the assurance of quality?." Your skills are low visibility, but they are extremely valuable to any software development organization, since bug prevention is far cheaper than the error detection.
What types of tests are taken into account?
• Black box testing - not on knowledge of internal design or code base. Testing requirements and functionality.
• White box testing - based on knowledge of the internal logic of the application code. The tests are on the cover of the Code states, branches, paths, conditions.
• Unit Testing - Testing of the more 'micro' scale of testing;, special functions or modules code. In general, the programmer and not by testers performed because it requires detailed knowledge of the program code and internal structure. Not always easy to do if the application has a well-designed architecture with tight code that may require the development of modules test pilot and test environments.
• Test additional integration - continuous monitoring of the application will be added as new functionality requires that the various aspects of application functionality sufficiently independent to all parties separately before the program is completed, or that test drivers developed work than is necessary and done by programmers or Tester.
• Determine integration - Testing of combined parts of an application if they work well together. The parties "can code modules, individual applications, client applications and server on a network, etc. This type of testing is especially relevant to client / server and distributed systems.
• Functional testing - black-box testing of functional requirements of an application are suitable for this type of testing should be done by testers. This does not mean that programmers should not check that their code works before the release (which of course applies to all phases of the trial.)
• Test System Test - Type "black box" which is based on the specification requirements in general, covers all parts of a combined system.
• End-to-end testing - similar to the system test the "macro" scale testing includes a complete environment to test the application in a situation to use the real world, imitating how to interact with a database with the network communication or interaction with other equipment, systems or applications, if any.
• Business Review - most often an attempt initial test to determine if a new version of software to complete this will accept for a major testing effort. For example, if the new software is crashing systems every 5 minutes, bogging down systems in place in neutral or destroying databases, the software can not be in a "healthy" sufficient condition for warrant further testing in its current state.
re • Regression testing - testing after fixes or modifications of the software or its environment. It may be difficult to determine how many new trials are needed, especially towards the end of the development cycle. Automated test tools can be particularly useful for this type of test.
• acceptance testing - final testing of the specifications for the end user or customer, or based on the use by certain end-users/customers limited time.
• load testing - testing an application under heavy loads, such as determination of the test a website under a number of charges, how the system will degrade the response time or not.
• Stress testing - term often used synonymously with "last", and "performace test. Also used to describe tests as a system, while functional tests under unusually heavy loads, heavy repetition of certain actions or inputs, input of numerical values, large, complex query to a database, etc.
• Performance testing - term often means test "is used stress" and "End". Ideally test "performance" (and any other "standard" test) is in the documentation or quality assurance requirements or test plans.
• Usability testing - testing "friendliness". This is of course subjective and depends on the target end users or customers. user interviews, surveys, video recording of user sessions and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
• Install / Uninstall - testing of full, partial, or upgrade install / uninstall process.
• recovery testing - testing the effectiveness of a system recovers from crashes hardware failures or other catastrophic problems.
• Security - Controls how the system protects against access to unauthorized internal or external, intentional damage, etc., may require sophisticated control technology.
• compatibility testing - testing how software performs in a specific material / software / operating system / network / environment, etc..
• acceptance tests to determine - if the software stisfactory to a client.
• Comparison Test - comparing software weaknesses and strengths of competing products.
• Consideration alpha - an application for development is almost complete, minor design changes can still be made as a result of this review. Generally, by end users or others, not made by testers or developers.
• Beta testing - testing when development and testing are essentially completed and final bugs and problems need to be found before the final version. Generally, by end-users or others, carried out not by programmers or testers.
What are the 5 common problems in software development?
• poor requirements - if requirements clear, incomplete, too general or not verifiable, there will be problems.
• The realistic schedule - if too much work is crammed into too little time, problems are inevitable.
• inadequate testing - no one will know if the program is all good until the customer complains or systems crash is.
• featuritis - Access to a bunch of new features after development is underway, very often.
• misunderstandings - if developers do not know what is needed, or customers have unrealistic expectations, problems are guaranteed.
What are the 5 common solutions to problems of software development?
• solid requirements - clear, complete, detailed, coherent, attainable, testable requirements that are accepted by all players. Use prototypes to help define the requirements.
• realistic schedules - allow time for planning, design, testing, bug fixing, re-testing, modifications and documentation, staff should be able to complete the project without burning.
• adequate testing - start early detection, a new test after fixes or changes, plan enough time for testing and bug fixes.
• Make sure you have as much as possible to the original requirements - ready to defend against changes and additions once development has begun, and be prepared to explain the consequences. If changes are necessary, they must be properly in relation to changes in timing of expression. If possible, use rapid prototyping in the design phase so that customers can see what is expected. This will provide a superior level of comfort with their decisions and minimize the requirements of any subsequent changes.
• communication - require inspections and walkthroughs, as appropriate; make extensive use of communication in the Tools group - e-mail, groupware, network tools and bug tracking tools for managing change , intranet capabilities, etc., to ensure that documentation is available and updated - preferably electronic, not paper, promote teamwork and cooperation; use early prototypes, so that expectations customers are clarified.
What is software 'quality'?
quality software is pretty accurate, delivered on time and on budget, meets the requirements or expectations and is easy to maintain. However, quality is a subjective term. It refers to the "customer" and depend on their influence in the overall scheme of things. A wide angle view of the customer "includes a software development project could end users, testers, customer acceptance, management of customer contract officers, management development organization / accountants / testers / Seller future software maintenance engineers, stockholders, magazine columnists, etc. Each type of "clients" are their own views on the 'quality' - have records could define quality in terms of profits, while defining quality of end user can use and accurate.
What "code of good"?
Code of good works is the code that is correct, and is readable and maintainable. Some organizations have coding 'standards' that all developers want to stay competitive, but everyone has different ideas about what is best, or This is too much or too little regulation. In addition, there are various theories and metrics such as McCabe complexity metrics. It is recalled that the excessive use of standards and rules can stifle creativity and productivity are maintained. tools "peer review" buddy checks' code analysis, etc., can be used to identify problems and enforce standards.
For C and C + + programming, here are some typical ideas to consider establishing rules and standards, which may or may not apply to a particular situation:
• reduce or eliminate the use of global variables.
• Do use descriptive function and method names - two upper and lowercase letters, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters is not out of line), in accordance naming conventions.
• Use descriptive variable names to use - two uppercase and lowercase letters, avoid abbreviations, use as many characters as necessary to be adequately descriptive (use of more than 20 characters are not out of line), as naming conventions .
• The function and method sizes should be minimized, and less than 100 lines of code is correct, less than 50 lines is preferable.
• function descriptions should be clearly stated in previous comments by a function code.
• organize code for readability.
• the use of space generously - vertically and horizintally
• Each line of code should contain 70 characters max.
• declaration of a code per line.
• the type of programming should be compatible thought a program (eg the use of brackets, indentations, naming conventions, etc.)
• Add comments, err on the side of too much rather than too few observations, a common rule of thumb is that there are at least as many lines of comments (including header blocks) and line code.
• no matter how small, should be a demand for documentation for the overall program function and flow (even a few paragraphs is better than nothing), or possibly an organization separate and detailed program documentation.
• extensive use of error-handling procedures and the registration status and error messages.
• For C + +, to minimize complexity and increase maintainability avoid hierarchies at multiple levels of inheritance of the class (depending on the size and complexity of the application). Limit the use of multiple inheritance, and minimize use of operator overloading (note that the Java programming language eliminates multiple inheritance and operator overloading.)
• For C + +, keep class method of small, less than 50 lines of code per method is preferable.
• For C + +, make liberal use of exception handlers
What is "good design"?
'Design' could refer to many things, but often refers to "functional design" or "regime". Good internal design is indicated by software code whose overall structure is clear, understandable, easily modifiable, maintainable and is solid with error handling and logging sufficient condition of the function and works correctly when implemented. Good functional design is an application whose functionality for customers and end-user requirements will be traced s poster.
For programs that have a user interface, it is often a good idea to think that the end users in knowledge and little computer can not read a user manual or even online help, some common rules , periods of thumb:
• The program should, so that at least surprises the user to act
• There must always be clear what the user can do next and how to exit
• The program should not allow the user to do something stupid without warning.
What is SEI? CMM? ISO? IEEE? ANSI? T Help?
• SEI = 'Software Engineering Institute, initiated by Carnegie-Mellon, the U.S. Department of Defense to help improve software development process.
• CMM = 'Capability Maturity Model, developed by the SEI. There is a model of 5 levels of the organizational unit "maturity" that the determination of the effectiveness in providing high quality software. It is geared to large organizations such as the large defense contractors in the United States. But most of the quality assurance processes are appropriate for any organization, and when it can reasonably used may be useful. Organizations may submit comments CMM assessments maintained by qualified auditors.
Level 1 - chaos, panic and heroism marked periodic
The efforts of people needed for success
complete projects. Few processes in place;
Success may not be reproducible.
Level 2 - Monitoring software projects, requirements management,
realistic planning and configuration management
Processes are in place, successful practices
be repeated.
Level 3 - standard software development and maintenance
Integrated processes within an organization;
software engineering process group is in place
control software processes and training programs
be used to ensure understanding and compliance.
Measures level 4 - are used to track productivity, processes,
and products. Project performance is predictable,
and the quality is always high.
Level 5 - is the emphasis on process improvement continouous. The
Impact of new procedures and technologies
predicted and effectively implemented if necessary.
(Perspective on CMM ratings: During 1992-1996 533 organizations
were evaluated. Of these, 62% at level 1, 23% were assessed at 2,
13% 3 2% to 4% and 0.4 to 5 The average size of
Was 100 organizations software engineering maintenance personnel /;
31% of organizations were U.S. federal contractors. Those
Level 1 assesses the most problematic area of the key process was
in quality assurance software.)