Friday, October 20, 2023

Software Testing | Tutorial (SDLC Models)

 


 SDLC Life Cycle Models


There are various SDLC life cycle models used to run the development project. They all consist of the same basic steps we’ve mentioned above ,which are equally important. The main difference between the models is that they all plan the necessary development activities and steps in different ways.

         image : sdlc model

1. Waterfall model

SDLC Waterfall model is a linear and sequential software development model in which project phases follow one another. The process goes forward like water in a cascading waterfall, hence the name Waterfall. The model presupposes that the team moves one step at a time making sure their work is complete before going to the next phase. It means that first, the team should gather all the requirements for the whole project. After the requirements are fully defined, the team is ready to go to the design stage, where all the documents describing how to implement these requirements are created. The Waterfall model requires very strong documentation – goals, specifications, and tasks have to be as precise as possible.

After that, the developers are ready to do their job – transform requirements into the working product. When the coding stage is over, the product is tested to reveal possible errors and inconsistencies. This gives a team the possibility to finetune the software, eliminate all shortcomings and prepare the product for deployment. The working software product is then demonstrated to the customer.


     image: waterfall model


Waterfall Methodology can be used when:

Requirements are not changing frequently

Application is not complicated and big

Project is short

Requirement is clear

Environment is stable

Technology and tools used are not dynamic and is stable

Resources are available and trained



Advantages -

- Before the next phase of development, each phase must be completed.

- Suited for smaller projects where requirements are well defined.

- Project is completely dependent on project team with minimum client intervention.

- Any changes in software is made during the process of the development.


Dis-Advantages -

- Error can be fixed only during the phase.

- It is not desirable for complex project where requirement changes frequently.

- Small changes or errors that arise in the completed software may cause a lot of problems.

Thursday, October 19, 2023

Software Testing | Tutorial

What is Software Testing

Software testing is the process of checking the quality, functionality, and performance of a software product before launching. To do software testing, testers either interact with the software manually or execute test scripts to find bugs and errors, ensuring that the software works as expected. Software testing is also done to see if business logic is fulfilled, or if there are any missing gaps in requirements that need immediate tackles. 


 Why is Software Testing Important?

The road of software development is bumpy, and products can always be vulnerable to bugs and defects. It is necessary to ensure that software works as expected before being released to the market. Here are several reasons why software testing is essential:

1. Detecting defects for the development team to address

The end goal of software testing is always to uncover bugs and defects. Modern software is built from highly interconnected components that must work together seamlessly to deliver the intended functionality. One broken component can create a ripple effect and break the entire app. The sooner the broken code is fixed, the smaller the impact. A good testing process in place ensures that a higher quality and more reliable product is always delivered on time.

2. Maintain and enhance product quality

Product quality is more than just the absence of bugs. When we think of quality, we think of the characteristics that not only meet but also exceed customer expectations. An application is expected to perform the functions it was intended for, but it can only achieve the status of “high-quality” when it goes above and beyond those expectations. From this perspective, software testing is the key to quality, for the following reasons:

Maintain :

Regression testing to ensure that the quality is always kept at a consistent standard after adding new code

Periodic usability, compatibility, and security testing to ensure that these aspects of the software are kept well under check

Provide insights on product quality for the dev team to continuously update documentation.

Enhance :

Identify and address bugs to make the software more reliable

Identify areas for optimization and improvement

Ensure that software functionality work as expected

Ensure that the software aligns with user feedback

Ensure software compatibility across platforms and environments.


Benefits of Software Testing

1. Customer Satisfaction

The prime goal of any service-based organization is to serve the best features and experience to their customers, customer satisfaction is the only goal for the success and popularity of an application. 

Software testing helps in building the trust and satisfaction of the customer by assuring a defect-free application.

UI testing enhances customer satisfaction. Software Testing tries to uncover all possible defects and test an application as per customer requirements. 

For example, E-Commerce is dependent on the customer, and a satisfied customer will improve its market value and earnings.

2. Cost Effective

If an application works without any fault and with low maintenance will save a big amount for the owner. 

Software testing helps in early defect detection and fixing them to make a more successful and good return application. 

Every application demands maintenance and the application owner spends a good amount to maintain the working and functionality of the application. 

By testing an application, the maintenance area reduces too many folds and hence saves money.

3. Quality Product

The main focus of software testing is to deliver a quality product to its clients which results in a satisfied client. The quality of a product can only be maintained when it is bug-free and meet all the user requirements. 

4. Low Failure

Failure of an application impacts its working and brand value. Software testing helps in knowing the cases where a particular application is most likely to fail. 

5. Bug-Free Application

The main task of software testing is to identify bugs and inform them the concerned developing team to fix. When a bug is fixed, testers recheck the bug to identify its status.

100% bug-free application is practically not possible but the testing team tries to identify as many as possible bugs in the application by creating test scenarios. Software testing follows the STLC process to detect a bug. 

6. Security

The main concern of the digital world is Security. A secure system always remains on the priority list of customers. Owners pay multiple dollars to make their systems secure from hackers, malicious attacks, and other thefts. Security testing technique is used to identify the security level of the application and testers try to find loopholes to break the security of an application.



Software Testing | Tutorial

Types of Software Testing

So, as we all know that Testing is the process of executing a program to find errors. To make our software perform well it should be error-free.

there is a basic types of software testing are as follows :

Unit Testing

Integration Testing

System Testing

Acceptance Testing

Performance Testing

Security Testing

Usability testing

Compatibility testing




1. Unit Testing

Unit testing is a software development process in which the smallest testable parts of an application, called units, are individually scrutinized for proper operation. Software developers and sometimes QA staff complete unit tests during the development process.

Unit testing is an important step in the development process. If done correctly, unit tests can detect early flaws in code which may be more difficult to find in later testing stages

It helps to identify bugs early in the development process before they become more difficult and expensive to fix.

It helps to ensure that changes to the code do not introduce new bugs.

It makes the code more modular and easier to understand and maintain.

It helps to improve the overall quality and reliability of the software. 


2. Integration Testing

Integration Testing is a type of testing where software modules are integrated logically and tested as a group.

It is a method of testing how different units or components of a software application interact with each other. It is used to identify and resolve any issues that may arise when different units of the software are combined.

Integration testing is done after unit testing and before functional testing.

also, it is used to verify that the different units of the software work together as intended.

There are different ways of Integration Testing that are-


Top-down integration testing: It starts with the highest-level modules and differentiates them from lower-level modules.

Bottom-up integration testing: It starts with the lowest-level modules and integrates them with higher-level modules.

Big-Bang integration testing: It combines all the modules and integrates them all at once.

3. System Testing

System Testing is a level of testing that validates the complete and fully integrated software product. The purpose of a system test is to evaluate the end-to-end system specifications. It is carried out on the whole system in the context of either system requirement specifications or functional requirement specifications or in the context of both. The software is tested such that it works fine for the different operating systems.

It is covered under the black box testing technique.


4. Acceptance testing

Acceptance testing is done by the customers to check whether the delivered products perform the desired tasks or not, as stated in the requirements. We use Object-Oriented Testing for discussing test plans and for executing the projects.

Improved software quality and reliability.

Early identification and fixing of defects.

Improved customer satisfaction.

Increased stakeholder confidence.

Reduced maintenance costs.

It has types like-

Alpha Testing

Alpha testing is a type of validation testing. It is a type of acceptance testing that is done before the product is released to customers. It is typically done by QA people. 

Beta Testing

The beta test is conducted at one or more customer sites by the end-user of the software. This version is released for a limited number of users for testing in a real-time environment.

5.Security Testing 

It is a type of Software Testing that uncovers vulnerabilities of the system and determines that the data and resources of the system are protected from possible intruders. It ensures that the software system and application are free from any threats or risks that can cause a loss. Security testing of any system is focused on finding all possible loopholes and weaknesses of the system which might result in the loss of information or repute of the organization. Security testing is a type of software testing that focuses on evaluating the security of a system or application. The goal of security testing is to identify vulnerabilities and potential threats, and to ensure that the system is protected against unauthorized access, data breaches, and other security-related issues.

Principle of Security Testing: Below are the six basic principles of security testing:

Confidentiality

Integrity

Authentication

Authorization

Availability

Non-repudiation


6. Performance Testing

Performance Testing is a software testing process used for testing the speed, response time, stability, reliability, scalability, and resource usage of a software application under a particular workload.

Speed – Determines whether the application responds quickly

Scalability – Determines the maximum user load the software application can handle.

Stability – Determines if the application is stable under varying loads


Types of Performance Testing

Load testing – checks the application’s ability to perform under anticipated user loads. The objective is to identify performance bottlenecks before the software application goes live.

Stress testing – involves testing an application under extreme workloads to see how it handles high traffic or data processing. The objective is to identify the breaking point of an application.

Endurance testing – is done to make sure the software can handle the expected load over a long period of time.

Spike testing – tests the software’s reaction to sudden large spikes in the load generated by users.

Volume testing – Under Volume Testing large no. of. Data is populated in a database, and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes.

Scalability testing – The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.

Performance Testing perform the right format -


7. Usability testing

Usability testing is a method of evaluating how simple a design is to use by observing how users interact with a product. This allows researchers to spot design flaws, determine whether or not users enjoy the product, and if they find it easy to use. 

When designing a product or system, usability testing allows researchers to assess a product's usability with greater amounts of data, and find solutions to any problems that may arise. 

Usability testing can occur at various stages to test each iteration of a product, from the initial development to its release. This allows researchers to address problems early on when they are more manageable. 

Benefits of usability testing

Usability testing allows for numerous benefits for producing a quality product. The following are some advantages of usability testing:

* Provides an opportunity to catch minor errors and make improvements

* Helps gain an unbiased perspective for products 

* Performing a usability test is a relatively simple process

* Provides insight as to how easy it is to complete certain tasks and how long it takes.

Types of Usability testing are as :

1.Exploratory testing

Exploratory testing is an approach to software testing that is often described as simultaneous learning, test design, and execution. It focuses on discovery and relies on the guidance of the individual tester to uncover defects that are not easily covered in the scope of other tests. 

Advantages

This testing is useful when requirement documents are not available or partially available

It involves Investigation process which helps find more bugs than normal testing-

Uncover bugs which are normally ignored by other testing techniques

Helps to expand the imagination of testers by executing more and more test cases which finally improves productivity as well

This testing drill down to the smallest part of an application and covers all the requirements

This testing covers all the types of testing and it covers various scenarios and cases

Encourages creativity and intuition

Generation of new ideas during test execution

Disadvantages

This testing purely depends on the tester skills

Limited by domain knowledge of the tester

Not suitable for Long execution time


2.Cross-browser testing

Cross browser testing involves comparing and analyzing the behavior of your website in different browser environments. It helps ensure that your website delivers an optimal user experience, independent of the browser used to access it.

Web-based applications are totally different from Windows applications. A web application can be opened in any browser by the end user. For example, some people prefer to open https://twitter.com in Firefox browser, while other’s can be using Chrome browser or IE.

3. Accessibility Testing

Accessibility Testing is defined as a type of Software Testing performed to ensure that the application being tested is usable by people with disabilities like hearing, colour blindness, old age, and other disadvantaged groups. It is a subset of Usability Testing.


8. Compatibility Testing

Compatibility Testing is a type of Non-functional testing. Compatibility Testing is a type of Software testing to check whether your software is capable of running on different hardware, operating systems, applications, network environments or Mobile devices.

There are two types of version checking in Compatibility Testing :

Backward Compatibility Testing is a technique to verify the behaviour and compatibility of the developed hardware or software with their older versions of the hardware or software. Backward compatibility testing is much predictable as all the changes from the previous versions are known.

Forward Compatibility Testing is a process to verify the behaviour and compatibility of the developed hardware or software with the newer versions of the hardware or software. Forward compatibility testing is a bit hard to predict as the changes that will be made in the newer versions are not known.












































Sunday, October 15, 2023

Software Testing | Tutorial

I wish you all a Happy Navratri!

May the nine avatars of Maa Durga bless you with nine qualities – power, happiness, humanity, peace, knowledge, devotion, name, fame, and health.



Software Testing Lab|Tutorial

  Happy Dussehra everyone..!