Software Testing Engineer means to understand the functional requirements of the product, test it, and check the software for defects (bugs),testing softwareWhether it has robustness, security, operability and other performance, and write the correspondingtest specificationandtest caseSpecialized 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.
They can be divided into three categories according to their level and position:
Senior software test engineer, proficientsoftware 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 softwareTest Engineer, write software test plans and test documents, and work with the project team to developWork 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, includingdivision manager、product manager, Project ManagerSystem analyst, programmerTest Engineer, quality assurance personnel, etc.sosoftware test The engineer is just a role in software project development.
Undertaken by the test engineerTask Roledecisionjob contentAnd 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, themanagerial 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 necessarysoftware tool。
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 avoidfollow-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 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 fasterSoftware error。
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 notOwn business。We must try our best to accomplish our own tasks and not do things that do not belong to us.
For better performancesoftware 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 improvedsoftware quality, because mostSoftware errorAll 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 softwareProject teamThe 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 finishedtest 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 newSoftware error, company leaders or project managers may add fault toSoftware testerBecause they agreed to release the software.Generally, the right to release software is provided by the product manager, project managerTest Manager, market managersDiscussion and decision。
software test Engineers must report errors and sometimes analyze the types, characteristics and causes of errors.However, do not actively propose improvementsSoftware processThe 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 improvementThe 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 clarifyExpected resultsDifference 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 verifysoftware systemWhether the requirements of software users are met.
Various stages of software testing career development
2. Testing needs to run through the whole software developmentlife cycle。completesoftware test Work includes unit testing, integration testingConfirmation testAnd 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 softwareArchitecture 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 meetuser 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 goodLiteracyAnd languageorganization skills。
4. Testers need to analyze software quality.After testing, testers need to analyze software quality according to the test results, includingDefect rate, defect distribution, defect repair trend, etc.Give various kinds of softwareMass characteristicsIt 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 processIn order to better organize and implement the test work, the test leader needs to formulatetest plan, including test resources, test progress, test strategy, test methodtest tools, test risk, etc.
6. In order to test better and more effectively, testers should ensure thatQuality of work, you need to design the test first before executing the testUse CaseAnd 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 improvework efficiencyOr 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 writeTest script, proceedperformance testing Etc.
8. The person in charge of testing also needs to make continuous improvement according to the actual situationTest 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 projectTechnical capability, but also have certainManagement ability。The main responsibility is to developtest plan, write test plans, monitor and manage the entireTest process。The test team leader can grow up to the manager of the test department, the quality manager, orHorizontal developmentHe 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 analysisperformance analysis Etc.testanalystNot only has strong testing technical ability, but also has database, operating system and other aspectstechnical knowledge。This kind of position has a good development space and can be developed intosystem designerEtc.
Test Engineer
The main responsibility is to write test programs and execute automated test tasks.Testers in such positions should at least reachJunior programmerBecause 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 yearWorkflowAfter understanding, you can change your job. Five or six thousand is OK.If you dobanking businessThe 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 bigOutsourcing companyGood projects, such as bank projects, are treated equallywork experienceThe 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 testingIndustry talentsThe gap is large and the employment prospect is good.Basically, supply exceeds demand.
The test is divided into three stages:Manual test, automated testingperformance 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 testingDevelopment 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 manualTest 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 womenIT career。
The older you get, the more popular you become
SoftwareTest workIt 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 yearsThe longer it grows, the more popular it becomes.
Prospect analysis
Announce
edit
Software testerThe main responsibility ofsoftware 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 shouldComputerSkills are essential.Computer professional skills mainly include three aspects:
Software programming skills should actually be one of the necessary skills for testersMicrosoftMany 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, forSoftware testerThe 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 inperformance testing Write relevant test code.Therefore, testers should have certain algorithmsDesign capability。According to the experience of senior test engineers, test engineers should at least master a language such as Java, C #, C++and the correspondingdevelopment tool。
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 varioustesting environmentIn addition, in the performance testsystem 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 basicNetwork ProtocolAnd the working principle of the network, especiallynetwork 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.andWebLogic、WebsphereThe installation and configuration of middleware also need to be mastered in many cases.
data baseKnowledge 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 MySQLSqlserver, 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, bankinge-government, e-commerce and other industriesproduct 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 productoperation flow Can be determinedProduct FunctionsWhether 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 moreSoftware defectsThe 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.
fourconscientiousness: 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 haveteam workSpirit, and should learn to be tolerant to others, learn to understand "developers", and respect theirLabor achievements——Developed products.
requirement
Sketch Map
1、Quality awareness: Quality awareness must run through all aspects of software testing.Understand functional requirements and writeTest 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 andReproducibility。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 oneMemory addressThe 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 theoryIs unchanged.Requirements documents, design documents, and production according to documentstest case(Divide equivalenceBoundary 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 testingconstructiveHowever, 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 improvedFinal settlementQuestion.
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 engineeringSkills 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 ofCoordination capacityAnd Superman like coffee consumption all night long, constantly designing andTest procedure"Experts".This phenomenon does exist, but you only have to understandsoftware developmentThe real process, will be a professional.
Where to start
Go to the library first.You need to buildsoftware 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 ofSoftware 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 skillsproject 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, butsoftware 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 andUnsuccessful), and leading software development and testingbasic 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 coverssoftware 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...%2ebugNet% 2ecom) is aboutSoftware defectsOnline 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 networksoftware 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 readingsource codeHowever, 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 computersprogramIt's the simplest thing.Remember I said "start learning".SoftwareProgramming environment, for exampleMicrosoft WindowsFoundation Classes (MFC) or Sun'sJava 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 MicrosoftVisual 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 PCprogramming languageYou actually bought an integrated development system orIDE。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 parameterscontrol structure, objects, I/O and more importantly Visual Basicerror correctionWhen dealing with each other, you can start to learn the C language.Learning C can make you familiarhexadecimalSystem, through pointer allocation and reference memory, access individual body bit codes and createProgram module。
I always thought I was learningJavaIt'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 useVisual C++IDE writes C programs from scratch, but it is better to learn C in Unix system.
Operating system knowledge.You have given it toRedmond, the people in Washington.In just a few years,Windows NTIt 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 yourSystem structureDatabase of all aspects of.)I found that Peter Norton wrote InsideWindows NT 4.0(SAMS, 1998) is a good introduction book.However, if your app orsystem requirements With high confidentiality, output, reliability and flexibility, Unix is still the best choice.
If you want to be a successfulsoftware engineerYou 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 networkLinuxCopy.(You can buy one at a price of about 29 yuanCD-ROMWith 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 orLinuxSystem.What should you learn
Able to write computer programs but unable to write a complete sentencesoftware engineeralso.But unfortunately, to be a successfulsoftware 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 StrunkJr.And EB. 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 planProvide guidance and turn test design into step guidance for setting, implementing test and evaluating results.With general software andProduct characteristicsEngineers 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 organizeProduct definitionInformation 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 planEmphasize 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 testDesign informationSource, especially for new versions of old products, isRelated productsOr previoustest plan。When creating a new version, the old version ofSoftware test planShould 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 companyPublic archivesPart 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 obviousSave timeThe longest document.Test plan andTest reportIt 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 executedtest plan, it is almost impossible not to encounter defects that will hinder at least some tests and must be solved.OneTest EngineerIt 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 eraDynamic development of requirements andTest modeIt is more and more important for test engineers to make an organizational way of work.In the whole development processtesting softwareMay continue to improve.The test engineer must consider these changes when planning and implementing the test, and must controltesting environmentTo guarantee the test resultsEffectiveness。
Remember that planning is a verb.As asoftware engineerYou 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'sFunction definitionAs required.staytest planQuantify the test and its expected and actual results during the test, and provide information toProject 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.yesProduct testingIt must evolve with the evolution of products.
practical experience
Announce
edit
(Hands On Experience) This is a typicalDilemma。You needsoftware 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 favoriteWeb search engineGo 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 toproduct 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 toFreewareThey 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.staysoftware 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 andtest 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
Onesoftware engineerDo 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 canOne timeThe 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 andQAThe 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 tightNo investigationThese 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 productbetaThe 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 readWrite ProtectFiles 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" productMarketing ManagerSoon 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 beenDevelopment programEvery 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.
"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 timeproject cycleAny point and any file may be correct or incorrect, so the test engineer mustOperating modeBy observing, talking with developers and other project personnel, or reviewing relevant or seemingly less relevant documentsAccuracy。
Overall understanding of products
In a program project,Software Development EngineerMainly focus their energy and attention on their own projects.As a result, when these projects are partially combined for testingcompatibilityProblems.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 beOverall productExpert in operation.For example, if the tested product is a product similar toMicrosoft OfficeThe test engineer must understand the operation of each program, the interaction between each program and other software, hardware andsoftware 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.HereItem testTest 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 needstragicAn example ofAmerican AirlinesThe company's Flight 965 was launched in 1995ColumbiaA crash in Cali.During the flight landing, the air signal control system instructs the crew to move towards an aviation called "Rozo"Signal lampFly.This signal light is onAeronautical chartThe bid is awarded as R.The crew enters R into theFlight management computerIn, 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.AutopilotTurn 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.Sometimescompetitor's product has functions that your product does not have.In many cases, the customer's orProspectsThe requirements of need to change.An example of the combination of these factors is MicrosoftInternet ExplorerCompetition 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 orRational 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 rememberAttackerOfentirety, 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 managerproject 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 toA QA manager who wants to delay the product delivery date has worked.His goal is not to make the product successful, butpolitical powerManipulation 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 officecubicleOne 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 tofood chainThe 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 supplementsNetwork 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 qualitySoftware testerOfrequirementIt is also getting bigger and biggerNorth AmericaIt 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.
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 protocolAnd DNSActive DirectoryAnd 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 andTest scriptLay the foundation of language.The course mainly includes the grammar and program of C languageBasic structure, function, pointer, arraydata 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 analysisProgram errorAbility.Learning memory at the same timeInspection toolsandSoftware configuration managementAnd 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 andprioritySo 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 thesoftware test Relevant basic knowledge.
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, includingEquivalence class division、Boundary value analysisCause and effectGraphic 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 functionsGUIInterfaceDocument 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 planAndSoftware defects》Throughout the course“software test Engineer management system "to prepare test plan and testDesign and development, implement testing and test evaluation projects, and increase students' experience in software testing.
This course mainly explains how to build Linuxtesting environmentKnowledge 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.), LinuxSoftware development environmentSo 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 databaseHTML、 XML 、HTTP、 J2EE 、.NETAnd other basic knowledge, so that students can master these technologies to facilitate the establishment of distributed softwaretesting environment。The database focuses on SQL Server, and also introduces Oracle andMySQLDatabase.
This is the last course. This course is mainly to guide students to complete a project by using the previous coursesTest processSo as to consolidate the knowledge learned.In this course, the division of labor and writing will be completedtest plan, WriteWork logAND ONRegular meetingsDesign testUse CaseThe process of performing tests, filling in and handling defect reports.The project used is carried out in three versionsregression 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 trainingCOT courseCareer oriented training refers to career guidance for students, including employment guidance and pre employment guidance.Through career guidance andEmployment CommissionerDaily auxiliary training, such as the symposium between employment stars and students, clarifies the employment direction and further understands the employment form.Detailed introductionHow to write a resume, through intensive interview training, andMock interviewAnd other ways to improve the ability of students to respond to interviews, so as to strengthen the studentsEmployment competitiveness。
V Software testing concept:Software Crisis Background of software testing,Software defectsWhat, software testing career development,Software testerQuality 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 testing process: software testing process, general testingDocument TemplateClassification of software testingsoftware packageMass 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 testingProduct specificationVerification of instructions
V Type specificsoftware test :object-orientedSoftware testing, characteristics of object-oriented software, levels of object-oriented testing anddata stream, object-oriented unit testing, object-oriented integration testingapplication 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 softwareLocalization testing : What isSoftware Localization Translation problems of software localization, technical problems of software localization testing, and key points of localization testing
3、 Practice of software testing
vtesting environmentDeployment of: importance of test environment, elements of test environment, establishment ofTesting laboratoryMaintenance and management of test environment
V Report findingsSoftware defects: Description of software defects, information related to software defects, processing and tracking of software defects
V Software test automation: connotation of test automation, classification and selection of test tools, introduction to mainstream products of test toolsIBM-RationalThe overall solution of the product, the overall solution of Mercury Interactive product,Test management toolsTDPractical demonstration and guidance, functional test tool Robot practical demonstration and guidancescripting language perlPractical demonstration and guidanceperformance testing toolLR
vLinuxIntroduction 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 commandsFile compressionCommandonline helpCommandProcess managementCommands for
V Organizing and managing the test team: ISO based testingmanagement systemComposition, status and responsibility of test team, composition of test team, management and development of test team
V Understanding CMM:KPAIntroduction, five levels of CMM andKey Process AreaIntroduction to CMM examples, CMM developmentCMMILevel 2 detailed explanation