STQA UNIT-1 reference - Lecture notes 1 PDF

Title STQA UNIT-1 reference - Lecture notes 1
Course Software Verification, Validation and and Testing
Institution Guru Gobind Singh Indraprastha University
Pages 32
File Size 1.9 MB
File Type PDF
Total Downloads 59
Total Views 149

Summary

Notes according to IP Syllabus. Summary for UNIT 1...


Description

SOFTWARE TESTING AND QUALITY ASSURANCE NOTES UNIT-1 Testing As An Engineering Activity Testing is the process of using a selected  , with the intent of (i) . Principle 2. When the test objective is to detect defects, then a good test case has a high probability of revealing undetected defect(s). ● Poor quality of software that can cause loss of life or property is no longer acceptable to society ● Failure can result in catastrophic losses . ● Highly qualified staff make sure that software products are built on time, within budget, and are of the highest quality ● The education and training of engineers in each engineering discipline is based on the teaching of related scientific principles, engineering processes, standards,methods, tools, measurements ● The goal and task force team is to define a body of knowledge that covers the software engineering discipline, to discuss the nature of education for this new profession and to define a code of ethics for the software engineers ● The software development should be viewed and taught as an engineering discipline. Quality is of prime importance in both the process and the product. Using an Engineering approach to software development implies that: ○ ○ ○ ○ ○ ○

The development process is well understood projects are planned life cycle models are defined and adhered to standards are in place for products and process measurements are employed to evaluate products and process quality Components are reused.

○ Validation and verification processes play a key role in quality determination ○ Engineers have proper education, training and certification

Role Of Process In Software Quality Process, in the software engineering domain, is the s, documents, activities, policies, and procedures that software engineers use to develop and maintain a software system and its , code, and manuals.

Q1) Explain Software Testing as a Process? Ans 1) T he software tester checks whether the product . They find the errors in the tests stage and try to solve them. In this way, the final product becomes free of bugs or includes a minimal number of errors. We can say that the software test improves the quality of the software. Software testing is not just a stage at the end of the software life cycle.

Software testing is an completed.

and continues after the software is

1. P This is the stage where . The is determined, and the r that are associated are assessed. The planning stage is the part where the effect of the development is determined, and

2. Creation of Scenarios It is the stage where “e and “ ” outputs are prepared according to the content of the project to be tested. In this step, the tester writes the scenarios to be applied. Test scenarios should be considered both simple and diverse. When creating test scenarios, preliminary information from the software developer or product manager is used or design and analysis documents are used. 3. Preparation of Test Environment and Data Creation This is the preparatory phase for the test. All

4. Run the Scenarios This is the stage where the tests are run. Test scenarios that have been written are applied in this step.The critical thing to note here is that the sc can be a despite the time pressure. Unfortunately, there is always a “time pressure” on testers. Time pressure is a stressful component, especially in scenarios. Planned scenarios should be fully utilized. 5. It is the stage in which the situation that occurs after all specified scenarios are applied is communicated to the person concerned. The report should use as simple a language as possible. Where possible, elements such as screenshots or d. Then there is the step of tracking the error and reaching the solution in constant communication with the software developer. This step can also be included in reporting errors.

Q2) Explain Principles of software Testing? Ans2) There are seven principles of software testing explained below:i)

-: The objective of testing is to find more and more hidden defects using different techniques and methods. Testing can reveal undiscovered defects and if no defects are found then it does not mean that the software is defect free. For ex -Consider a Banking application, this application is thoroughly tested and undergoes different phases of testing like SIT, UAT etc. and currently no defects are identified in the system. However, there might be a possibility that in the production environment, the actual customer tries a functionality which is rarely used in the banking system and the testers overlooked that functionality, hence no defect was found till date or the code has never been touched by developers.

ii)

-: Testers need to get involved at an early stage of the Software Development Life Cycle (SDLC). Thus the defects during the requirement analysis phase or any documentation defects can be identified. The cost involved in fixing such defects is very less when compared to those that are found during the later stages of testing.

iii) It is not possible to test all the functionalities with all valid and invalid combinations of input data during actual testing. Instead of this approach, testing of a few combinations is considered based on priority using different techniques. Exhaustive testing will take unlimited efforts and most of those efforts are ineffective. Also, the project timelines will not allow testing of so many numbers of combinations. Hence it is recommended to test input data using different methods like Equivalence Partitioning and Boundary Value Analysis. For ex- If suppose we have an input field which accepts alphabets, special characters, and numbers from 0 to 1000 only. Imagine how many

combinations would appear for testing, it is not possible to test all combinations for each input type.

iv) Testing is context dependent There are several domains available in the market like Banking, Insurance, Medical, Travel, Advertisement etc and each domain has a number of applications. Also for each domain, their applications have different requirements, functions, different testing purposes, risk, techniques etc. Different domains are tested differently, thus testing is purely based on the context of the domain or application. For exany e-commerce or advertising application. The risk associated with each type of application is different, thus it is not effective to use the same method, technique, and testing type to test all types of application. v)Defect Clustering: During testing, it

to a . There might be multiple reasons for this like the modules may be complex, coding related to such modules may be complicated etc. vi)

: The Pesticide Paradox principle says that if the same set of test cases are executed again and again over the period of time then these set of tests are not capable enough to identify new defects in the system. In order to overcome this “Pesticide Paradox”, the set of needs to be . If required a new set of test cases can be added and the existing test cases can be deleted if they are not able to find any more defects from the system.

vii) Absence of error: If the software is tested , then we can say that the software is 99% defect free. But what if this software is tested against wrong requirements? In such cases, even finding

defects and fixing them on time would not help as testing is performed on wrong requirements which are not as per needs of the end user. Example -suppose the application is related to an e-commerce site and the requirements against “Shopping Cart or Shopping Basket” functionality which is wrongly interpreted and tested. Here, even finding more defects does not help to move the application into the next phase or in the production environment.

SOFTWARE TESTERS The Software Testers ensure that the software In the test planning and preparation phases of the software testing, Software Testers should review and contribute to , as well as be a . Software Testers are involved in identifying test conditions and creating test designs, test cases, test procedure specifications and test data, and may automate or help to automate the tests. Some of the Software Testers duties/roles can include: They often set up the test environments or assist system administration and network management staff in doing so As test execution begins, the number of testers often increases, starting with the work required to implement tests in the test environment Testers execute and log the tests, evaluate the results and document problems found They monitor the testing and the test environment, often using tools for this task, and often gather performance metrics Throughout the software testing life cycle, they review each other’s work, including test specifications, defect reports and test results

Test Artifacts An integral part of software testing, test artifacts are the , which are then shared with the clients, team managers, team lead, and other team members and stakeholders associated with the project. The main purpose of these artifacts is to establish transparency among the team members and therefore are recorded properly with accurate information and details.These artifacts help testers know the requirements of the clients and the stakeholders as well as allows them to ensure that there is no miscommunication between them. Moreover, with the assistance of these test artifacts it becomes easy for the concerned people to track the changes in the software as well as be aware of the latest progress of the testing activities as everything is recorded properly in the form of defect report, test closure report, etc. Fault, Error and Failure 1.

Fault : Fault is a state of software caused by an error. It is a

2.

to perform

Error : The mistakes made by a programmer is known as “Error”.

Error could happen because of the following reasons i. Because of some confusion in understanding the functionality of the software. ii. iii. value, etc.

3.

Failure:

If an end failure.

issue is called a

Causes of Failure: 1. Human errors or mistakes may lead to failure. 2. Environmental conditions 3. The way in which system is used.

Software Testing Limitations Software testing is a process of executing a program or application with the intent of finding the software bugs. It can also be stated as the process of validating and verifying a software program, application, or product. Hence, making sure that it meets the business and technical requirements that guided its design and development. Likewise that it works as expected. And finally, it can be implemented with the same characteristic. Whenever we talk about technologies and some processes, every process has a set of limitations or drawbacks. Even in software development, different approaches limit themselves to some extent. Software testing which is an inherited part of the whole software development process also possesses some limitations. Read and explore areas and aspects, where software testing lacks to deliver the results.

Limitations Of Software Testing Even in software development, different approaches limit themselves to some extent. Software testing which is an inherited part of the whole software development process also possesses some limitations. 1. We use testing to disclose many hidden errors but this methodology never gu e . It is only used to It never gives any information about those defects which remain uncovered. 2. Testing does not provide you with any help when you have to make a decision either “you should release the product consisting errors for meeting the deadline” or “you should release late by compromising the deadline”. 3. Software testing does not predict or estimate the proper functioning of the product under different conditions, but it may prove to be helpful in

delivering the information w.r.t. Incorrect or improper functioning of the product. 4. While injecting the defects, software which may help in placing defects at the first place. Identifying the root causes of defects/errors helps in the injection of defects for future purposes. 5. Testing cannot be done against system requirements. We also cannot detect any errors in requirements or ambiguous requirement leads to the complete testing process to inadequate testing. 6. When it comes to major constraints like Time & Budget, it requires attentive planning of test effort. Mostly, we compromise in between thoroughness and budget at the time of testing.

Manual Testing Limitations GUI object size difference and colour combination are the two essential measures which are very difficult to find by using manual testing. The manual testing process is not suitable for large scale projects and limited-time projects. Comparing the huge amount of data will be unrealistic in terms of manual testing. It requires more time and resources to accomplish a quality goal. Many times, it requires both. When it comes to performance testing, it seems to be very impractical in terms of manual testing. With manual testing, it possesses the least accuracy. Executing recursive tests, again and again, take too much amount of time which lead to project delay and incomplete testing. GUI object size difference and colour combination are the two essential measures which are very difficult to find by using manual testing. The manual testing process is not suitable for large scale projects and limited-time projects. Comparing the huge amount of data will be unrealistic in terms of manual testing. At the time of software maintenance, processing of change requests takes a huge amount of time. It requires . Many times, it requires both.

Automated Testing Limitations Designing a perfect automation script need some solid understanding of software development principles which automation testers lack most of the time. Thus everyone follows their own standards while developing scripts. Many people who do not have a proper understanding of automation try to automate everything. But it is not possible to do so because of time constraints and budget constraints. Automation testing cannot replace manual testing. Where ever there is a change in UI, most the scripts need changes in their code and thus continuous maintenance. Testing tools are not as intelligent as human beings. Hence, they only have Many automation developers think they should develop an automated testing script which can handle all possible situations by itself without manual intervention. But by doing so, we will end up in developing another software which is again very difficult to design, develop and maintain. It is not at all suggested to develop such scripts. Every script should assume some preconditions and should therefore proceed to assume all required setup is available. Not all tools support all UI objects or all kinds of testing.

Limitations in Testing Tools The unrealistic expectation from tools. Many times, testers make mistakes by underestimating factors like time, cost, and effort for the initial introduction of the tool. Testers repeated the miscalculation of time and also the effort required to achieve a prominent amount of benefit from the tool. Testers underestimate the effort required to maintain the test assets which are generated by the tool. Testing teams are too much dependent on tools. The unrealistic expectation from tools. Many times, testers make mistakes by underestimating factors like time, cost, and effort for the initial introduction of the tool. Testers repeated the miscalculation of time and effort required to achieve a prominent amount of benefit from the tool. Testers underestimate the effort required to maintain the test assets which are generated by the tool. Testing teams are too much dependent on tools.

Q3) What are the challenges to software Testing? Ans - 3) Challenges faced by while performing software testing are as follows: Communication issues are most common in the software development lifecycle. It can be either between the clients and project managers or between the various teams working on the project. It can happen due to many circumstances such as different shifts of committed organizations, more prominent offices, different time zones of clients and developers, and many others. However, this communication gap can lead to a significant flow in the quality of the product of Complete Testing: Software products today get to build with a few million lines of codes. To make an error-free product deployment, every section of code must go through a complete testing process. However, because of the high demand for software applications in a shorter time, the software companies face the challenge of executing a whole testing process. When a product release gets closer, clients and project managers create more pressure on developers and software testers to deliver the product. That is another reason behind the absence of complete testing. Many companies today still prefer verbal communication for simple or even complex changes in the developing product. They do not maintain the required documentation that contains functional and non-functional scopes of the project. It leads to the lack of requirement gathering for the software testers as verbal communication may miss some vital information about the project. Unstable Testing Environment: In the rapid process of application development and delivery, the requirements specification changes at times. Besides, developers make changes to test environments to fix the identified issues or add new functions to be tested. Moreover, when multiple testers are involved in the testing process of a single product, it becomes challenging to keep track of all the changes made by individual members. Testing the complete application It is very difficult to test a complete application. There are millions of test combinations. It’s not possible to test each and every combination both in the Manual as well as in Automation Testing. Lack of Skilled Testers Sometimes a company selects unskilled testers or doesn’t train them well enough

for their project task in hand. These unskilled fellows may add more chaos than simplifying the testing work. This results in incomplete, insufficient and ad-hoc testing throughout the Testing  Life Cycle. Q4) What is testing and debugging differentiate between them? Ans4) Testing: Testing is the process of verifying and validating that a software or application is bug free, meets the technical requirements as guided by its design and development and meets the user requirements effectively and efficiently with handling all the exceptional and boundary cases. Debugging: Debugging is the process of fixing a bug in the software. It can be defined as the identifying, analysing and removing errors. This activity begins after the software fails to execute properly and concludes by solving the problem and successfully testing the software. It is considered to be an extremely complex and tedious task because errors need to be resolved at all stages of debugging. Difference between software testing and Debugging: Testing

Debugging

.

Testing is the Testing is done by the t There

is

.

.

for in the testing process. Testing can be done by insiders as well as outsiders. Testing can be manual or automated.

Debugging is a is

done

by .

. either

Debugging

. Debugging is done only by insiders. Outsiders can’t do debugging. Debugging is always manual. Debugging can’t be automated. It is based on different testing levels Debugging is based on different i.e. unit testing, integration testing, types of bugs. system testing etc. Testing is a stage of the software Debugging is not an aspect of development life cycle (SDLC). software development life cycle, it occurs as a consequence of testing.

Testing is composed of validation and The debugging process seeks to verificatio...


Similar Free PDFs