Issues in Testing Classes:
Additional testing techniques are, therefore, required to test these dependencies. Another issue of
interest is that it is not possible to test the class dynamically, only its instances i.e, objects can be
tested. Similarly, the concept of inheritance opens various issues e.g., if changes are made to a
parent class or superclass, in a larger system of a class it will be difficult to test subclasses
individually and isolate the error to one class.
In object-oriented programs, control flow is characterized by message passing among objects, and
the control flow switches from one object to another by inter-object communication. Consequently,
there is no control flow within a class like functions. This lack of sequential control flow within a
class requires different approaches for testing. Furthermore, in a function, arguments passed to
the function with global data determine the path of execution within the procedure. But, in an
object, the state associated with the object also influences the path of execution, and methods of a
class can communicate among themselves through this state because this state is persistent
across invocations of methods. Hence, for testing objects, the state of an object has to play an
important role.
Techniques of object-oriented testing are as follows:
1. Fault Based Testing:
   This type of checking permits for coming up with test cases supported the consumer
   specification or the code or both. It tries to identify possible faults (areas of design or code that
   may lead to errors.). For all of these faults, a test case is developed to “flush” the errors out.
   These tests also force each time of code to be executed.
   This method of testing does not find all types of errors. However, incorrect specification and
   interface errors can be missed. These types of errors can be uncovered by function testing in
   the traditional testing model. In the object-oriented model, interaction errors can be uncovered
   by scenario-based testing. This form of Object oriented-testing can only test against the client’s
   specifications, so interface errors are still missed.
2. Class Testing Based on Method Testing:
   This approach is the simplest approach to test classes. Each method of the class performs a
   well defined cohesive function and can, therefore, be related to unit testing of the traditional
   testing techniques. Therefore all the methods of a class can be involved at least once to test
   the class.
3. Random Testing:
   It is supported by developing a random test sequence that tries the minimum variety of
   operations typical to the behavior of the categories
4. Partition Testing:
   This methodology categorizes the inputs and outputs of a category so as to check them
   severely. This minimizes the number of cases that have to be designed.
5. Scenario-based Testing:
   It primarily involves capturing the user actions then stimulating them to similar actions
   throughout the test.
   These tests tend to search out interaction form of error.
Difference between System Testing and Integration Testing
System testing and integration testing are two critical types of software testing that are used to
ensure the quality and reliability of software products.
Integration testing is a type of testing that focuses on verifying the interfaces and interactions
between software components or modules. It is conducted after unit testing and ensures that the
individual components are integrated correctly and work together as intended. The primary goal of
integration testing is to identify defects in the interfaces and interactions between software
components and ensure that the software meets the requirements and specifications provided.
On the other hand, system testing is a type of testing that verifies the software’s behavior and
functionality as a whole system. It is conducted after integration testing and ensures that all the
individual components of the system are working together as intended. The primary goal of system
testing is to identify defects in the system and ensure that it meets the requirements and
specifications provided.
Both integration testing and system testing play a critical role in the software development
lifecycle. Integration testing helps to ensure that the individual components are integrated correctly
and work together as intended, while system testing helps to ensure that the software functions
correctly as a whole system.
System Testing: While developing a software or application product, it is tested at the final stage
as a whole by combining all the product modules and this is called as System Testing. The primary
aim of conducting this test is that it must fulfill the customer/user requirement specification. It is
also called an end-to-end test, as is performed at the end of the development. This testing does
not depend on system implementation; in simple words, the system tester doesn’t know which
technique between procedural and object-oriented is implemented. This testing is classified
into functional and non-functional requirements of the system. In functional testing, the testing is
similar to black-box testing which is based on specifications instead of code and syntax of the
programming language used. On the other hand, non-functional testing, checks for performance
and reliability by generating test cases in the corresponding programming language.
Integration Testing: This testing is the collection of the modules of the software, where the
relationship and the interfaces between the different components are also tested. It needs
coordination between the project-level activities of integrating the constituent components at a
time. The integration and integration testing must adhere to a building plan for the defined
integration and identification of the bug in the early stages. However, an integrator or integration
tester must have programming knowledge, unlike a system tester.
Difference between System Testing and Integration Testing :
 S.
No.
           Comparison                     System Testing                   Integration Testing
                                                               Validates the collection and
 1.             Basic              Tests the finished product.     interface modules.
 2.         Performed                After integration testing              After unit testing
                                 Understanding of the internal Knowledge of just
                                 structure and programming interlinked modules and
 3.          Requires                     language.            their interaction.
                                                                          System functionalities
                                 On the behavior of all module              interface between
 4.          Emphasis                     as a whole.                      individual modules.
                                    Functional as well as non-
 5.            Covers                   functional tests.                Only functional testing.
                                                                          Build to simulate the
                                    Created to imitate real life        interaction between two
6.         Test cases                      scenarios.                           modules.
                                                                    Sanity, regression, usability,
                                    big-bang, incremental and       retesting, maintenance and
7.        Approaches                       functional.                   performance tests.
                                                                     By test engineers as well as
8.          Executed                 Only by test engineers.                 developers.
                                System testing aids in locating Integration testing assists in
                                 system errors and any defect locating interface errors
                                   found to be regarded as       and any defect found is of
9.       Finding errors                 system defect.            individual module only.
                          It is used to conduct both  It covers only integrated
    Functional and Non- functional and non-functional components’ functional
10.  functional Aspect              testing.                   aspects.
                                    Functional testing
                                    Scalability testing
                                    Reliability testing
                                    Security testing                   Top-down
                                    Performance testing                Bottom-up
                                    Usability testing                  Big-bang
11.             Types               Installation testing, etc.         Hybrid integration
                                                                  Integration Testing
      Feature              System Testing
                            Verify software
                                                      Verify the interfaces and interactions
                              behavior and
      Purpose                                              between software modules
                        functionality as a whole
                                system
                                                         Interactions between individual
                          Entire system as a
      Focus                                                          modules
                                whole
     Test                   Production-like          Simulated and controlled environment
 Environment                 environment
                                                              Emphasis on testing module
                         Emphasis on end-to-
Test Scenarios                                                      interactions
                           end scenarios
                                                           Uses test data to simulate module
                          Uses standard and
    Test Data                                                         interactions
                            realistic data
                           Conducted over a               Conducted over a shorter duration
 Test Duration
                            longer duration
                                                               Identifies defects in module
                        Identifies defects and
    Outcome                                                             interactions
                         bugs in the system
    Testing             Black-box and White-
                                                            Black-box and White-box testing
  Techniques                 box testing
                           Comprehensive
 Test Execution                                           Incremental approach, testing one
                        approach, covering all
   Approach                                                      module at a time
                           functionalities
                           Test management                  Test management tools, defect
   Tools and
                         tools, defect tracking                     tracking tools
 Technologies
                                 tools
                        Focuses on functional              Focuses on risks associated with
     Risk and
                        and operational risks                   module interactions
     Impact
                            and impacts
Web Testing?
Web Testing, or website testing is checking your web application or website for potential bugs
before its made live and is accessible to general public. Web Testing checks for functionality,
usability, security, compatibility, performance of the web application or website.
During this stage issues such as that of web application security, the functioning of the site, its
access to handicapped as well as regular users and its ability to handle traffic is checked.
Usability testing:
Usability Testing has now become a vital part of any web based project. It can be carried out by
testers like you or a small focus group similar to the target audience of the web application.
Test the site Navigation:
Menus, buttons or Links to different pages on your site should be easily visible and consistent on
all webpages
Test the Content:
Content should be legible with no spelling or grammatical errors.
Images if present should contain an “alt” text
Tools that can be used: Chalkmark, Contentsquare, and Clixpy
3.Interface Testing:
Three areas to be tested here are – Application, Web and Database Server
      Application: Test requests are sent correctly to the Database and output at the client side
       is displayed correctly. Errors if any must be caught by the application and must be only
       shown to the administrator and not the end user.
      Web Server: Test Web server is handling all application requests without any service
       denial.
      Database Server: Make sure queries sent to the database give expected results.
Test system response when connection between the three layers (Application, Web and
Database) cannot be established and appropriate message is shown to the end user.
Tools that can be used: Ranorex
Database Testing:
Database is one critical component of your web application and stress must be laid to test it
thoroughly. Testing activities will include-
      Test if any errors are shown while executing queries
      Data Integrity is maintained while creating, updating or deleting data in database.
      Check response time of queries and fine tune them if necessary.
      Test data retrieved from your database is shown accurately in your web application
Tools that can be used: QTP, Selenium
5. Compatibility testing.
Compatibility tests ensures that your web application displays correctly across different devices.
This would include-
Browser Compatibility Test: Same website in different browsers will display differently. You need
to test if your web application is being displayed correctly across browsers, JavaScript, AJAX and
authentication is working fine. You may also check for Mobile Browser Compatibility.
The rendering of web elements like buttons, text fields etc. changes with change in Operating
System. Make sure your website works fine for various combination of Operating systems such as
Windows, Linux, Mac and Browsers such as Firefox, Internet Explorer, Safari etc.
Tools that can be used: Dynatrace
6. Performance Testing:
This will ensure your site works under all loads. Software Testing activities will include but not
limited to –
      Website application response times at different connection speeds
      Load test your web application to determine its behavior under normal and peak loads
      Stress test your web site to determine its break point when pushed to beyond normal loads
       at peak time.
      Test if a crash occurs due to peak load, how does the site recover from such an event
      Make sure optimization techniques like gzip compression, browser and server side cache
       enabled to reduce load times
Tools that can be used: Loadrunner, JMeter
7. Security testing:
Security Testing is vital for e-commerce website that store sensitive customer
information like credit cards. Testing Activities will include-
      Test unauthorized access to secure pages should not be permitted
      Restricted files should not be downloadable without appropriate access
      Check sessions are automatically killed after prolonged user inactivity
      On use of SSL certificates, website should re-direct to encrypted SSL pages.
Intruder
Intruder is a powerful vulnerability scanner that will help you uncover the many
weaknesses lurking in your web applications and underlying infrastructure. Offering
industry-leading security checks, continuous monitoring and an easy-to-use
platform, Intruder keeps businesses of all sizes safe from hackers.
Features
      Best-in-class threat coverage with over 10,000 security checks
       Checks for configuration weaknesses, missing patches, application
        weaknesses (such as SQL injection & cross-site scripting) and more
       Automatic analysis and prioritisation of scan results
       Intuitive interface, quick to set-up and run your first scans
       Proactive security monitoring for the latest vulnerabilities
       AWS, Azure, and Google Cloud connectors
       API integration with your CI/CD pipeline
Post Deployment Testing in Software Testing
Post-deployment testing is a type of testing in which the software is tested after it is deployed to
production. This testing may help us find those problems that were not detected before
its deployment in the production and despite all the planning and testing carried out before the
final deployment, obtaining user opinion is important for the improvement of a website. It
ensures that the website adapts to the needs of the user. User feedback may come in various
forms, ranging from reporting faults to suggestions for improvement of the website.
Need for Post-Deployment to get Testing
What do we need to test the application post its deployment and how? There are various ways
to get the user’s feedback about the software application but the effective way to know the
opinion is by getting a survey form filled out by every user because these survey forms can be
used to detect the latest trends from the users and also provide some good information about
the software improvement. The response obtained from these surveys may help the tester or
developer some improvements in their app.
Now after receiving the user feedback, the testers need to identify the useful fault reporting,
suggestions, and recommendations that the users have given. For these given things the
following criteria can be used to check which feedback is more important:
1. Calculating the total users that have given the same feedback or recommendation. If the
     feedback is not very popular among the group of users, then we must think twice before
     implementing their suggestions in the software.
2. Are the users fake or Real? It is vital to make sure that the Source of feedback: and
     suggestions come from regular users and not accidental users.
3. Is the suggested idea worth implementing? Before implementing the suggested changes,
     the cost and schedule must be analyzed carefully and there should be a thorough check of
     the correctness of the proposed change and its impact on the application. The benefits of
     implementing the suggested changes in the software must be determined by the testers or
     developers.
4. Will the feedback or recommendation increase its impact on the software? Is the
     recommendation compatible with other features also? Getting this feedback is very
     significant and answering them is very crucial and making the results of implementing
     these recommendations are sometimes unpredictable.
Post-Deployment Deployment to Testing Activities
   Post-deployment verification: Firstly, the QA or Test lead conducts the
    verification of the software application as per the need and its requirement
    and these are generally the test plans and the test cases of the software
    application which are compared from the previous or existing test plan and
    test cases.
   Reporting the post-deployment verification results: After verifying the
    above cases, the results with all the necessary information are then told to
    the clients and if they find any issues/defects in the production then the
    issues are told to the test lead, and further new testing will be conducted.
   Removing the test data: Once the results are positive, the test data that
    was used in the post-deployment testing are then removed from the process.
   Monitoring the application: Finally, if there’s any need for monitoring the
    application in the production then that is also done.