Software test overview
(This article is reproduced from Software Engineering Expert Network
Www.21cmm.com)
The rapid development of information technology makes software products to various fields of society, and the quality of software products naturally become the focus of people 's common attention. Regardless of software producers or software users, software developers must use quality as one of the important goals of the enterprise in order to occupy the market, so as not to be eliminated in fierce competition. In order to ensure the smooth completion of its own business, it is of course hoped to choose high quality software. Software products that have poor quality will not only increase the development cost of developers, but also other responsible risk, causing the company's reputation, and then impact stock markets. In some key applications, such as civil aviation booking systems, bank settlement systems, securities trading systems, automatic flight control software, military defense and nuclear power plant safety control systems, etc., can also cause catastrophic consequences. The software crisis once is the hottest topic of the software industry and even the entire computer. In order to solve this crisis, software practitioners, experts and scholars have made a lot of efforts. Now people have gradually realized that the so-called software crisis is actually only one situation, that is, there is a mistake in the software, which is these errors lead to software development at cost, progress and quality out of control. Wrong is the properties of the software, and it is impossible to change, because the software is done by people, all the work made by people will not be perfect. The problem is how we avoid errors to generate and eliminate the generated errors, so that the error density in the program reaches the lowest possible level. There are many reasons for the software to bring a mistake. Specifically, there are few points: 1, there is not enough communication, misunderstanding or do not communicate on what should be done or should not do anything (application requirements) Developed without clarity. 2, software complexity graphical user interface (GUI), customer / server structure, distributed application, data communication, super large relational database, and large system scale, making the complexity of software and systems exponentially increase, no modern software development Experience is hard to understand it. 3, the programmer is the same as all people, the programmer will make mistakes. 4, the impact of changes in demand variations is multifaceted, customers may not understand the impact of demand changes, may also know but have to do it. The consequences of demand may be that the system is redesigned, the designer's schedule is rearranged, and the work that has been completed may have to be done or completely abandoned. It has an impact on other projects, and hardware demand may have to change, and so on. If there are many small changes or a large change, the known or unknown dependence between the items may interact with each other, and the complexity of the demand change may result in errors, which may also affect The enthusiasm of engineering participants. 5, the schedule of time pressure software project is difficult to accurate, many times, it is expected to be predicted and guess. When the final period is inhalation, the mistake is coming. 6, your own negotiate more like: 'No problem' '"This thing is easy to' 'a few hours I can take it out' too much unrealistic 'no problem', the result can only be introduced. 7, code document poor poor or bad documents make the code maintenance and modification of the abnormal difficulties, the result is a lot of errors. In fact, in many institutions do not encourage their programmers to write documents for code, they don't encourage programmers to write code clear and easy to understand. Instead, they think that less write documents can encode faster, and unable to understand the code easier The confidentiality of the work ("painful must be readily read"). 8, software development tool visualization tools, class libraries, compilers, scripting tools, and so on, they often bring their own errors to the application. As we know, there is no good engineering as the foundation, and the use of object-oriented techniques will only make the project more complicated. In order to better solve these problems, a variety of efforts have made a variety of efforts.
People think that better programs allow us to get rid of these troubles, which promotes the development of programming languages, more languages begin to popularize, in order to make programs easier to understand the structural programming language, such as PL / 1, Pascal, etc .; in order to solve real-time multitasking requirements, structural multi-task programming languages, such as Modula, ADA, etc .; in order to improve reuse development, object-oriented programming languages, such as SIMLASA, etc .; to avoid incorrect demand , Development formal description language, such as HAL / S, etc., make it possible to establish a description based on natural language, and people describe demand in formal language; in order to support large database applications, visualization tools, such as Visual Studio, Power Builder Wait. The program language has played a role in improving software production efficiency, but it has a small effect on the entire software quality, more reliability, compared to other factors. It may be because the program language is based on stringent grammar and semantic rules, and people attempt to prove the correctness of the program with formal certification methods. It is possible to treat the program as a mathematical object, which proves that the program is correct from the sense of math. Mathematician is most interesting to formulate methods, talking very attractors in the paper, but the actual value is very limited, because the formal proof method only can be used after the code is written, this is obviously too late, and for large The procedure proves very difficult. Inspired by other industrial projects, software engineering has emerged, and software development is considered an engineering to develop planning and management software. For applications where demand is uncertain, the development model of progressive and iterative classes can be used. It is also possible to use Fast Application Development (RAD) and Collaborative Application Development (JAD) technology, and jointly participate in the development software specification by software developers and user representatives. The basic ideas of RAD and JAD are developers and users to design the screen in the system. Developers quickly write the most basic functions of these screens, and then give them to the user, then users and developers review these screens Confirm that they have reached the user's request, this cycle has continued until the basic part of the system is defined. Once the design is accepted by the user, the developer will complete the code required to fully implement the screen. One basic difference between the RAD and the traditional software development project is that the application RAD system is published in phases. Traditional projects generally release, also called "Big Bang". The RAD method uses an efficient development tool that developers can design the basic screen of the system very quickly, allowing users to see how the system seems to look at the future in the development cycle, avoiding the traditional development project, a big medieval and boring Understand the description. IBM's Dr. Harlan Mills proposed a clean room process. The net chamber process combines formal program verification and statistical process control (SPC). In this method, the prevention defect occurs first with the correctness of mathematics, and then use the MTBF metrics. The net chamber process is a quite new software development method that requires software development to make major changes in management methods and technical methods, especially those that require SPC to apply to software, which affects its extensive acceptance. Hardware costs continue to decrease, support new powerful workstations and networks that have been running in Case tools have become a work platform for software engineering, and the Case tool completes some specific software development processes. These tools provide software designers to describe the ability of software design in graphical ways, which is easy to maintain, easy to cross-check, easy to understand. Many people (especially the Case Tool Supplier) I believe that the Case tool plays a role to solve the software crisis and save the software industry. But in fact, the situation we have seen is a lot of company spent a lot of money, but very Less use, the reason is that the process of these tools is not applicable to the institutional software design process.