Discussion on Software Quality Assurance
Declaration of xuanyan356@163.com
Introduction
Today, more and more companies are focusing on software quality. How can we ensure software quality? The following describes the quality attributes, quality objectives, personnel quality, and company specifications.
I. Quality Attributes
CMM defines quality as: ① the degree to which a system, component, or process meets specific requirements; ② the degree to which a system, component, or process meets the requirements or expectations of the customer or user.
The above definition is abstract and difficult to understand. from another perspective, what are the characteristics of a good software quality? In other words, what aspects should we evaluate a software as a high-quality and good software?
We can evaluate a software from the following aspects: correctness, reliability, robustness, aesthetics, performance, ease of use, compatibility, security, portability, scalability, etc. The following sections describe:
1.Correctness
Correctness refers to the ability of the software to correctly execute tasks as required. Correctness also covers "accuracy.
No doubt, this is the most basic requirement for a software. For example, when we withdraw money from an ATM, when we input 1,000, the result is only 800 or 1,200, you can imagine the impact on banks and customers. A software cannot meet the requirements of correctness, and it makes no sense to talk about other aspects.
2.Reliability
Reliability refers to the probability that the system can run normally within a certain period of time in a certain environment.
I once encountered a problem on the mobile phone: In the standby status, the network signal of the mobile phone is normal, and some communication failures may occur. The phone cannot be called, and the SMS cannot be sent or received, after the instance is restarted, it can be restored to normal. Imagine the consequences of a lover's appointment or an emergency.
3. Robustness
Robustness refers to the ability of the software to run normally in exceptional or unfavorable circumstances. We can useLifeThe example in shows that when the flu occurs, in the same environment, some people may be ill easily, while some people may be safe and sound if you are in the northwest-southeast wind.
4. Aesthetics
Aesthetics mainly refers to the software UI design. aesthetics is a requirement for software from the perspective of Popular Aesthetics and psychology. This requires a comprehensive consideration of the characteristics of the software user base. Aesthetics includes software color matching, font usage, and typographical layout.
5.Performance
Performance is a software efficiency problem, that is, the system response capability in a specific time space environment of the software. When we use a mobile phone to write text messages, some mobile phones may display slowly after entering a character! This is a poor performance of the software.
6Ease of use
As the name suggests, usability is the degree to which the software can meet customers' ease of use. Usability is also an important aspect of measuring the quality of a software. We often hear people say that some mobile phones are too complicated to be used, then I think such software cannot really be called good software. During the development process, it would be a big mistake if the software developer pays attention to the technology instead of the user's perspective.
7. Compatibility
Compatibility refers to the ability of a software to communicate (or exchange information) with other different software. I used to make some Bluetooth headsets.TestWhen the Bluetooth headset and some mobile phones are paired, the headset end cannot control the mobile phone end, which causes the problem to be difficult to use with some mobile phones.
In terms of compatibility testing, we must first ensure that the software is compatible with some well-known brand products in the market and products with a high market share.
8. Security
Security refers to the ability of software systems to prevent illegal intrusion. For example, we will hear that a network system is paralyzed by hacker intrusion. Of course, the security of a system is related to the anti-intrusion ability of the software and some related protection measures, such as whether there is encryption or firewall installation.
9. Portability
Portability refers to the ability of the software to run in different software and hardware environments (CPU, OS, and compiler) without modification or slight modification, mainly embodied in code portability.
10. YesScalability
Scalability reflects the software's ability to adapt to "Changes", such as adding new features. Scalability is the same as portability, mainly from the perspective of development requirements for software.
In the above section, we will evaluate a software from different perspectives. Of course, in the actual evaluation process, we will also focus on the Software Based on Embedded, B/S architecture, C/S architecture, and other characteristics, at the same time, it also needs to be combined with the software use object, life cycle and other comprehensive evaluation. Of course, if the above points are met, it cannot be explained that it is a good software, other factors, such as maintainability, reusability, and testability, must be considered based on actual conditions.
Ii. Quality Objectives
The most fundamental goal of a software company to produce software is to win the market, win customers, and make profits. If an enterprise does not have the ability to survive, the quality of the software will be useless.
When a software company develops a software, it does not mean that the higher the quality, the better. The higher the quality, the higher the cost, so that the enterprise may not be able to survive, or the price is very high, the customer cannot accept.
This does not mean that the software quality is important, and the quality is very important! Both good and bad are always relative. From the user's point of view, the software that can normally meet the requirements of use is good software; for enterprises, in the software life cycle, the software can meet the needs of users, software that can bring more profits to itself is good software.
The requirements for software quality vary in different scenarios. For example, if our country launches the Shenzhou V, and then the Shenzhou 6 spacecraft, the quality of the software must be reliable, so we cannot make any mistakes, I believe that in the near future, when our country launches a manned moon landing spacecraft, we will pay more attention to the quality of the spacecraft software.
3. personnel quality
Software is made by people. The quality of software is closely related to development, testing, and related management personnel. In terms of software development, let's talk about software quality assurance from the perspective of testing.
To ensure quality, first ask yourself, are the personnel engaged in quality assurance really capable of ensuring quality?
I just graduated from college.WorkAt that time, it was a fax machine test for Canon. What impressed me most was their QA staff, a software submitted after our tests, as a result, their QA staff can find out a lot of problems in just two or three days, both in terms of protocol layer technical issues and reliability issues. For example, for probability problems, they can measure the degree of 1/360 and 3/529, and they can also test some problems that are only performed at specific time points. What's more, their QA staff can guide our developers to solve some problems.
Although we hate Japan very much in terms of national sentimentLearningTo learn.
Quality Assurance personnel capability issues are an important aspect. If you cannot find any potential problems in the software and want to solve the problems, how can you do high-quality software?
Testing personnel's ability is one aspect, and others, suchSoftware TestingPersonnel professionalism is also an important aspect. If a software is not fully tested, you may even have a smile on Some probabilistic problems, or you may not be able to test it in depth, or you only need to perform a simple test on the release version, these cannot really guarantee the quality of the software. In this case, the tester came to the conclusion that there was no problem with the software based on a simple test, which had a great impact on the customer, in the end, it is unfavorable for the company in terms of image and future product sales.
Iv. company specifications
Testers are more competent and have more problems detected. If some problems are not solved, the software release will be delivered to the customer in a hurry. There are a lot of software problems. Such a test is actually of little practical significance. The purpose of the test is to discover, solve, and ensure the software quality.
Of course, this guarantee is not feasible only for testers and QA personnel. In our country, many enterprise testers and QA personnel have no say in software release issues, basically, the company leaders have the say. If the company leaders say "these problems don't matter, I think the software can be released", then the software will be released. As for the so-called testing, QA, Project Manager, and other personnel, let's talk about it.
Therefore, the Quality Assurance personnel (usually QA) must have sufficient power to assess software issues, such as software issues and software releases. QA evaluation is just a failure!
Unfortunately, there are not many companies that can achieve this step. To survive, it is difficult for enterprises to do well in this aspect. For example, some products have a good time to go public on certain holidays, maybe the product is hard to sell. Of course, these are not the scope of the tester's consideration.
To implement Software Quality Assurance, developers, testers, and management personnel must undergo rigorous tests before the release of a software, then, evaluate the software!
V. Process Management
Process Management is the implementation of company specifications.
Generally, companies have a complete set of product development processes and specifications. The implementation of each process is necessary to develop a good software. This includes document management, version control,Test ManagementAnd so on.