Software Test Engineer

Special staff to test whether the software is stable
Collection
zero Useful+1
zero
Software Testing Engineer means to understand the functional requirements of the product, test it, and check the software for defects (bugs), testing software Whether it has robustness, security, operability and other performance, and write the corresponding test specification and test case Specialized staff of.
In short, the role of software test engineers in a software enterprise is“ Quality Assurance ”Role, find software problems in time and urge correction in time to ensure the normal operation of the product. They are divided into three categories according to their level and position.
Chinese name
Software Test Engineer
Foreign name
Software Testing Engineer
Understanding
Functional requirements of products
Classification
three classes of initials
Functions
testing software
Employment direction
Various enterprises requiring software management

classification

Announce
edit
They can be divided into three categories according to their level and position:
Senior software test engineer, proficient software test And development technology, and have a good understanding of the industry of the software under test, and can analyze and evaluate possible problems;
Intermediate software Test Engineer , write software test plans and test documents, and work with the project team to develop Work plan , be able to reasonably use test tools to complete test tasks during project operation;
Junior software test engineers usually perform functional tests on products according to software test plans and processes to check whether the products are defective.

Role positioning

Announce
edit
Software project development is a system engineering with clear division of labor. Different personnel play different roles, including division manager product manager , Project Manager System analyst , programmer Test Engineer , quality assurance personnel, etc. so software test The engineer is just a role in software project development.
Undertaken by the test engineer Task Role decision job content And tasks undertaken. What tasks should be undertaken by the role of test engineer
There is no unified answer. Because this is related to the size of the software company, the software project management system, the managerial style , and the characteristics of specific software projects. Moreover, test engineers can also be classified as ordinary and advanced.
The general answers are as follows:
Set the software test environment and install the necessary software tool
Run software, discover and report Software defects Or error. Especially fast Positioning software Critical error in.
Put forward evaluation on the overall quality of software
Confirm that the software meets a specific standard
Complete high-quality testing tasks at the lowest cost and in the shortest time
Among them, the most important thing is to clarify the responsibilities and goals of programmers. Before performing any specific test task, the project team should reach a consensus on responsibilities and objectives to avoid follow-up work The mutual prevarication of.
Key to improving test quality
Another noteworthy aspect is work efficiency and quality. Perhaps the main difference between senior test engineers and ordinary test engineers is that senior test engineers can find more serious errors in software more quickly. What tips can we use for reference
Please try the following methods to ensure that you will not be disappointed.
first Test procedure And then test Accessibility
First test the function, then test the performance.
First test the common conditions, then test the abnormal conditions.
First test the changed part, then test the unchanged part.
First test the problems that have a large impact, and then test the problems that have a small impact.
Test the part that must be tested first, and then test the part that is optional or not required to be tested.
waiter
It should be emphasized that no matter how senior a test engineer you are, you should understand that no matter how complex the tools required for testing and how lengthy the test steps are, test engineers always play the role of waiters in software project development, which is determined by the characteristics of testing work. Any service has its clients - clients and test engineers
The most important customers are software users. Test engineers need to test the software and report problems from the perspective of customer use and requirements.
The project manager is also the customer. The test engineer needs to report the test progress and problems found, especially serious problems.
Programmers are the customers they deal with most often. In order to facilitate programmers to repeatedly report errors, try to provide good software problem reports so that programmers can repair them faster Software error
Technical document engineer market development People and Technical Support Engineer They are also the service objects of test engineers.
Avoid mistakes
It has already been pointed out that the test engineer should clarify the role, task and responsibility. Know what is within your responsibility and what is not Own business We must try our best to accomplish our own tasks and not do things that do not belong to us.
For better performance software test As an engineer, try to avoid the following mistakes:
1. The software promised to complete the test has no quality problems
Software testing is just a way to ensure quality, and the work of software testing engineers will not be directly improved software quality , because most Software error All need to be repaired by the programmer. Software testing can only prove that there are errors in the software, it can not guarantee that there are no errors in the software, and it is impossible to find all software errors. The scope of personal ability and influence on quality is very small, and the improvement of software quality depends on software Project team The joint efforts of all members.
2. Assume the right to release software
Don't try to propose a plan to change the software release because there are errors in the software that have not been fixed. Don't think it's finished test plan , you can release the software by yourself. Because changing the software release plan may lose the opportunity to enter the market and many customers, and the economic and market losses caused by this will not be borne by test engineers. In addition, after the software is released, if the user finds a new Software error , company leaders or project managers may add fault to Software tester Because they agreed to release the software. Generally, the right to release software is provided by the product manager, project manager Test Manager , market managers Discussion and decision
3. Play Process improvement Member's role
software test Engineers must report errors and sometimes analyze the types, characteristics and causes of errors. However, do not actively propose improvements Software process The specific improvement measures should not directly interfere with the working methods of programmers, so as not to influence the happy cooperation in the future. Software process improvement The method is the work of the software quality control department, which is their own job.

operating duty

Announce
edit
software test It is the process of using manual or automatic means to run or test a system. The purpose is to check whether it meets the specified requirements or clarify Expected results Difference from actual results. The essence of development is to achieve the needs of software users as much as possible, and the essence of testing is to verify software system Whether the requirements of software users are met.
Software test engineers simply say Software development process Quality inspectors and guarantors in software quality The guard work. Software Test Engineer Specific work includes:
1. Use various testing techniques and methods to test and discover Software defects Testing technology is mainly divided into Black box test and White box test Two categories. The black box testing technology mainly includes Equivalence class division Law Boundary value method Cause and effect diagram method , state diagram method, test outline method and various typical Software failure Models, etc; The main techniques of white box testing are Statement override Branch coverage Determine coverage , Basic Path overlay Etc;
Various stages of software testing career development
2. Testing needs to run through the whole software development life cycle complete software test Work includes unit testing, integration testing Confirmation test And system testing. The unit testing work is mainly completed in the coding phase, which is jointly completed by developers and software test engineers. The main basis is detailed testing. The main work of integration test is to test whether the interface between software modules is realized correctly. The basic basis is software Architecture design Confirmation test and system test are to verify the consistency of software functions and requirements after the completion of software development, and verify whether the system functions of software under corresponding hardware conditions meet user demand , which is mainly based on user requirements.
3. The tester will compile the discovered defects into a formal defect report and submit it to the developer for defect confirmation and repair. The main requirement of defect report preparation is to ensure the recurrence of defects. The tester is required to have good Literacy And language organization skills
4. Testers need to analyze software quality. After testing, testers need to analyze software quality according to the test results, including Defect rate , defect distribution, defect repair trend, etc. Give various kinds of software Mass characteristics It includes specific measures of functionality, reliability, ease of use, security, time and resource characteristics. Finally, a conclusion on whether the software can be released or submitted to users is given.
5 、 Test process In order to better organize and implement the test work, the test leader needs to formulate test plan , including test resources, test progress, test strategy, test method test tools , test risk, etc.
6. In order to test better and more effectively, testers should ensure that Quality of work , you need to design the test first before executing the test Use Case And form a test case report. Designing test cases is the core work to ensure test quality, and many test techniques can be used to guide the design of test cases.
7. To improve work efficiency Or to improve the testing level, the testing work needs to introduce automated testing tools, and testers need to learn to use automated testing tools and write Test script , proceed performance testing Etc.
8. The person in charge of testing also needs to make continuous improvement according to the actual situation Test process , improve the testing level, and build the testing team.

Career development

Announce
edit

brief introduction

Career Direction
The test team leader is usually the person in charge of the test project Technical capability , but also have certain Management ability The main responsibility is to develop test plan , write test plans, monitor and manage the entire Test process The test team leader can grow up to the manager of the test department, the quality manager, or Horizontal development He is a project manager, and usually receives relatively high salary.

Test analyst

The main responsibility is to conduct comprehensive analysis of the system test results, such as defect analysis performance analysis Etc. test analyst Not only has strong testing technical ability, but also has database, operating system and other aspects technical knowledge This kind of position has a good development space and can be developed into system designer Etc.

Test Engineer

The main responsibility is to write test programs and execute automated test tasks. Testers in such positions should at least reach Junior programmer Because I often deal with programs. The development space is also good, for example, it can develop into a programmer.

Professional advantages

Announce
edit
Salary advantages
At the beginning of work, the minimum monthly salary is more than 4000, but after working for half a year Workflow After understanding, you can change your job. Five or six thousand is OK. If you do banking business The starting salary for the test is six or seven thousand yuan. If you have a little banking knowledge, it is OK to change your job to more than eight thousand yuan. There is a big gap in bank testers. Especially in big Outsourcing company Good projects, such as bank projects, are treated equally work experience The development of is similar.
Good employment
The ratio of foreign development and testing is 1:2. The ratio of domestic development and testing is 6:1. So testing Industry talents The gap is large and the employment prospect is good. Basically, supply exceeds demand.
It's easy to work
Compared with Software Development Engineer For example, the work of software test engineers is much easier

Great development

The test is divided into three stages: Manual test , automated testing performance testing This is a process of gradual improvement. The initial work may be manual testing, which is also the work of most testers. Automated testing is testing Development trend , and automation testers are in urgent need, and their salaries are high. Performance testers are the most scarce, and their salaries may be higher than those of developers with the same experience, because performance testers are scarce.
(1) Manual testing: relatively popular, most tests are still manual Test phase (2) Automated testing: It is a trend, but there are still relatively few automated tests, and appropriate code writing is required. After a period of manual testing, you can gradually step into the automated testing phase by accumulating some experience. If you are skilled in automated testing, you can earn 10000 yuan a month, which is about the same as the development salary.
(3) Performance testing: performance testing personnel are scarce, and they can generally do performance testing, and the average monthly salary of those who can do it is more than 16000, higher than that of developers.

No gender requirements

Software test engineers have no specific requirements for gender, so they are relatively suitable for women IT career

The older you get, the more popular you become

Software Test work It is the quality control, including technical and management work. The work is relatively stable, there is no age limit, and with the accumulation of experience, working years The longer it grows, the more popular it becomes.

Prospect analysis

Announce
edit
Software tester The main responsibility of software product It is a very important position for an enterprise to supervise and inspect the entire development process to meet customer needs. In foreign countries, the ratio of general software testers to software developers is 1:1. For example, when Microsoft developed Windows 2000, it used 1700 software developers, and 3200 professional test engineers. The ratio of test developers is as high as 1.7:1. This shows that the importance of software testing posts is unusual.

Professional quality

Announce
edit

Professional skills

There is a huge gap of software testing talents in China
The professional skills in the computer field are a necessary quality for test engineers and a prerequisite for doing a good job in testing. Although people without any IT background can also engage in testing, a test engineer who wants to gain greater development space or lasting competitiveness should Computer Skills are essential. Computer professional skills mainly include three aspects:
1. Test professional skills
There is a lot of testing expertise, and this book mainly focuses on the basic professional skills that testers should master. Testing expertise covers a wide range: both Black box test White box test test case design And other basic testing technologies, including unit testing , function test integration testing System test performance testing etc. test method , including basic test process management defect management , automated test technology, etc.
2. Software programming skills
Software programming skills should actually be one of the necessary skills for testers Microsoft Many testers have years of development experience. Therefore, testers must be able to write programs if they want to get better career development. Only those who can write programs can be competent for such difficult testing tasks as unit testing, integration testing, performance testing, etc.
In addition, for Software tester The programming skill requirements of the tester are also different from that of the developer: the tester should focus on the correct operation of the program, while taking into account the efficiency, especially in performance testing Write relevant test code. Therefore, testers should have certain algorithms Design capability According to the experience of senior test engineers, test engineers should at least master a language such as Java, C #, C++and the corresponding development tool
3. Network, operating system, database middleware Etc
Compared with developers, the knowledge that testers have is "extensive but not sophisticated"“ Art is more than pressure ”It's a very vivid metaphor. Due to the frequent need to configure and debug various testing environment In addition, in the performance test system platform For analysis and tuning, testers need to master more knowledge of network, operating system, database, etc.
In terms of network, testers should master the basic Network Protocol And the working principle of the network, especially network environment These are common knowledge in testing.
In terms of operating system and middleware, you should master basic usage, installation, configuration, etc. For example, many application systems are run based on Unix and Linux, which requires testers to master basic operating commands and relevant tool software. and WebLogic Websphere The installation and configuration of middleware also need to be mastered in many cases.
data base Knowledge is more important to master skills, and the application system can hardly be separated from the database. Therefore, you should master not only the basic installation and configuration, but also SQL. Testers should at least master MySQL Sqlserver , Oracle and other common databases.

Industry knowledge

The industry mainly refers to the industry fields involved in the enterprises where the testers work, such as many IT enterprises engaged in oil, telecommunications, banking e-government , e-commerce and other industries product development Industry knowledge is business knowledge, which is another prerequisite for testers to do a good job in testing. Only when they have a deep understanding of the product operation flow Can be determined Product Functions Whether it is correct.
In many cases, the software runs without exception, but the function is not necessarily correct. Only by mastering the relevant industry knowledge can we judge whether the user's business needs have been realized.
Industry knowledge has a certain relationship with work experience, which can be accumulated through time.

Personal accomplishment

As an excellent test engineer, first of all, you should be interested in the test work: the test work is often boring, so it is easier to do well in the test work if you love the test work. Therefore, in addition to the previous professional skills and industry knowledge, testers should have some basic personal qualities, namely“ Five Heart ”。
1. Focus: It mainly means that the tester should concentrate when performing the test task, and should not concentrate on two things at once. Experience shows that high concentration can not only improve efficiency, but also find more Software defects The best performers are often those members of the team who are most focused on their work.
2. Careful: It mainly means that the test work should be carried out carefully and carefully, and some details should not be ignored. Some defects are difficult to find if you are not careful, such as the style and text of some interfaces.
3. Patience: A lot of testing work sometimes seems very boring and requires great patience. If you are impetuous, you will not be "attentive" and "careful", which will let many software defects escape from your eyes.
four conscientiousness : The sense of responsibility is one of the necessary qualities to do a good job, and test engineers should carry it forward. If the test fails to fulfill its responsibilities, or even perfunctorily does so, it will leave the test work to the user to complete, which is likely to cause very serious consequences.
5. Self confidence: Self confidence is a quality that most test engineers lack, especially when facing the need to write test code, they often think they can not do it. In order to get better career development, test engineers should study hard and build confidence that they can "solve all testing problems".
"Five Hearts" is only the basic requirement for good testing work, and testers should have many qualities. For example, testers should not only have team work Spirit, and should learn to be tolerant to others, learn to understand "developers", and respect their Labor achievements ——Developed products.

requirement

Sketch Map
1、 Quality awareness : Quality awareness must run through all aspects of software testing. Understand functional requirements and write Test case , implement test plans, find problems, submit problems, describe problems, assist in solving problems, and track problems. In all links, we must pay attention to quality and think about problems from the perspective of quality.
2. Careful and systematic: software testing may repeat the same operation every day, its work may be boring, and the problems found may be very small or very disorderly, with different phenomena. Under such circumstances, software testers must be careful not to miss any minor errors, and find out certain rules and Reproducibility In addition, it has a good planning in the test, which is to test what first and then test what, without letting go of any dead corner of software. In the test, we must look at the problem systematically, functional module Whether the change of A will affect the function of other modules cannot be taken for granted. It must be viewed systematically. Sometimes one Memory address The change of may cause the crash of the whole software. Therefore, we must systematically deal with and view any code modified in the software.
3. The mastery of software testing theory and the application of development tools and platforms: black box testing, white box testing, function/system/pressure/performance, etc. But no matter what you test, fundamental theory Is unchanged. Requirements documents, design documents, and production according to documents test case (Divide equivalence Boundary test Path test User experience ,, etc.), perform tests, submit and track issues. Of course, different industries use different tools and methods for testing. How to test mobile apps, wireless communication products, and C/B-S applications? These products are very different, and the work they use is very different, but their basic testing theories are still consistent.
4. The high level of the station is detailed: not only theory, but also many documents for testing constructive However, no problems can be found during the test. There are several reasons for this. First, the opinions that may be put forward are not included in the test cases. Second, it is possible that the problems may always be ignored if the implementation is not careful. Third, it may not be implemented. So we must stand on a certain height to look at software testing, but also very careful implementation. Only through practice can problems be found and improved Final settlement Question.
5. Teamwork: Needless to say, in this age of increasingly complex products, it is difficult to do the best in all aspects with one's own efforts. Give full play to the working ability and efficiency of each member of the team.
6. Doubt: Some books define software testing in this way. Software testing does not prove that the software is correct, but that it is wrong. But we cannot find all the errors. So there are many times to doubt and assume.

Software Skills

Announce
edit
Software Engineering Skills)
software engineering Skills can be divided into three parts: understanding the rules of software engineering, understanding computer programming and operating system knowledge.
Understand the "rules" of software engineering. There is an outdated view that software engineering is just a combination of Coordination capacity And Superman like coffee consumption all night long, constantly designing and Test procedure "Experts". This phenomenon does exist, but you only have to understand software development The real process, will be a professional.
Where to start
Go to the library first. You need to build software test Knowledge based software engineering. My suggestion is to read Roger Pressman's software engineering: A Practitioner's Approach, fifth edition (Introduction to Career, Fifth Edition, McGraw Hill, 2000 Edition) and Glenford Myers' The Art of Software Testing (Software testing art, John Wiley &Sons, 1979). Pressman's book is a comprehensive introduction to the principles of software engineering. There's a lot about software skills project management , requirements analysis, software design and other good books on software engineering, but Pressman introduced these aspects in a book. Glenford Myers, less than 200 pages, was released in 1979, but software test The Bible of the aspect. The testing methodology defined and interpreted by Myers has become the basic module of software testing.
Myers also examined the economic (cost of defects) and psychological aspects of software testing (the goal of testing is to find errors and Unsuccessful ), and leading software development and testing basic principle
Basic research on reference books is a good start, but this is just a one-sided dialogue. It would be great if you could talk to thousands of people who have direct experience in software engineering and testing and who want to enter this field
Thanks to those online electronic tribes, you can already do it. Comp.software-eng covers all aspects of software engineering such as design, programming and project management. Comp.software.testing covers software test Automation, training, skills, etc.
Wait, don't just stay here. Should you visit these websites often
Bug-Net( http://65.54.244.250/cgi-bin/linkrd...%2e bug Net% 2ecom) is about Software defects Online magazine. Reading about defects is a good way to learn how to work and fail. You should also consult the Journal of Software Testing and Quality Engineering( http://65.54.244.250/cgi-bin/linkrd...ww%2estqe%2ecom )。 STQE is to determine the network software test The origin station with good resources.
Computer programming. It is impossible to imagine that some people like to test products but never read, check and understand the software that makes up the products.
Don't misunderstand me. You don't have to spend all your time reading source code However, any design, writing and error correction you have done about your own program can greatly help test programs written by others.
How do you learn programming
By programming. Seriously, start learning to write computers program It's the simplest thing. Remember I said "start learning". Software Programming environment , for example Microsoft Windows Foundation Classes ( MFC ) or Sun's Java Foundation Classes ( JFC , also called "Swing") is becoming more and more complex and difficult to keep up.
But I'm trying to surpass myself. How should you learn programming
First, buy Microsoft Visual Basic Don't let the name fool you. You can use this set of components to build quite complex programs. And it only costs about one hundred yuan. What's the next step
Wait, it's time for visual programming to warn.
You buy one for your PC programming language You actually bought an integrated development system or IDE These IDEs streamline the development process by simplifying programming. These IDEs will actually help you write many codes. This is very conducive to developing a product as soon as possible, but it is not conducive to learning programming. If you use Windows to generate programs, you have no choice, because too much environment intervention makes it impossible for you to program from scratch. If you generate programs from Unix, you can write all the codes yourself.
Once you get used to working with parameters control structure , objects, I/O and more importantly Visual Basic error correction When dealing with each other, you can start to learn the C language. Learning C can make you familiar hexadecimal System, through pointer allocation and reference memory, access individual body bit codes and create Program module
I always thought I was learning Java It's better to learn C first, because C forces you to complete many tasks and Java will automatically handle them (for example, free unused space). Working in C is harder than working in Java, but you can learn more basic aspects of programming. You can actually use Visual C++ IDE writes C programs from scratch, but it is better to learn C in Unix system.
Operating system knowledge. You have given it to Redmond , the people in Washington. In just a few years, Windows NT It has become the standard operating system for most computers in the world. If you want to work with NT, you need to know its address. (It is used to store your System structure Database of all aspects of.) I found that Peter Norton wrote Inside Windows NT 4.0 (SAMS, 1998) is a good introduction book. However, if your app or system requirements With high confidentiality, output, reliability and flexibility, Unix is still the best choice.
If you want to be a successful software engineer You must be able to work in the world of Unix. If you want to learn programming from scratch, you must also work under Unix.
What is your choice
You can take courses at local schools or universities, or set up a Unix system at home. Don't faint. All you need is a PC and a copy that you can download for free from the network Linux Copy. (You can buy one at a price of about 29 yuan CD-ROM With copies of all files.) Linux is not the "toy" version of Unix, it is real. It has released seven million copies, and some major PC manufacturers even loaded it for you first.
Well, you have arrived at Unix or Linux System. What should you learn
Documents and directory structure Standard input and output And error flow, background (also known as“ daemon ") Processing, calling from C system function , OK, I can continue. A good start is to read Arnold Robbins' Unix in a Nutshell O'Reilly &Associates, 1999) or Ellen Siever's Linux in a Nutshell (O'Reilly&Associates, 1999).

Communication skills

Announce
edit
(Communications Skills)
Able to write computer programs but unable to write a complete sentence software engineer also. But unfortunately, to be a successful software test Engineer, you need clear communication.
How do you learn to write
By writing. If the writing level is too rough, take a creative writing course. Write project flow records or send emails every day. The key is to learn (or relearn) how to express your thoughts in clear and understandable language. A good writing advisor is William Strunk Jr. And E B. The Elements of Style (Allyn&Bacon, 2000) written by White is nothing like a junior high school textbook.
The test engineer must document the product test technology. test plan Provide guidance and turn test design into step guidance for setting, implementing test and evaluating results. With general software and Product characteristics Engineers with different levels of experience can use such a detailed test plan. In this way, engineers other than test designers or test plan authors can also conduct tests.
The test plan also helps to prove the correctness of the test strategy. Everyone in the project should participate in the review (i.e. marketing, development, support, technical writing, and testers). The review of the plan is essential because although the test engineer tries his best to reach a comprehensive definition of the product, the definition based on which the test designer is based is not necessarily complete or accurate. In addition, just as it is difficult for developers to test their own code, it is also difficult for test engineers to clearly evaluate their own test plans. Each plan reviewer may suggest modification based on his experience and expertise, and sometimes the reviewer can provide test engineers to organize Product definition Information not available at this time. For example, a marketing person may learn about new customer requirements, and a software support expert may learn about a new defect report from the relevant product field.
test plan Emphasize the principles of test planning and execution. Describing the test design and steps required for testing in the test plan is another layer of test design and planning principles. Errors and deficiencies in test design and planning are often irreparable after the design is transformed into specific structures and test steps in the test plan.
The test plan can be used as a reference for other projects, such as preparing tests for different products. When the software under test finds and verifies the defect solution, the test described in the test plan can be used to verify the defect solution. At the same time, a major test Design information Source, especially for new versions of old products, is Related products Or previous test plan When creating a new version, the old version of Software test plan Should be re examined.
Different from the function and design description, the test plan will describe the functional operation of the product from the perspective of testing. In this respect, the test plan constitutes the company Public archives Part of. As time goes by, people will leave the company and take away their knowledge. The test plan of previous products can help you define the test of new products.
software test The engineer will also write a report on the test results. The test results must be documented, so that the status of the software under test can be determined and records of the defects that must be solved can be provided. The record of all defects found in the product test is the most obvious Save time The longest document. Test plan and Test report It is often forgotten at the end of the project, but the list (or database) of existing defects represents the unfinished agenda of the project. This agenda has not been completed because some defects must be corrected when a patch or maintenance release is made to the original product, or they must be repaired before the product is used as the basis for subsequent products.
In the process of dealing with software products, test engineers participate in more aspects of the project than people in other departments. The test department should record information about major events (such as design decisions) during the project. This information should help the testing department and other departments avoid making the same mistakes in subsequent projects. Errors are inevitable, and problems may occur in a project. Learning from these experiences can avoid problems and the same mistakes in the future. The first step in learning from mistakes is to remember them, and the first step in memory is to write them down.

Organizational skills

Announce
edit
(Organizational Skills)
Every time a software project is executed test plan , it is almost impossible not to encounter defects that will hinder at least some tests and must be solved. One Test Engineer It should be flexible to stop testing one part of the product and start testing other parts. Sometimes the software under test needs to make a fundamental change, causing a large number of test results to fail, and the test may have to be redone more than once. In the process of finding and changing problems, test engineers must be organized and maintain a clear sense of the context of the software being tested (for example, different parts of a specific version of the program being tested).
Network era Dynamic development of requirements and Test mode It is more and more important for test engineers to make an organizational way of work. In the whole development process testing software May continue to improve. The test engineer must consider these changes when planning and implementing the test, and must control testing environment To guarantee the test results Effectiveness
Remember that planning is a verb. As a software engineer You will never have all the time and resources you want. You must always maximize your test effectiveness and efficiency by understanding technology and products, developing organizational methods, learning from your mistakes and those of others, and making rapid adjustments when the design must change or go wrong. How can we do this
Basic algebra: Quantify tasks, goals and results to reduce the number of variables in the equation. Put the product's Function definition As required. stay test plan Quantify the test and its expected and actual results during the test, and provide information to Project team You can't finish the whole test by clicking around. The organization mode of future software development requires flexible design and evolving development cycle. yes Product testing It must evolve with the evolution of products.

practical experience

Announce
edit
(Hands On Experience) This is a typical Dilemma You need software test Experience to find work, you do not work you have no experience. What should you do
Be careful! This requires courage and careful backup of your PC.
Participate in the beta test as a volunteer. How to find companies that need beta testers
First, call your relatives and friends who work in a software company. Occasionally someone will need beta testers. If this doesn't work, go to your favorite Web search engine Go to find "beta test". You will find that many small (and not so small) companies urgently need beta testers. Why?
Thanks to the Internet, the intensification of competition makes it necessary for companies to product model Post it on their website and launch it as a "beta" version. These companies want people not only to test their products, but also to Freeware They are interested in buying their products.

attitude

Announce
edit
(Attitude)
"I hope your dream of happiness has been broken by you"
I bet this sentence can remind some people of the trauma of childhood memories. I am not a psychologist, but I dare to say that this is because we are eager to see success. stay software test You should not only verify that the software is doing what it should do, but also that it will not do what it should not do. To do this, you have to find out where the software failed.
Software testing requires a lot of people to make a 180 degree change in their vision, because the goal of testing is to make the software under test fail, resulting in success equal to that when other things work correctly. In software testing, a successful test reveals a defect. Software testing is also because the advent of the Internet requires people to view dynamic development and test model

Necessary Traits

Announce
edit
software test In addition to technology, engineers also require negative creativity; Detection skills; Overall understanding of the product; Evaluate from the customer's perspective; A skeptical rather than hostile attitude; Be able to withstand bad news and maintain goals; Embrace the aspirations of new technologies.
Negative creativity
One software engineer Do not be afraid of causing paralysis or burning of a product. In software testing, boundaries mean being exceeded rather than being followed. If a program has a limit of 10 for a certain value (for example, you can One time The maximum number of files opened). The first thought of the test engineer should be "What if I take that value as 11, or 0, or 10.1, or even do not set this value?"
In my early career, once I tested a development and QA The PC database missed by the engineer. The database in question is version 2.01. This in itself indicates that there is a problem with the product. Didn't version 2.0 solve all the defects of version 1.0
Or version 2.0 has added new defects
I'm sorry because time is tight No investigation These only confirmed that the final defect repair was successful.
This is a big mistake. I should retest all product features that developers call "unchanged". The defects in version 2.0 were indeed repaired, but someone broke the request during the repair process. The fact is that you can't search data in the database. The first person to receive this product beta The customer found this defect.
I declare the previous test invalid and require a comprehensive test of the product. After finding several defects, I found that the database read Write Protect Files or write protected disks can cause paralysis. The developers were surprised that I would try to write and protect a database. Their reaction is: "No one will do this" product Marketing Manager Soon admitted the mistake in their way.
Detection skills
In an ideal world, software test It shall be completely and accurately described in a regularly updated and clearly written functional and design specification document (generally referred to as "specifications"). Unfortunately, this improvement has been Development program Every aspect of the file task, including recording the inevitable changes to the program during development, requires so much time and effort that people cannot complete programming. And it costs too much.
Formal and informal information source
Formal system
Documents required
Function specification
Design Specification
informal system
User files
Communication with other developers
Communication with software support personnel
Product related documents
Defects related to products
"Local knowledge" from products working on relevant or earlier versions
Because we are not programming in the ideal world, test engineers should be able to find their own way of working. Typically, there will always be some design and functional specifications for the test engineer to use to start his research. These documents can be regarded as the "formal" system describing the software under test. The test engineer should be able to expand the information of the "formal" system with the information of the wider "informal" system. At the same time project cycle Any point and any file may be correct or incorrect, so the test engineer must Operating mode By observing, talking with developers and other project personnel, or reviewing relevant or seemingly less relevant documents Accuracy
Overall understanding of products
In a program project, Software Development Engineer Mainly focus their energy and attention on their own projects. As a result, when these projects are partially combined for testing compatibility Problems. Before the product is sent to a customer, it is the test engineer who can see the whole product. Therefore, test engineers must be able to maintain a "systematic" vision of the operation and use of the entire product.
The test engineer may not be the best expert in any part of the product, but he must be Overall product Expert in operation. For example, if the tested product is a product similar to Microsoft Office The test engineer must understand the operation of each program, the interaction between each program and other software, hardware and software environment

evaluate

The test engineer must be a customer advocate. The tested program may run reliably to meet all design requirements, but it may not be available in the customer's software environment. One of the tests before the product is delivered to the customer is to verify that the product meets the customer's requirements and expectations. Here Item test Test engineers must simulate the user's software environment and put themselves in their position.
The software function is "correct" but cannot meet the customer's needs tragic An example of American Airlines The company's Flight 965 was launched in 1995 Columbia A crash in Cali. During the flight landing, the air signal control system instructs the crew to move towards an aviation called "Rozo" Signal lamp Fly. This signal light is on Aeronautical chart The bid is awarded as R. The crew enters R into the Flight management computer In, we saw six aviation signal lights clearly listed from near to far. The crew chose the first signal light and thought it was Rozo. But that is not. Autopilot Turn the plane 90 degrees to the left and hit the mountain.
What went wrong
When Rozo is listed as R in the aviation watch, the flight management computer asks the crew to input the full name of the signal light to call out its position. At the same time, the computer only displays the code letter and orientation of the signal light. The computer function is "correct", but it does not meet the needs of users.

change

It is rare that the requirements at the beginning of the project are consistent with those at the end of the project. Sometimes the technology changes, and the product must change to adapt to the technology. Sometimes competitor 's product has functions that your product does not have. In many cases, the customer's or Prospects The requirements of need to change. An example of the combination of these factors is Microsoft Internet Explorer Competition with Netscape.
With the rapid increase of first-time computer users, test engineers need to put themselves in the position of customers more than ever before. These new non-technical users are unwilling to accept defects, explain defects or Rational thinking , or correct the defect through "Upgrade". They just want the software and hardware of the products they buy to work.

mentality

The test engineer cannot accept things according to the surface value, and must persistently question everything until it is confirmed. The engineer must balance this skepticism and persistence with a spirit of cooperation with others in the project. The relationship between the testing department and its related departments may become tense, especially after a large number of defects are found, or when each defect found will potentially delay the delivery time of the product and delay the project. Test engineers should remember Attacker Of entirety , not programmers.

ability

A test engineer must faithfully report defects in the product. This information should be welcomed by the project team, because every problem encountered by a test engineer (unless new problems are added) means reducing the problems that customers will face. Unfortunately, many people don't want to hear about it, especially in the later stages of the program project.
The test engineer should be able to deal with situations where the work is too good and leads to blame. This is difficult for some people to do and will seriously affect their morale and self-esteem.
It often seems that the test engineer has blocked the delivery to the customer. Only the objective project manager can feel that the test engineer is providing valuable services to the project. I clearly remember that a project manager raised his hand to ask me what he wanted was: "solution, not problem" (he did not understand that the realization of the solution sometimes requires the solution of a problem.) Sometimes the project manager project plan When it is inconvenient, there is pressure to discount due to defects found. In these cases, the test engineer should be able to defend based on his experience and knowledge of the product, but he should not act as if he was personally threatened.
How to avoid these situations
Set the expectations of other project team members on the test content, time and how to update the test results and defect information. I used to A QA manager who wants to delay the product delivery date has worked. His goal is not to make the product successful, but political power Manipulation of. He was sure that he could be promoted. He designated some engineers who worked for him as "managers", began to call themselves "directors", and asked the building management personnel to put his office cubicle One foot wider. (This has not been achieved, but at least his seat has more room to stretch his feet.)

Desire

For most people, the older they are, the harder it is to learn. In the business world, people tend to food chain The higher you go, the farther away you are from the technical foundation they have established. This is partly because they need to focus on other tasks of operating and guiding their subordinates. Sometimes it is also because they unfortunately think that they no longer need to practice technical work. The Internet has increased the speed of technological change. No business and technical decisions can be made without further learning or development.
A former manager set me an example of how to deal with new technology. He was nearly sixty when I worked with him, but he was as eager to learn new technologies as a novice. He gets a lot of information and constantly supplements Network server , firewall, and Perl or Expect. He also attaches importance to the work of QA or testing organization. His initial background was software development and development management, but he did not think that being a QA manager was reducing his reputation. He understands how much simpler the development manager's job can be if an independent test or a complete test is performed by a QA team.
As I said, when you live in the Internet age, it's easy to fall behind as long as you stay put.
Compared with other software engineers, software test The knowledge of engineers should be very broad, but the most important quality should be the ability to accept new technologies in the first time.
As the competition between companies is increasingly focused on quality Software tester Of requirement It is also getting bigger and bigger North America It is particularly obvious that this determines the promising prospect of the software testing industry, and also provides a broad employment space for Chinese immigrants who are willing to keep forging ahead and learn new technologies. There are always many employment opportunities for software testing engineers. The key is to be good at seizing the opportunities and be willing to make efforts to learn and do things in a down-to-earth manner.

Offering courses

Announce
edit
Build Windows testing environment
It mainly explains the software, hardware and network knowledge required to build a Windows test environment. Including various hardware and interfaces in the computer. Classification, distribution and authorization of software; Basic knowledge of operating system; registry Viruses , safety and other knowledge; TCP/IP protocol And DNS Active Directory And so on. So that students can build a LAN environment based on Windows Active Directory in the actual working environment.
Use C language to develop simple applications
The purpose of this course is to enable students to master software development technology, programming methods and ideas, understand common mistakes in the process of software development, and prepare for the following test courses and Test script Lay the foundation of language. The course mainly includes the grammar and program of C language Basic structure , function, pointer, array data structure , algorithms and other knowledge involved in programming. The course focuses on practicality and training students' ability to analyze code, master coding specifications, and master debugging knowledge and analysis Program error Ability. Learning memory at the same time Inspection tools and Software configuration management And so on. This course runs through a development“ software test Engineer management system "to increase the experience of students in developing projects.
This course is a key course of software testing. This course mainly introduces the basic concepts and knowledge of software testing, how to write test plans, identify software defects, and write defect reports. Through learning, students can master the process of software testing, the strategy and classification of software testing, and the classification and priority So as to have an overall understanding of testing. This course introduces Bugzilla defect tracking management system (test tool). In general, this course will enable students to master most of the software test Relevant basic knowledge.
Efficient design testing Use Case
This course is a key course of software testing. This course mainly introduces a large number of cases to explain how to write test cases. Explain the techniques for designing test cases, including Equivalence class division Boundary value analysis Cause and effect Graphic method , state diagram method, test outline, orthogonal array list, test matrix, etc. Test features include: function, performance, compatibility, ease of use, etc. Test objects include software functions GUI Interface Document test , installation and uninstallation test, etc. Through this course, students are mainly trained to design test cases from the perspective of writing appropriate test cases for functions in the shortest time. This course and《 test plan And Software defects 》Throughout the course“ software test Engineer management system "to prepare test plan and test Design and development , implement testing and test evaluation projects, and increase students' experience in software testing.
White box test
This course mainly explains White box test Technology. The main contents include logical drive coverage and basic Path overlay Two aspects are mainly introduced in the logical drive coverage Statement override Determine coverage Conditional override , judgment/condition coverage Condition combination coverage , path coverage and circular statement coverage; Drawing is described in Basic Path Overlay Control Flow Diagram And the concept of program complexity. Through learning, students can understand White box The test theory, organization, and how to evaluate the effect of a white box test. This course introduces Logiscope And C++Test White box test Tools.
Linux vs network application Environmental Science
This course mainly explains how to build Linux testing environment Knowledge required. By learning Linux installation and configuration, common Linux commands, software installation, uninstallation and use under Linux, and common Linux services( Apache , MySQL, Squid, Iptables, etc.), Linux Software development environment So that students can use Linux to realize a network environment that provides common services. This course explains the use and configuration of Linux in the early stage by building a Bugzilla defect tracking management system in Linux.
WEB Technology and Database
This course focuses on database HTML 、 XML 、 HTTP 、 J2EE 、 .NET And other basic knowledge, so that students can master these technologies to facilitate the establishment of distributed software testing environment The database focuses on SQL Server, and also introduces Oracle and MySQL Database.
Efficient use Automatic test tool
This course mainly introduces international testing tools Occupancy Three test tools of the highest MI: functional test tools QuickTest Professional performance testing Tools LoadRunner Test management tools TestDirector Students can master these popular testing tools to further improve the efficiency of testing.
software test Practical training
This is the last course. This course is mainly to guide students to complete a project by using the previous courses Test process So as to consolidate the knowledge learned. In this course, the division of labor and writing will be completed test plan , Write Work log AND ON Regular meetings Design test Use Case The process of performing tests, filling in and handling defect reports. The project used is carried out in three versions regression testing , complete the test work through division of labor and cooperation, simulate the role of test team members through lecturers and trainees respectively, and exercise the practical ability of trainees. This project is an Office like system with millions of lines of code.
Career oriented training
Career oriented training COT course Career oriented training refers to career guidance for students, including employment guidance and pre employment guidance. Through career guidance and Employment Commissioner Daily auxiliary training, such as the symposium between employment stars and students, clarifies the employment direction and further understands the employment form. Detailed introduction How to write a resume , through intensive interview training, and Mock interview And other ways to improve the ability of students to respond to interviews, so as to strengthen the students Employment competitiveness
Huawei software test Engineer Learning Program
1、 Principles of software testing
V Software engineering: the meaning of software, the characteristics of software development process Software life cycle model Software management process software quality And quality assurance: software quality is the customer's Satisfaction , the concept of quality, the connotation of software quality quality management system 、SQA、SCM、SEPG
V Software testing concept: Software Crisis Background of software testing, Software defects What, software testing career development, Software tester Quality and skills required, basic concept of software testing, purpose of software testing, importance of software testing, principles of software testing, software development and software testing
v software test Basis and specification: software quality standard , Software test specification Interface specification, coding specification CMM and ISO9001 thought structural system 、CMM VS ISO
2、 Technology of software testing
V Overview of software testing technology: the basic method of software testing, Black box test White box test Static test dynamic test Test strategy
V Software testing process: software testing process, general testing Document Template Classification of software testing software package Mass characteristics of
V Unit testing and integration testing: what is unit testing, unit testing objectives and tasks, unit testing methods, debugging and evaluation, what is integration testing, integration testing objectives and tasks, and integration testing modes and methods
V System testing and acceptance testing: what is system testing, the objectives and tasks of system testing, system testing methods, the application of tools in system testing, what is acceptance testing, the objectives of acceptance testing, the process and main contents of acceptance testing Product specification Verification of instructions
V Type specific software test object-oriented Software testing, characteristics of object-oriented software, levels of object-oriented testing and data stream , object-oriented unit testing, object-oriented integration testing application server Testing, classification and characteristics of application servers, testing of Web server based applications, testing of database based application servers, testing of J2EE based platforms, and software Localization testing : What is Software Localization Translation problems of software localization, technical problems of software localization testing, and key points of localization testing
3、 Practice of software testing
v testing environment Deployment of: importance of test environment, elements of test environment, establishment of Testing laboratory Maintenance and management of test environment
V Software testing Use Case Design of: test case source, test requirement extraction, test case design White box test Use case design method Logical overlay method /Basic Path test Law Black box test Use case design method Equivalence class division Law/ Boundary value analysis / Cause and effect diagram method / Error conjecture /Function diagram method, organization and tracking of test cases, and actual project practice
V Report findings Software defects : Description of software defects, information related to software defects, processing and tracking of software defects
v software test And quality analysis report : of software products Quality measures Evaluate the coverage of system test, software defect analysis method, defect analysis based product quality Assessment software quality Reliability assessment, software reliability model, reliability assessment process
V Software test automation: connotation of test automation, classification and selection of test tools, introduction to mainstream products of test tools IBM - Rational The overall solution of the product, the overall solution of Mercury Interactive product, Test management tools TD Practical demonstration and guidance, functional test tool Robot practical demonstration and guidance scripting language perl Practical demonstration and guidance performance testing tool LR
VNetwork basics: protocol concepts, common Network Protocol And level TCP/IP protocol , ARP protocol and other message analysis, common Network element Equipment and working principle, commonly used network operation related commands Client Server model Bag grabbing tool use
VDatabase Introduction and SQL Statements: database system Concept data management Of Development stage Features of database system , SQL overview, SQL Data definition Function, SQL data query function, SQL Data modification Function Embedded SQL
v Linux Introduction to operating system and common commands: introduction to Linux system, history and development of Linux system, characteristics of Linux system, installation and configuration of Linux system, usage of Linux system commands, file and directory operation commands File compression Command online help Command Process management Commands for
V Organizing and managing the test team: ISO based testing management system Composition, status and responsibility of test team, composition of test team, management and development of test team
v software test Project management: overview of software test project management, organization of software test project Process management , software test project resource management , test item Progress management , Test Project risk management Quality and configuration management Management of software test documents
V Understanding CMM: KPA Introduction, five levels of CMM and Key Process Area Introduction to CMM examples, CMM development CMMI Level 2 detailed explanation
V Software tester Opportunities and challenges
V Status quo of software testing positions in IT industry
What does a software testing position really do
V Background of software testing industry
V What software testers need basic quality
v software test What engineers need to know Technical skills outline
Opportunities and challenges for later development of software testers
Appendix( Basic skills Version, this content is Huawei Specify training content):
1、 Basic skills:
Unix/Linux operating system:
1. Be familiar with UN Ⅸ environment
2. Master UN Ⅸ common commands
3. Understand and master some common commands of Vi
4. Understand the basic shell
Informix:
1. Be familiar with and master common commands of informix
2. Master some knowledge about SQL
Oracle:
1. Master the basic operation of Oracle
2. Master the installation under the unix/Linux system Oracle Database
2、 Basic knowledge of network
1. Be familiar with TCP/IP, HTTP UDP agreement
2. Master common Network command
3. Familiarity and learning of bag grabbing tools
3、 Test Theory
1. Software and its development process
software test Basic concepts and methods of
3. Quality assurance and strategy
4. Test basis and specification
5. Unit test
6. Integration test and system test
7. Acceptance test
8. Based on application server Test of
test plan Development Use Case Design and implementation of, defect tracking
4、 Simulation project exercise
1. Understand requirements, design test cases and review test cases
2. Test execution
3. Bill of Lading Specification
Requirements, use case templates, and test versions of simulation projects.