SQA problem highlights

xiaoxiao2021-03-06  55

What is the "quality" of software?

High quality software is appropriate, no error, can deliver demand / or expectations in time in the budget, and is maintenanceable. Therefore, quality is a subjective term. It depends on who is customer and customer impact on the project plan. For a software development project, the "customer" is wide, including end users, customers accepted by customers, officials / accounting / testers / salespersons related to customer contracts , Future software maintenance engineers, stock holders, magazine column reporters, and so on. Every customer has its own tendency to "quality" - the accounting department judgment quality will consider from its income, and end users pay attention to the friendly user interface and there is no error.

What is "Software Quality Assurance"?

Software quality assurance involves the entire software development process, including monitoring and improvement processes, ensuring that any approved standards and steps are followed, and the problem is discovered and processed. In essence, software quality assurance is "prevention".

What is "software test"?

Software testing is the result of operating and evaluating operations on system or application under controlled conditions. That is, if the user faces the application's A interface, do C operation when using hardware B, then D results should appear. The so-called controlled conditions should include normal conditions and abnormal conditions. The incorrect occurrence should be intentionally caused, that is, things do not appear when there should be anything or there should be no appearance. In essence, software testing is "detection".

Each organization has different practices in how to be responsible for quality assurance and software testing. Sometimes, a group or individual is responsible. A common approach is that the project team includes testers and developers, they work together, and the project leader is always responsible for quality assurance. This depends on the size of the mechanism and the business structure of the mechanism.

Why will the software have problems?

1. AC error or no communication - pointing out what application should do and should not do anything (for user needs for the application).

2. The complexity of the software - the current application is very complicated, so that in the current software development environment, lack of experience cannot understand it. Window type interface, customer / server, and distributed applications, data communication, huge relational databases, and application software size, all of which causes complexity of software / systems to grow exponentially. Unless carefully designed, use the target-oriented technique will make the project more complicated rather than simple.

3. Programming error - Like all people, programmers will make mistakes.

4. Demand changes - customers I am afraid I don't understand the impact of changing demand, maybe I don't need to change - will lead to redesign, re-renovation project schedule, affecting other projects, and completed work needs to be done or give up , The impact on hardware demand, etc. If there are many small changes or a large change in the project, known or unknown related issues in the project may affect and lead to problems. Moreover, constant changes will also increase the complexity of the software, which may result in errors. This will affect the enthusiasm of technicians. In some fast-changing business environments, the impact of continuous change needs is fatal. In this case, managers must know its risk. Quality assurance and test engineers must adapt to this and arrange sustained extensive tests to overcome the problems that inevitably produce.

5. Time pressure - Because there are many speculation ingredients, the progress of the software development project is difficult to arrange ideals. When the last period is coming, the pressure is gradually increased, and the error is generated.

6. Concentricity - people usually like this:

a. "No problem"

b. "Simple"

c. "I can do it for a few hours"

d. "Modifying the old code should be simple things"

Not saying:

a. "That new work is complicated, which may result in many errors."

b. "We are not sure, but we will try our best."

c. "I can't estimate how long it takes before practical check." D. "We can't estimate how old code is". "

If there are too many "no problems", you will inevitably have problems.

7. The code of the code is poor - bad maintenance and modification, or a very poor document, it will also cause errors. In many units, managers do not encourage programmers to write code clear and easy to read. In fact, it is exactly the opposite, they mainly pay attention to the coding as soon as possible, think that if others do not understand the code, it will be safer ("hard-written code is inevitable").

8. Software development tools - visual tools, class libraries, compilers, editing tools, etc., will introduce themselves, or generate a worse document, resulting in failure.

What important computer systems have failed due to software defects?

1. In October 1999, a $ 12.5 billion NASA Mars meteorological satellite disappeared, which is believed to be due to a simple data conversion error. People find satellite software, some data use English, they should be converted into a metric. This satellite should act as a communication forwarder of Mars in another task, and that task has failed. The reason is unknown. Some inspection teams have been made to identify errors that lead to operational steps that have false unrecognized operations.

2. In August 1999, in a large commercial high-speed data network, the software's defects affected 70,000 commercial users, and time was up to eight days. Among the affected customers, there is the largest long-term trading electronic trade system in the United States, which is up to one week.

3. In April 1999, a software failure caused a failure of a 150 million US military satellite. This is the most expensive non-human accident that occurs in the corner of the Kazzrah. This failure is one of the latest a series of launch failures, which has triggered the reassessment of the military and industry to spatial launch plans, including software integration and testing processes. Congress also requires negligence to hold a hearing.

4. In March 1999, a small town in Illinois received an amount of $ 7 million in the month's electric billing. This amount is approximately 700 times. Its occurrence is due to the newly bought software in the local power company in the monster.

5. At the beginning of 1999, a major computer game company recovered all popular new software products due to the fact that the software was wrong. Because the product was issued before preparing it, the company did an apology.

6. According to the National News report, in February 1999, a computer system of a major online stock trading service company in the United States had multiple faults in trading hours. The reason is that there is a problem in the software upgraded to accelerate the transaction speed.

7. In April 1998, an important data communication network in the United States has a 24-hour failure, making most US credit card management system transactions have been affected. Some big banks, retailers, and government data systems are also affected. Finally, it is also caused by software failure.

8. In January 1998, a news report said that an important communication company in the United States discovered software issues. Leading to 40,000 users have failed to charge for a long-distance telephone bill for one month. The problem has not been discovered until the user comes to ask their bills.

9. In November 1997, the company's stock value fell 60% due to a report of a major health industry company's computer accounting system. The problem is the conversion of a large database and insufficient software testing. The report said that more than $ 100 million in income was taken off, and the administration of the government's fines made a fine of several million dollars.

10. In August 1997, a chain retailer sued a transaction system vendor (not a credit card company) because its software could not handle the 2000 credit card business.

11. According to reports, in August 1997, a new website of a major consumer credit card report was just two days, as a software problem was closed. This new site allows the visitor to access directly, only to charge very little fee, you can query your credit card usage. However, the initial users see are the bills of others, not their own. Angry customers have made this matter throughout the country. The final problem was concatenated as: "... Unpredictable customer needs, plus software problems that cause the file to send the file to the wrong computer." 12. In November 1996, the newspaper reported that the software fault made the US RBOC 411 phone systems do not work properly in most of the day. In 2000, most of the number can only use the phone number book, but you can't use a database of 1,300,000 records. There is a problem with newly modified software, and problems have been installed in the production system and backup system. The spokesperson of the software operator said: "The integrity of the software is unbleached, it is just a human error."

13. According to newspaper reports, in May 1996, an important US Bank's 823 customers were recorded in $ 924,844,208.32 in the loan. The US Bank of America states that this is the largest of such errors in the history of banking. Bank spokesperson said: "The program error has been changed, and all funds are recovered."

14. In 1993, software errors in the early early warning monitoring system of the Soviet Union were almost triggered. The software is to filter out the sun reflected by the top of the cloud, so as not to be received by the satellite, it is misadaled to be missile. But the software failed to do this. The disaster can be avoided, because it is said that a Soviet officer "the viscera has a strange feeling", so he believes that the so-called missile attack is an incident alarm. The code of the filtering software was later rewritten.

What is five common problems during the software development?

1. Poor requirements - demand is unclear, incomplete, too summarized, or not testing, will cause problems.

2. Unrealistic schedules (unrealistic schedule), if you have a lot of things in a very short time, there is an error in an error.

3. Inadequate Testing - can only determine the quality of the system quality according to customer opinions or system crashes.

4. Everbrerepass Function (featurection) - demand many new features during development. This is a common problem.

5. MisCommunication - If the developer does not understand the customer's requirements, or the customer will cause errors by improper expectations.

There are 5 solutions for problems during software development.

1. Solid Requirements - There should be a clear, complete, detailed, overall, achievable requirement of all parties. To help determine the needs, you can use the model (prototypes).

2. Realistic Schedules - for planning, design, testing, incomparacy, re-test, change, and documentation, have enough time. The project should not be used to complete the project.

3. Adequate Testing - Start test as soon as possible; after each change or change, you should retest. There is enough time to leave a test and change in the project plan.

4. Adhere to the initial demand (Stick to Initial Requirements As Much As Possible) - Once the development work begins, you should prepare to prevent modification requirements and new features. To illustrate the consequences of this. If you have to change, you must have a corresponding reflection on the timeline. If possible, use a fast model in the design phase to make our customers understand what will be got. This will make them have a high confidence in their demand, reducing future changes.

5. Communication - pre-arrangement and inspection in the appropriate timing; make full use of group communication tools, groupware, network fault tracking tools, change management tools, and the Internet features. To ensure that the file is available and the latest. Preferred electronic documentation, avoid paper media document; long-distance joint operations and collaboration; use models as early as possible, making customers' expectations clear. What is "good code"?

"Good code" should work, there should be no mistake, readability and maintainability. Some institutions have code "Standards" for all developers, but everyone has different views on "what is the best" and "rules too much or too little". There are also many theories and methods, such as McCabe complexity metrics. This approach makes people over-considering standards and rules to limit yield and creativity. Tools such as code analysis used in "PEER Reviews" and "Partner Checks" can be used to prosecute errors and implementations.

For C and C code, there are some typical ideas when establishing rules / standards. But not necessarily suitable for everything:

1. Reduce or exclude the use of global variables.

2. Using the illustrative functions and method names - use large, lowercase characters, avoid using abbreviations, using the description of the description of the requirements (using more than 20 characters and does not cause ultrafire). Name is consistent with the function.

3. Using the description of the variable name - use large, lowercase characters, avoid using abbreviations, use the description text that meets the requirements (using more than 20 characters). Name is consistent with the function.

4. The size of the functions and methods should be as small as possible - preferably no more than 100 lines, less than 50 lines.

5. Description text in the previous function in front of the function code should be clear.

6. Writing code should be read.

7. Leave enough space in the horizontal direction and vertical direction

8. The number of code characters per line is not more than 70

9. Each statement accounts for 1 line

10. The code style in a program should be consistent (in terms of brackets, shrinkures, and naming methods)

11. Comment content Nice Not least, usually the number of comment lines (including the start part) should not be less than the number of code lines

12. Regardless of how small the application, there should be documentation, including outlines and flow charts of the program function (even if only a few lines are better than not good). If possible, it is best to have a separate flowchart and a detailed program document.

13. Do most likely to use the error handling process and record the status and errors.

14. When using C , in order to reduce complexity and improve maintainability, it should avoid excessive number of layers of inheritance of classes (depending on the size and complexity of the application). In addition to minimizing the levels of inheritance, you should use a minimize use of operator overloading. Using the Java language can eliminate multi-level inheritance and operator overload.

15. When using C , the method of keeping the class should not be too large, for each type of method, the code line does not exceed 50 behavior.

16. When using C , it should be freedom for exception processing (Make Liberal Use of Exception Handlers)

What is "good design"?

"Design" means a lot of things, but often refers to "Functional Design" and "Internal Design).

Good "internal design" is based on the software code (by software code), the overall structure of the code is clear, easy to understand, easy to modify, and easy to maintain; it should be secure, including sufficient error handling ability and status record Ability; should work properly at runtime. A good "functional design" should be manifested in the application (by application), which is functionally specified by the customer or end user.

If there is a user interface in the program, it is best to assume that the end user has only a small number of computers, and does not read the user manual, and even read online help information. Rules that often need to follow include:

1. The program does not have a surprise in the user's operation.

2. You should always clear what you should do next and how to exit it.

3. The program should not allow users to make stupid things before they have not been warned.

Why is it difficult to make managers to treat quality assurance?

Solving the problem is a high visibility process, and prevention issues are a low visibility process. This can be illustrated by an ancient fable: an Apricoped Lindin family in ancient China has a person's medical skills, employed in a big money. Someone asked him his family's highest medical skill, he replied:

"I am good at dealing with patients and dying people, I use cultural medicine and impressive treatment, sometimes I have a patient, so my reputation is widely circulated in the middle of the rich."

"My brother is giving people sick when the disease is just taken, and his high-quality medical skills are widely circulated in the local farmers and neighbors."

"My brother can discover its seedlings before the end of the disease, and take it. But his name is not known to the world outside our hometown."

How to introduce new software quality control processes into existing institutions?

1. Mainly on the size of the body and the risks involved. For large institutions and high-risk projects (for life and fees), we need to strictly manage procurement and formal quality assurance processes.

2. The lower the risk, the lower the need to manage the organization's procurement and quality assurance process. The steps and time to realize the quality assurance process should be balanced with the production to avoid bureaucratic intervention.

3. For small projects, it is sufficient to adopt more specialized processes. This depends on the type of customer and project. A large amount is depends on the responsible person or manager of the development team, feedback to the developers, and ensuring appropriate information between customers, managers, developers and testers.

4. In all cases, the most important thing is the demand management process, the purpose is to ensure a clear, complete and testable demand manual.

What is Verification and Validation?

1. Verification involves reviews and meetings to assess documents, plans, code, requirements, and instructions. You can do it by checking tables, investigations, rehearsals, and check.

2. Evaluation (Validation) refers to the actual test after the inspection is completed. The terms "IV" and "V" represent verification and evaluation respectively.

What is "pre-rulating" (WALKTHROUGH)?

"Pre-rulating" is an informal meeting for evaluation and information exchange. Usually don't need to be prepared, just a little need.

What is an "inspection"?

Check that than the pre-row, 3-8 people usually participate in meetings, including an arbitrator (Moderator), reader (can be an author or any commentator), a recorder as a record. Typical inspection objects are a file, such as a demand instructions or test programs, which are for discovering problems and looking for omissions, rather than going to anything actually modified. Participants of the meeting should be prepared and should read the document, most of the problems will be discovered during the preparation. The results of the examination should be written in a written report. It is difficult and hard work to check the inspection, but it is the most useful way to ensure quality. During the inspection, the most experienced employees' role is the same as the 'Big Brother', their skills may not be conspicuous, but it is the most important for any software development institution, because preventing mistakes are more expensive than discovery errors Aspect is more effective. What test should I consider?

1. Black Box Testing - Do not consider internal design and code, test according to requirements and functions.

2. White box testing - Test according to the internal logic of the code of the application, tested according to the statement, branch, paths, and conditions of the code.

3. Unit testing - minimum range test, tested for specific functions and code modules. Since the details of the design and code need to be understood can be made, the component test is generally made by the programmer, not by the tester. Part test is not easy to use unless the structure of the application is well design, and the code is also written clearly. Maybe develop test drive modules or test tools.

4. Incremental integrated test - continuous testing process, each additional new functional module is tested. This requires that one application software is relatively independent before final completion, or has developed test driver software as needed. This test can be performed by a programmer or tester.

5. Integration Testing - combining the various components of the application software to check whether each functional module works normally. "Part" can be a code module, a separate application, or a client / server application in the network. This test is especially suitable for client / server environment and distributed systems.

6. Functional Testing - Black box test for a functional module of an application. This test should be carried out by the tester. But this does not mean that programmers do not perform code check before launching software. (This principle applies to all test phases.)

7. System Test - Test for all requirements, including all components in the system.

8. End-to-end testing - similar to the system test, but the test range is more "macro". Imitate the actual application environment and test the entire application software. For example, whether interacting with the database, using network communication, whether interactions between other hardware, applications, and systems meets the requirements.

9. Sanity Testing - is a typical initial test. It is determined whether a new software version is operating normally, whether it is worth further testing. For example, if a new software disrupts the system every 5 minutes, greatly reducing the speed of the system, or destroying the database, then such software is not "sound", it is not worth making further testing in current state.

10. Regression Testing - Since the software has been organized, modified, or there is a change in its environment, it is repeatedly tested. It is difficult to say how many regression tests are needed, especially in the final stage of the development cycle. This test is carried out, especially suitable for use using automated test tools.

11. Acceptance Testing - Tests for end users or customers based on the instructions. Or use the end user / customer for a limited time to use.

12. Load Testing - Test the application under large load conditions. For example, test a website in different load conditions to determine what circumstances in which the system response speed is lowered or a fault. 13. Stress Testing - can often replace each other with "load test" or "performance test". This test is used to check the system under the following conditions: under abnormal giant load, some actions and input a large number of repetitions, input large numbers, a very complex query for the database, and so on.

14. Performance Testing - can often replace each other with "pressure test" or "load test". Ideally "Performance Test" (also including any other type of test) should be stipulated in the documentation of the quality assurance and test plan.

15. USAbility Testing ─ is tested for "user-friendly" features. This is a subjective feeling depends on the end user or customer. Users can be visible, check, recorded, or other technologies can be used. Programmers and testers usually do not participate in the availability test.

16. Install / Uninstall Test - Test the installation / uninstall (including all, partial, upgrade operations).

17. Recovery Testing - Re-recover the system after the system crashes, hardware failures, or other disasters.

18. Security Testing ─ Test system in cope with unauthorized internal / external access, deliberate damage. This requires precision complex test technology.

19. Compatability Testing - Test software performance in a special hardware / software / operating system / network environment.

20. ACCEPTANCE TESTING - Whether the customer is satisfied with the software.

21. Comparison Testing - compared to competitive products to find weaknesses and advantages.

22. Alpha Testing - Tests that developed an application that is about to complete. Smaller design modifications are also allowed. This test is usually performed by end users or others, not by programmers and testers.

23. Beta Testing - When the development and testing have been basically completed, it is necessary to find a test for problems before formal issuance. This test is usually performed by end users or others, not by programmers and testers.

What is SEI CMM, ISO, IEEE, ANSI? Are they useful?

1. SEI = "Software Engineering Institute", is located in Carnegie Mellon University, which is created by the US Department of Defense for improving software development processes.

2. CMM = "Capability Maturity Model" is developed by SEI. It is a grade 5, which describes the model of the degree of structure, with it to illustrate the performance of the software delivered. It applies to large institutions, such as contractors of the US Department of Defense. Therefore, many of the quality control processes it involve apply to any organization, and will benefit from reasonably using it reasonably. An institutional assessment of an authority review institution can obtain a CMM level (CMM Ratings).

a. 1 level -

Performance is confusing, regular emergency measures, need to have a great effort to complete the project. There are very few appropriate processes, success is not repetitive.

b. Level 2-

Software project tracking, demand management, rational plan, and structural management processes properly, success can be repeated.

C. Level 3-

Standard software development and maintenance processing processes are fully implemented throughout the organization. There is a software engineering handling group to solid software process, opening training courses to ensure understanding and consistency.

D. 4-

Tracking production, processing and product, the characteristics of the project are foreseeable and very attached to quality. e. 5--

Pay attention to the continuous improvement process. The new process and new technologies are predictable, and they can increase efficiency when needed.

(About CMM Level: Between 1992-1996, a total of 533 institutions have been assessing. 62% of them belong to level 1, 23% is 2, 13% is 3, 2% is 4, 0.4% is 5 Level. There are 100 engineers / maintenance personnel; 31% of the agency is the contractor of the US Department of Defense. In the organization of CMM levels, there is a key treatment area in software quality assurance.)

3. ISO = "International Organization for Standards" - ISO9001, 9002, and 9003 are standards for quality systems, evaluated by external assessors, suitable for many types of production and manufacturing agencies, not just Suitable for software development. The most complicated 9001 is widely used in software development agencies. 9001 covers documents, design, development, production, testing, installation, services, and other processes. ISO 9000-3 (not 9003) is a guideline when ISO 9001 is used in software development agencies. The US version of the ISO 9000 series standard is identical to the international version, known as the ANSI / ASQ Q9000 series. The US version can be purchased directly from the US Quality Association (ASQ - American Society for Quality) or ANSI. An agency wants to obtain ISO 9001 certification, requiring third-party evaluations for assessment, the validity period of the certification is 3 years, and the recovery will be required. Note: The ISO 9000 does not indicate that the product quality is necessary, it just means that the process specified in the document is followed.

4. IEEE = "Institute of Electrical and Electronics Engineers", except for other things, the following criteria have also been developed:

a. IEEE / ANSI STANDARD 829 - Software Test Document Standard

b. IEEE / ANSI STANDARD 1008 - Unit Testing standard

c. IEEE / ANSI STANDARD 730 - Software Quality Assurance Plan

And some other standards.

1. ANSI = "American National Standards Institute" ── is the main industrial standard entity in the United States; with the IEEE and ASQ (American Society for Quality - US Quality Association), some are published Standard.

2. Except for CMM or ISO 9000, other software development process assessments include: Spice, Trillium, Tickit. And bootstrap.

What is "Software Life CYCLE?

The lifecycle begins with the application from receiving the application, to the software no longer used. It has the following aspects: initial concept, demand analysis, function design, internal design, document plan, test plan, document preparation, integration, testing, maintenance, upgrade, retest, step-out, etc. .

Do you easier test using an automated test tool?

Possible. For small projects, it is not necessarily worthwhile because it takes time during learning and execution. For large projects, or for projects that have long duration, it is worth it.

2. Common automated test tools are "record / playback) types. For example, automatic test tool allows testers to click on all menu selections in a graphical user interface of an application, buttons, etc., and record the operation and results. Typical "Record" uses a character type of a character type of test tool. If there is a new button being added, or some basic code is modified, only the 'redo' recorded operation can be tested again. Then compare the results of the operation, you can check the modified effect. The problem with this test method is: If you continue to make new changes in the system test, "Record" must also change accordingly, and the continuous upgrade of the script is very time consuming. In addition, it is not easy for explanation of operation results (screens, data, logs, etc.). Note: There are also tools for interface-based 'record / redo' types suitable for all platforms.

3. Other automatic test tools are:

a. Code analysis - Monitor code complexity, insist on standards, and so on.

b. Overlay Analysis - This tool indicates which code has been tested, can be overwritten for the code statement, conditional coverage, and path coverage.

c. Storage analysis - such as boundary testing and leak check (Bounds-Checkers and Leak Detectors)

d. Load / Performance Test Tools - Check if the link is valid, whether the HTML code is correct, check the work of the client and server, whether the interaction between the web site is safe.

e. Web test tools - check if the link is valid, whether the HTML code is correct, check the work of the client and server, whether the interaction between the web site is safe.

f. Other Tools - for test case management, error reporting, and structure management.

How to create a good test engineer?

A good test engineer should have the ability of "Test to Break 'Attitude" and the ability to see questions in customer identity, he is eager to high quality and pay attention to details. When dealing with developers, it is useful to maintain the maintenance cooperation relationship. It is also very useful to communicate with technicians (developers) and non-technical (customers, managers). The past software development experience of the tester is very useful for in-depth understanding of the software development process. This experience also allows testers to understand developers' views and walk less when learning automatic testing tools. In an application, it is necessary to determine where its high-risk part is also necessary; in the case of limited time, this helps to determine the focus of the test.

How to create a good software quality assurance engineer?

Some good quality of software testers is also useful for quality assurance engineers. In addition, quality assurance engineers must be able to understand how the entire software development process is understood to understand how the development process adapts to business activities and goals of agency. Communication skills and understanding of various things is very important. In a mechanical, it is necessary to be patient and communicative means when the quality assurance process is implemented. When procuratorate and review, it is very important to find problems and find missions.

How to create a good software quality or test management personnel?

A good quality assurance, test, or quality assurance / test (integrated) management personnel:

Familiar with software development process

2. Regardless of how the situation is unfavorable, you can keep the team's enthusiasm and improve your work atmosphere (you can avoid problems)

3. Can promote teamwork to increase production

4. Can promote competition between software developers, testers, and quality assurance engineers

5. There is a diplomatic skill necessary to improve the QA process

6. Can withstand the pressure, when there is a problem with the quality or in the absence of the QA process, dare to say "no"

7. Servers with the skills of others, good at hiring and maintaining capabilities

8. Exchange with personnel, engineers, managers, and customers who can understand technical or non-technical

9. What is the role of the document that can be hosted by the meeting and maintaining the issuance of the issue?

Enpride key role. The document can be electronically, not necessarily the paper medium. The implementation of QA must be documentation to ensure that its process is repetitive. Instructions, design, commercial regulations, survey reports, structures, code changes, test plans, test cases, error reports, user manuals, etc. should form a document. The ideal thing is that there is a document system that makes it easier to find files and can find the relevant documentation for a message. If possible, the system should also be able to manage the changes of the document.

How to treat "demand"?

In a complex software system, if the relevant demand instructions are poor, the emergence of problems or faults is no doubt. Detailed demand describes the external sensory function and characteristics of an application. Demand should be clear, complete, quite detailed, or can be implemented, and is tested. An unparalleled demand will not be "friendly" for users (too subjective). And a testable demand should be similar to "The user must first enter a pre-set password, and then access the application software." It is not easy to use a method to be effective, and the content of the organization needs is not easy. Different methods can be selected in different items. There are many books to this task have introduced many different ways.

In the process of forming a demand, you should carefully treat important customers related to the project. "Customers" should include internal customers and external customers, should also include end users, customer acceptors, officials, salespersons, and more related to customer contracts. Anyone, if his expectation has not been implemented, it is possible to "derail", then, as long as it is possible, this kind of person should be included within "customers". The structure of the demand instructions is very important. In a demand file, the ideal narrative method should be composed of "product should be ...". "Design Notes" should not be mixed with "demand"; the design manual is based on the demand manual.

In some institutions, demand finally specifies high-level project plan, design documentation in design documents, and details of different levels of documents. Regardless of the name, the tester needs some type of detailed demand document to be able to properly plan and perform tests. If there is no such document, the tester cannot clearly indicate whether the function of the application software is normal.

What software tests include?

Here are some steps that need to be considered:

1. Get demand, function design, internal design, and other necessary documents

2. Get budget and progress requirements

3. Determine the personnel related to the project and their responsibilities, the requirements for the report, the required standards, such as the issuance process, change process, etc.)

4. Determine the high risk range of the application, establish a priority, and determine the scope and limitations involved in the test.

5. Determine the steps and methods of the test - parts, integration, function, system, load, usability and other tests

6. Determine the requirements for the test environment (hardware, software, communication, etc.)

7. Determine the required test equipment, including recording / playback tool, overlay analysis, test tracking, problem / error tracking, etc.

8. Determine the requirements for the input data of the test

9. Assign a task and a person in charge, and the required labor

10. Establish a rough timetable, deadline, and milestones

11. Determine the category of the input environment, the boundary value analysis, error category

12. Prepare test plan documents and make necessary reviews for plans

13. Prepare white box test cases

14. Review / survey / plan for test cases

15. Prepare the test environment and test utensils, get the required user manual / reference file / structural guide / installation guide, establish a test tracking process, establish logs and files, establish or get the test input data

16. Get and install the software version

17. Test

18. Evaluation and report results

19. Track problems / errors, and solve it

20. If necessary, re-test

21. Maintain and modify test plans, test cases, test environments, and test utensils throughout the life cycle

What is "test plan"?

A software project's test plan is a document, which illustrates the goals, scope, methods, and focus during software testing. During the preparation of the test plan, you want to consider all verification works necessary before accepting a software product. Complete documents will help people outside the test group understand "why" and "how to" verify the product. The document should be very complete, but pay attention to not too complicated, and people outside the test group don't want to read it. Here are some contents that should be included in the test plan, depending on specific items: 1. Title

2. Software logo, including version number

3. Document modification history, including the author, date, approvers

4. Content catalog

5. Use of documents, readers facing

6. Test goals

7. Software product profile

8. About file list, such as demand, design document, other test plan, etc.

9. Relevant standards and laws required

10. Have tracking capabilities

11. The identification of the agreement name and protocol

12. All software project organizations and information / responsibility required for person / contact

13. Test organizations and information / responsibility required for person / contact

14. Assumption and related (Assumptions and Dependencies)

15. Project risk analysis

16. Test priority and focus

17. Scope and restrictions

18. Test Outline - a document related to test methods, involving test type, feature, function, process, system, module, etc.

19. Data Enter Device Type Outline - Boundary Value Analysis, Error Categories

20. Test environment - hardware, operating system, other software, data structure, interface between other systems

21. Set the test environment and structure

22. Set the required test data

23. Set the required database

24. The outline of the system log / error log / other content, and tools, such as screen acquisition software to help description and reporting errors

25. Discussing on a dedicated software and hardware tools used to track errors or source code in the test

26. Test Automation - Judgment and Review

27. Test tools used, including version, path, etc.

28. Test script / test code maintenance process and version control

29. Problem tracking and solving - tools and processes

30. Test methods used in the project

31. Required reports and delivery of deliverables

32. Conditions of entering and exiting software

33. Initial Sanity Testing Period and criteria

34. Conditions for testing and restarting

35. Personnel Distribution

36. The needs of personnel pre-training

37. Test location

38. The utilization and purpose, responsibilities of external testing institutions, can be delivered, contact, and cooperation

39. All people, categories, security, and licenses

40. Open Issues

41. Appendix - Glossary, abbreviation, etc.

What is "test case"?

The test case is a document that describes an input, reaction, or a corresponding expected response to it to determine if the application software is working properly. Test cases should include test identity, name, target, test condition / setting, input data requirements, steps, and expected results.

Note: The process of developing a test case for application software requires a comprehensive and deeply considering the operation of the software, so it helps to discover problems in its needs or design. Therefore, if possible, prepare test cases as soon as possible.

What should I do after discovering errors?

The error should be notified and assigned to the developer for correction. After the problem is resolved, the modified part should be tested. And the regression test should be carried out to check whether the modified part will lead to new problems in other parts. If a problem tracking system is used, these processes can be shortened. There are many problems in the commercial market to track / manage software tools available.

Here are some contents that should be considered during the problem tracking process: 1. Monitor the complete information about the error so that developers can understand errors, know how the error works. If necessary, you can reproduce the error.

2. Error identity (number, identification code, etc.)

3. The current situation of the error (ie, "new", etc.)

4. Application software name or identifier and version

5. When the error occurs: function, module, feature, target, screen, etc.

6. Environmental instructions, systems, platforms, and hardware instructions

7. Test case name / number / identifier

8. Error description of a line

9. Detailed error description

10. If the resulting error is not within the test case, or the developer is not easy to understand the test case / test script / test tool, it is necessary to describe the operation steps that make the error reproduction.

11. Description / Data / News / Messages / Messages / Wait

12. File Reference / Error Message / Log file reference / screen situation / test tool log, they help discover problems

13. The degree of problem is serious (usually 5 or from "severe" to "low" classification method)

14. Is the error reproduces?

15. The name of the tester

16. Test date

17. Date of reporting a wrong

18. The name of the developer / development group / institution related to the question

19. Causes describing the problem

20. Describe the error

21. Modified code segment / file / module / category / method

22. Modify date

23. Version of application with modified content

24. Test staff responsible for tested

25. Date of tested

26. Results of the test

27. Regression test demand

28. Responsible for the regression test

29. Results of the regression test

At all stages, the report of the problem tracking process should be given to the relevant person. For example, the tester should know when to be tested, and the developer should know when the error finds and knows where to find the relevant information, and the management personnel should have the ability to generate report / summary.

What is "Structure Management"?

Structure management includes control, positioning, and a full process of tracking. It involves code, demand, problem, change request, design, tool / compiler / library / path, change mode, and who will change.

What if there are too many errors in the software, what should I do if I don't have test?

In this case, the tester is best to study the report, the wrong or blocking problem, and put the attention in the most serious mistake. Since such problems affect progress, it reflects the deep problems in software development (for example, component testing or integrated testing, poor design, unautreating establishment and release process, etc.), so it should be notified Managers and provide them with some certificates.

When is it going to test?

Hard to say. Many large applications are very complicated, and are used in interdependent environments, and complete testing is not possible. Generally determined when to stop testing according to the following factors:

1. Deadline (Deadline, Deadline Date, etc.)

2. A certain proportion of test cases have been completed

3. Test budget

4. Code / Function / Demand has reached the specified level

5. Errors are below a certain proportion

6. End of beta or α test period

If there is not enough time, what should I do if I can't make sufficient testing?

Use risk analysis to determine the focus of the test.

Since all possible tests are rarely processed (including all possible events, all relevant things, all relevant things, all possible things), the use of risk analysis is appropriate for most software development projects. . This requires judgment skills, common sense, feelings and experience. If there is a legitimate reason, a formal approach can also be used. Need to consider the following factors:

1. Which function is most important for the use of the project?

2. Which function is most obvious? 3. Which function is the most impact?

4. Which function is most useful to users?

5. Which part of the application is most important to the customer?

6. Which part of the application can be tested first during the development process?

7. Which part of the code is the most complicated, easy to cause an error?

8. Which part of the app is developed in an urgent or panic?

9. Which part of the program is similar to the part of the problem in the past project?

10. Which part of the program is similar to the part of the past items that require a lot of maintenance?

11. The parts of the demand and design are unclear or not easy to read?

12. What are the developers think it is high risk in the application?

13. What issues can cause the worst issue?

14. What issues can most complain?

15. Which tests can be easily covered with multiple functions?

16. Which tests have the least use time during the test of high-risk part?

If the project is not big enough, what should I do if I can't make a wide range of tests?

The impact of the error in the project should be considered, not the size of the project. Therefore, if you can't make a wide range of tests, risk analysis is still needed, as in front "If time is not enough, what should I do if I don't have sufficient testing?" The tester should then conduct special tests or make a limited test plan based on risk analysis.

What should I do if the demand has been changing?

This is a common ambiguous problem.

1. If possible, contact with people who are risky to the project as soon as possible to understand how the demand changes, so that the test plan and strategy can be changed as soon as possible.

2. If you consider some adaptation when you initially design the application, then when you change the demand, you don't need to make a lot of things to change.

3. Good code annotations and good documents help developers' changes.

4. As long as it is possible, it should use the rapid prototyping to help users confirm their needs, thereby reducing changes.

5. The margin should be left in the schedule of the project to cope with possible changes.

6. Try to incorporate new needs into the "next version" of the application software, and put the original demand as a "first version".

7. By negotiating, the newly implemented new changes are included in the project, and new demands that are difficult to implement are included in the later version of the application.

8. To make sure that customers and managers understand the impact of changes to the progress table, the risks brought, and the large amount of funds caused by changes.

9. When the changes will be changed, the efforts to establish automated testing and the efforts to re-test have been balanced.

10. Try to make it flexible when designing the automatic test script.

11. When testing the application software, you should focus on the part that does not seem to change.

12. Appropriate risk analysis of changes to reduce regression testing.

13. There must be a certain flexibility when designing test cases. It is not easy to do this, so reduce the level of detail of the test case, or only the advanced general-purpose test plan.

14. Less pay less detailed test planning and test cases, to focus on the special test (Ad hoc testing).

What should I do if there is a function in the application in the application?

It should be made to make a serious effort to determine if there is a large number of unexpected or hidden features in the application, which may indicate a deep problem in software development. If this feature is not necessary for the target of the application, it should be removed because there may be an unknown impact or derived problem that the designer or customer has not taken into account. If you don't delete it, you should add design content to add test or regression tests therepon. Managers should recognize that features other than programs will inevitably lead to an increase in risks. If the function other than the plan is just to improve the user interface, the risk will not be too large. How to make software QA processes without dullness?

After a long-lasting QA process, the principle of using most people's consent, the agency adjusts and tries during growth and maturity, and productivity will be improved rather than suffocation. Prevention issues will reduce the need for inspection issues, panic and critical circumstances will be reduced, and energy will be concentrated, and waste will be reduced. At the same time, we must strive to keep the process simple and effective, reduce preparation, improve computer-based automatic tracking and reporting processes, reduce meeting time, improve training, and part of the QA process. No one - especially talented technology types, will like rules and bureaucracy, they will soon slow down. The ideal situation should be more time for plans and development, less need to complete all night, and face the face of customers.

What if the institution has evolved so fast, what should I do when I affected the QA process?

This is a common problem in the software industry, especially in the new technology field. In addition to doing the following things, there is nothing easier:

Hire a good person

2. Management should strict, quality first, pay attention to customers

3. All personnel in the agency should understand the meaning of "Quality" for customers.

How does the client / server environment affect the test?

Customer / server applications are quite complicated because they are interdependent between customers, data communications, hardware, and servers. Thus the requirements for the test have also expanded. When the time is tense (this is usually the case), the focus should be placed on integrated testing and system testing. In addition, load / pressure / performance testing also helps to understand the limitations and capabilities of client / server applications. There are some tools on the market to assess such tests.

How to test the Web site?

The Web site is also a client / server type application - there is a web server and a customer "browser". It should be considered in the HTML page, TCP / IP communication, network linkage, firewall, applications running on the web page (such as Java Applets, Java Description Language, Insert App), and applications run at one end of the server (such as CGI description language) , Database interface, log application, dynamic page generator, etc.). In addition, there are a variety of servers and browsers, their versions are different. There are small differences between each other, and the speed of the link is different, plus rapidly changing technologies and various standards. And agreements should be considered. The final result is a major continuous effort process for the test of Web sites. Other issues should be considered:

1. Expected to add load on the server (ie, click on the unit time), and the performance required under this load (such as the response time of the web server, database query response time). Also consider using what tool to test (such as web load test tools, other existing suitable tools, Web automatic download tools, etc.).

2. Who is the ultimate audience? What browser they will use? What is the type and speed they use? They are users within the unit (may use high-speed links and similar browsers), or users on the Internet (use) Different link speeds and browsers)?

3. The features expected at the client (ie, how fast the page appears, how fast the movies is fast, is it possible to load and run Applets?

4. Do you have to stop when maintaining / upgrade? How long? 5. What security measures (firewall, password, password, etc.) have you use? What is expected? Can they be checked?

6. What is the requirements for the reliability of the site and the Internet link? What is the impact on the system backup, redundancy links, and tests?

7. The upgrade of the management site requires those steps to maintain, track, and control page content, graphics, links, etc., what do you need?

8. Use that HTML specification? How is strict level? How many browsers are allowed?

9. Is there a standard or requirement to specify the page appearance? Or have the standard for all or part of the graphics for the site?

10. How do I confirm and upgrade internal and external links? How often?

11. Can I test the production system? Do you need a separate test of the system? The cache of the browser, the browser option change, the change of the dial-up link, and "congestion" on the Internet, whether it is in the test Given it?

12. How is the server's log and report to adapt to user requirements? Do they also treat them as a system part? Do they need to test?

13. How to maintain, track, control, and test for Components such as CGI program, Applets, Java description language, ActiveX?

Here are some useful guidelines, this is just subjective views, in a certain situation, perhaps it, maybe it is not applicable:

14. The page is up to 3-5 frames, unless all content is for one topic and is not sluggable. If there is too much content, you need to establish a link in the page.

15. The layout of the layout and element layout of a site should be consistent, so that users know that they are still in the same site.

16. The page should be made independent with the browser as much as possible, otherwise the corresponding browser should be provided.

17. All pages should have links to the page, and should not appear on the page.

18. The owner of the page, the change date, the connection between the relevant personnel in the organization, should be included in each page.

How does object-oriented design affect test?

Object-oriented engineering design makes it easy to design the internal design, retroactive inside the code, and finally retroact back to demand. Because it affects the impact of the black box test (do not need to understand the internal design of the application software), while the white box test only needs to target the application software. If the application is well design, you can simplify the test design.

转载请注明原文地址:https://www.9cbs.com/read-82368.html

New Post(0)