Manual Vs Automation Testing: Striking the Right Balance
Table of contents
- I. Introduction
- II. Pros and Cons of Manual Testing
- III. Pros and Cons of Automation Testing
- IV. Criteria for Choosing Testing Method
- V. Scenarios Favoring Manual Testing
- VI. Scenarios Favoring Automation Testing
- VII. Human Element in Manual Testing
- VIII. Technical Aspects of Automation Testing
- IX. Balancing Manual and Automation Testing
- X. Case Studies
- XI. Future Trends in Testing
- XII. Training and Skill Development
- XIII. Industry Standards and Certifications
- XIV. Collaborative Testing Environments
- XV. Challenges in Testing Complex Applications
- XVI. Regulatory Compliance and Testing
- XVII. Evaluating Test Coverage
- XVIII. Choosing the Right Tools
- XIX. Return on Investment (ROI)
- XX. Conclusion
In the ever-evolving landscape of software development, the battle between manual and automation testing has been a perennial one. Each approach brings its own set of advantages and disadvantages to the table, making the choice between them a critical decision for any development team. Let's delve into the intricacies of manual and automation testing, exploring their nuances, strengths, and weaknesses.
Fact - 80% of organizations use automation testing for functional and regression testing. The market for automation testing is also projected to grow more. The Automation Testing Market achieved a valuation exceeding $20 billion in 2022 and is anticipated to experience a compound annual growth rate (CAGR) of more than 15% from 2023 to 2032.
I. Introduction
A. Definition of Manual Testing
The concept of manual testing unfolds as a methodology wherein human testers meticulously execute test cases, devoid of the crutch of automation tools. This approach intricately depends on the tester's intuitive faculties, vast experience, and an unwavering attention to the minutiae of the testing process.
In the realm of manual testing, the human touch is irreplaceable. Testers navigate through the application or software, scrutinizing each function and feature with a discerning eye. Their expertise comes to the forefront as they rely on their intuition to uncover potential issues, ensuring a comprehensive evaluation that goes beyond the confines of automated test scripts.
The beauty of manual testing lies in its adaptability. Testers can dynamically adjust their strategies based on real-time observations, refining their approach as they encounter unexpected scenarios. This flexibility is especially valuable when dealing with complex applications or unique testing requirements that may not conform to the rigidity of automated scripts.
B. Definition of Automation Testing
Contrary to its manual counterpart, automation testing dons the mantle of efficiency through the utilization of specialized tools and meticulously crafted scripts. This methodological approach proves particularly efficacious in scenarios demanding repetitive testing tasks and situations where precision is the linchpin of success.
Automation testing operates on a different paradigm, relying on the systematic execution of pre-defined scripts to assess the application or software. This not only expedites the testing process but also ensures a consistent and reproducible evaluation. The tools employed in automation testing are adept at simulating user interactions, validating functionality, and detecting potential glitches with unfaltering accuracy.
The allure of automation testing lies in its ability to execute large test suites with unparalleled speed and precision. This is especially advantageous in scenarios where time is of the essence, and a rapid feedback loop is imperative. By automating repetitive and time-consuming test scenarios, this methodology liberates testers to focus on more complex aspects of the application, elevating the overall quality of the testing process.
C. Importance of Choosing the Right Testing Method
The pivotal decision of opting for manual or automation testing is far from a one-size-fits-all conclusion. Instead, it hinges on a myriad of factors that collectively shape the testing strategy for a particular project. Paramount among these considerations are the project's unique requirements, the nature of the application under scrutiny, and the budget constraints governing the testing process.
The importance of choosing the right testing methodology cannot be overstated. While manual testing offers a human-centric approach, allowing testers to delve deep into the application's intricacies, automation testing brings forth efficiency and speed. Striking the right balance between these methodologies is essential to ensure a thorough and cost-effective testing process.
In the grand tapestry of software development, the decision between manual and automation testing is a strategic choice that reverberates throughout the project lifecycle. It is a nuanced dance between human intuition and technological precision, ultimately aimed at delivering a product that meets the highest standards of quality and functionality.
II. Pros and Cons of Manual Testing
A. Advantages
Human Intuition and Creativity
Manual testing allows testers to leverage their intuition and creativity to uncover nuanced bugs that automated scripts might overlook.
Cost-Effective for Small-Scale Projects
In smaller projects with limited resources, manual testing can be more cost-effective, as it requires fewer initial investments in automation infrastructure.
Suitable for Exploratory Testing
Exploratory testing, where testers simultaneously design and execute tests, is inherently suited to manual testing due to its dynamic and adaptive nature.
B. Disadvantages
Time-Consuming
Manual testing can be time-consuming, especially for large and complex applications, leading to delays in the development cycle.
Prone to Human Error
Human error is an inherent risk in manual testing, and the accuracy of results depends on the attentiveness of the tester.
Limited Reusability
Test cases in manual testing are often less reusable, requiring additional effort for repeated testing.
III. Pros and Cons of Automation Testing
A. Advantages
Speed and Efficiency
Automation testing excels in executing repetitive and time-consuming tests swiftly and accurately, significantly speeding up the testing process.
Reproducibility of Tests
Automated tests can be easily replicated, ensuring consistency and reliability in the testing environment.
Suitable for Large-Scale and Repetitive Tasks
In scenarios where the same set of tests needs to be executed repeatedly, automation testing proves highly efficient.
B. Disadvantages
Initial Setup Cost
The upfront cost of setting up an automation framework, including tool selection and script development, can be high.
Inability to Handle Creative Testing
Automation testing struggles with scenarios requiring a creative and exploratory approach, where human intuition plays a crucial role.
Maintenance Challenges
Automated tests require ongoing maintenance, especially when the application undergoes changes, adding an extra layer of complexity.
IV. Criteria for Choosing Testing Method
A. Project Specifications
The project's specifications and requirements play a pivotal role in shaping the chosen testing methodology. For projects characterized by limited scope and constrained budgets, manual testing may emerge as the preferred approach. Conversely, expansive projects marked by repetitive tasks may find automation as the more advantageous testing solution.
In the realm of project requirements, the testing strategy is not a one-size-fits-all approach. The decision between manual and automated testing hinges on the unique needs and intricacies of each project. Smaller endeavors, constrained by financial limitations, often find manual testing to be a judicious choice. This is attributed to the resource efficiency and cost-effectiveness associated with manual testing methodologies.
On the other hand, large-scale projects, which are characterized by repetitive tasks and expansive functionalities, stand to benefit significantly from automation testing. Automation offers the advantage of executing repetitive tests with precision and speed, thereby enhancing overall efficiency and minimizing the likelihood of human errors. The intricate dance between project requirements and testing methodology underscores the importance of a tailored approach to ensure optimal outcomes.
B. Application Genre
The nature of the application in development exerts a profound influence on the testing strategy employed. Applications with a strong emphasis on user interface intricacies often demand a more hands-on, manual testing approach. This meticulous evaluation ensures that the end-user experience is seamless and free from glitches.
In contrast, applications with robust backend processes lend themselves well to automation testing. Automated testing tools can efficiently navigate through complex backend functionalities, executing repetitive tests with accuracy and expedience. The key lies in recognizing the unique demands posed by the application genre and aligning the testing methodology accordingly.
For user interface-heavy applications, manual testing emerges as the linchpin for a nuanced evaluation. This involves human testers interacting with the application to simulate real-world scenarios, identifying potential pitfalls, and ensuring a user-friendly experience. On the flip side, backend-centric applications benefit from the efficiency and consistency of automated testing, where scripts can be designed to validate intricate algorithms and processes.
C. Financial Constraints
Budget considerations wield considerable influence in the dichotomy between manual and automation testing. The financial landscape of a project often dictates the testing approach adopted. In instances where budget constraints loom large, manual testing may be the pragmatic choice for its immediate cost-effectiveness.
Manual testing requires human testers to meticulously assess the application's functionality, identifying bugs and discrepancies through hands-on exploration. This human touch can be advantageous for smaller projects with limited resources, as it ensures a thorough examination without the upfront costs associated with automated testing tools.
Conversely, automation testing gains prominence in scenarios where long-term cost-effectiveness is a priority. Larger and ongoing projects, with a substantial volume of repetitive tests, can leverage automation to streamline processes and reduce testing time. While the initial investment in automation tools and script development may be higher, the accrued benefits in efficiency and accuracy make it a financially prudent choice over the project's lifecycle.
In navigating the terrain of budget constraints, the decision between manual and automation testing becomes a strategic one, requiring a careful balance between short-term affordability and long-term efficiency.
V. Scenarios Favoring Manual Testing
A. User Interface Testing
Ensuring the seamless interaction between users and applications is paramount in the realm of User Interface (UI) testing. The nuanced visual aspects and the overall user experience demand the human touch to discern and rectify subtle design issues and usability concerns. While automated testing tools play a crucial role in detecting certain errors, the intricacies of user interaction often necessitate a human perspective.
User Interface Testing goes beyond the mere identification of bugs; it is a holistic examination of how users perceive and engage with an application. Testers scrutinize the layout, color schemes, fonts, and other visual elements to guarantee a visually appealing and cohesive design. Moreover, they delve into the responsiveness of the interface, ensuring that users can seamlessly navigate through the application without encountering glitches or delays.
The human-centric approach in UI testing is vital for detecting usability issues that might go unnoticed by automated processes. Testers evaluate the user interface's intuitiveness, responsiveness to different devices, and the overall aesthetic appeal. This manual inspection ensures that the application not only functions correctly but also provides a delightful and user-friendly experience.
In conclusion, User Interface Testing is an art that combines technical scrutiny with a keen understanding of human behavior. By incorporating the human touch, testers can elevate the user experience to new heights, addressing design subtleties that automated tools may overlook.
B. Usability Testing
Usability testing is the linchpin in assessing the overall user-friendliness and intuitiveness of an application. While automated tests can identify technical glitches, human testers bring a unique perspective to evaluate how effortlessly users can navigate and accomplish tasks within the application.
At its core, usability testing aims to simulate real user interactions and experiences. Testers step into the shoes of end-users, examining the application from a practical standpoint. They assess the ease of learning, efficiency of use, and user satisfaction. This process often involves creating scenarios that mimic real-world usage, allowing testers to observe how users naturally interact with the application.
One of the strengths of usability testing lies in its ability to capture subjective feedback. Human testers can articulate their experiences, providing valuable insights into aspects that might not be quantifiable through automated metrics alone. This qualitative feedback is instrumental in refining the application's design and functionality to meet user expectations.
Usability testing is not a one-size-fits-all process; it adapts to the unique characteristics of each application. Whether it's evaluating a website's navigation, an e-commerce platform's checkout process, or a mobile app's gesture controls, human testers employ a variety of methodologies to ensure comprehensive coverage.
In conclusion, the human touch in usability testing is indispensable for crafting applications that resonate with users. By combining technical analysis with subjective feedback, testers contribute significantly to creating a seamless and enjoyable user experience.
C. Ad-Hoc Testing
Ad-Hoc testing represents the dynamic and improvisational side of quality assurance. Unlike structured testing methodologies, ad-hoc testing scenarios involve testers thinking on their feet, adapting their approach on the fly. This approach is inherently better suited to manual testing, as it allows testers to explore and uncover issues that might not be apparent through pre-defined test cases.
In the realm of software testing, ad-hoc testing is akin to an unscripted performance. Testers leverage their creativity and experience to simulate unpredictable user behaviors and scenarios. This form of testing is particularly effective in identifying edge cases and unforeseen issues that may arise in real-world usage.
The strength of ad-hoc testing lies in its ability to mirror the randomness of user interactions. Testers explore the application freely, attempting to break the norm and uncover vulnerabilities that might be missed in more structured testing approaches. This flexibility is especially crucial in the ever-evolving landscape of software development, where new features and updates can introduce unforeseen challenges.
However, the spontaneity of ad-hoc testing doesn't mean it lacks rigor. Skilled testers bring a structured mindset even to improvisational scenarios, ensuring that the testing process remains thorough and focused. They document their findings meticulously, providing developers with valuable insights into potential areas of improvement.
In conclusion, ad-hoc testing adds a layer of unpredictability and creativity to the testing process. It is a testament to the agility of manual testing, allowing testers to uncover hidden issues and contribute to the overall robustness of the software.
VI. Scenarios Favoring Automation Testing
A. Regression Testing
In the realm of software testing, Regression Testing stands as a stalwart guardian, ensuring that the introduction of new code or modifications doesn't cast a shadow over the established functionalities of an application. This critical testing phase is empowered by the prowess of automated scripts, which meticulously scrutinize the software's behavior, flagging any deviations from the expected norm.
Automated scripts, with their precision and efficiency, excel in the intricate task of detecting potential hiccups or unintended consequences that may arise from code changes. The beauty of regression testing lies in its ability to catch glitches or anomalies that might slip through the cracks during the development or enhancement phases. By automating this process, development teams save valuable time and resources, as the scripts tirelessly repeat the testing scenarios, ensuring the stability and reliability of the software across iterations.
The significance of regression testing becomes even more pronounced in agile development environments, where frequent updates and modifications are the norm. Automated scripts act as the vigilant gatekeepers, ensuring that each incremental change aligns harmoniously with the existing functionalities. Through this automated scrutiny, the development team gains the confidence to innovate and iterate swiftly, knowing that the safety net of regression testing is firmly in place, preventing unintended consequences from disrupting the user experience.
In essence, regression testing, fueled by automation, emerges as a linchpin in the software development lifecycle, safeguarding the integrity of applications and instilling confidence in developers and end-users alike.
B. Performance Testing
Performance Testing, a cornerstone in the assessment of software prowess, delves into the application's ability to handle diverse conditions and loads. In the realm of modern development, where user expectations are soaring, and applications are expected to perform seamlessly under various circumstances, the role of Performance Testing becomes pivotal.
Automation takes center stage in the realm of Performance Testing, offering a robust solution to evaluate an application's performance and scalability. This entails simulating real-world scenarios where the application contends with a multitude of concurrent users, diverse network conditions, and varying data loads. The sheer complexity of these scenarios renders manual testing impractical, if not impossible.
Automated tools adeptly replicate a vast array of user interactions, creating a simulated environment that mirrors the challenges an application might face in the wild. Through this automated simulation, developers gain insights into the system's response time, resource utilization, and overall stability under stress. The ability to conduct these tests consistently and reproducibly is a distinct advantage, allowing development teams to identify and address performance bottlenecks proactively.
Moreover, Performance Testing automation enables scalability testing, providing a glimpse into how the application adapts to increased workloads. This foresight is invaluable in ensuring that an application can gracefully handle growth and maintain optimal performance even as user numbers surge.
In conclusion, Performance Testing, powered by automation, emerges as an indispensable tool in the developer's arsenal, ensuring that applications not only meet but exceed performance expectations in the dynamic landscape of today's digital world.
C. Load Testing
Load Testing, a crucible for evaluating an application's resilience under pressure, necessitates the automation touch to unfold its true potential. The very essence of load testing involves subjecting an application to a deluge of simultaneous users, a scenario that manual replication cannot realistically achieve.
Automation steps in as the linchpin in load testing, orchestrating the simultaneous virtual onslaught on the application to assess its response and stability. The significance of this process becomes evident when considering the diversity of user interactions and data transactions that an application must handle in a real-world scenario. Load Testing automation ensures that the application's performance is scrutinized comprehensively, unveiling potential bottlenecks, latency issues, or unexpected downtimes that might elude manual testing.
The scalability factor also comes into play, with automated tools enabling the emulation of varying degrees of user loads. This not only helps identify the breaking points of an application but also provides insights into how well it can adapt and scale as user numbers fluctuate. Such foresight is invaluable for developers and system architects aiming to design robust, scalable applications capable of withstanding the demands of a dynamic user base.
In essence, Load Testing automation serves as the vanguard, fortifying applications against the unpredictable surges in user activity and ensuring a seamless, uninterrupted user experience. It's a testament to the crucial role automation plays in modern software development, particularly in realms where human replication falls short of the rigorous demands imposed by the digital landscape.
VII. Human Element in Manual Testing
A. Tester's Role and Expertise
The role of a manual tester extends beyond executing predefined test cases. Testers bring their experience, creativity, and intuition to identify unforeseen issues and provide valuable feedback.
B. Real-world Scenarios and User Feedback
Manual testing allows testers to simulate real-world scenarios, providing insights into how end-users might interact with the application. Human testers can also collect qualitative feedback on usability and overall user satisfaction.
VIII. Technical Aspects of Automation Testing
A. Test Scripting Languages
Automation testing involves scripting, with languages like Python, Java, and JavaScript being commonly used. The choice of scripting language depends on the testing tools and the preferences of the development team.
B. Test Automation Frameworks
Frameworks like Selenium, Appium, and JUnit provide a structured environment for developing and running automated tests. Choosing the right framework depends on factors such as application type, testing goals, and team expertise.
C. Continuous Integration and Continuous Testing
Integrating automated tests into the continuous integration (CI) and continuous testing (CT) pipelines ensures that tests are run automatically whenever code changes are made. This aids in early bug detection and ensures a more reliable development process.
IX. Balancing Manual and Automation Testing
A. Hybrid Testing Approaches
Many development teams adopt a hybrid testing approach, combining the strengths of both manual and automation testing to create a comprehensive testing strategy.
B. Maximizing Test Coverage
To ensure thorough testing, a combination of manual and automated tests is often necessary. Manual testing can focus on exploratory and scenario-based testing, while automation handles repetitive and time-consuming tasks.
C. Integrating Automation into Manual Processes
Automation should complement manual testing processes seamlessly. By integrating automated tests into the overall testing strategy, teams can achieve higher efficiency without sacrificing the benefits of human intuition.
X. Case Studies
A. Successful Manual Testing Cases
Examining instances where manual testing played a pivotal role in identifying critical issues and ensuring a high-quality user experience.
B. Successful Automation Testing Cases
Showcasing scenarios where automation testing significantly accelerated the testing process and enhanced overall software quality.
C. Lessons Learned from Failures
Analyzing cases where the choice between manual and automation testing led to suboptimal outcomes, highlighting the importance of informed decision-making.
XI. Future Trends in Testing
A. Artificial Intelligence in Testing
The integration of AI in testing processes is on the rise, with machine learning algorithms aiding in test case generation, anomaly detection, and predictive analysis.
B. Shift-Left Testing Approach
The shift-left testing approach emphasizes early testing in the development lifecycle, ensuring that defects are identified and addressed at the earliest stages.
C. Rise of Codeless Test Automation Tools
The emergence of codeless test automation tools allows testers with limited coding expertise to create and execute automated tests, democratizing the testing process.
XII. Training and Skill Development
A. Manual Testing Skillset
The skillset required for manual testing includes a deep understanding of the application, attention to detail, and the ability to think critically and creatively.
B. Automation Testing Skillset
Automation testers need proficiency in scripting languages, familiarity with testing frameworks, and the ability to design and maintain automated test suites.
C. Continuous Learning in the Testing Domain
Given the dynamic nature of the testing landscape, both manual and automation testers must engage in continuous learning to stay abreast of new tools, methodologies, and industry best practices.
XIII. Industry Standards and Certifications
A. Certifications for Manual Testers
Recognized certifications, such as ISTQB (International Software Testing Qualifications Board), validate the expertise of manual testers and provide a standard benchmark for their skills.
B. Certifications for Automation Testers
Selenium Certification: The Selenium Certification is a hallmark of proficiency in automation testing, specifically focusing on the Selenium suite. This certification attests to an individual's comprehensive knowledge and practical skills in utilizing Selenium WebDriver, Selenium Grid, and Selenium IDE. Those holding this certification showcase their ability to create robust automation scripts, navigate web applications seamlessly, and conduct cross-browser testing. Additionally, certified professionals demonstrate expertise in designing and implementing scalable and maintainable test frameworks, making them valuable assets in the field of automation testing.
Appium Certification: The Appium Certification is a recognition of expertise in mobile automation testing. Appium, an open-source tool, allows for automated testing of mobile applications on both iOS and Android platforms. Certified professionals showcase their capability to set up and configure Appium for mobile testing, create efficient automation scripts, and conduct tests across diverse mobile devices. This certification is essential for individuals aiming to excel in mobile application testing and quality assurance.
ISTQB Advanced Test Automation Engineer: The ISTQB Advanced Test Automation Engineer certification is a comprehensive accreditation for professionals aspiring to advance their skills in test automation. It covers a broad spectrum of topics, including test automation design, development, implementation, and maintenance. Those holding this certification demonstrate proficiency in creating robust automation frameworks, selecting appropriate tools, and integrating automation into the overall testing process. The ISTQB Advanced Test Automation Engineer certification is a globally recognized standard for individuals seeking to elevate their careers in test automation.
UFT (Unified Functional Testing) Certification: The UFT Certification is a testament to expertise in using the Unified Functional Testing tool for automated functional testing. Certified professionals showcase their ability to create, execute, and maintain automated test scripts efficiently. The certification covers various aspects of UFT, including test planning, script enhancement, and integration with other testing tools. It is a valuable credential for individuals aiming to demonstrate their proficiency in automated functional testing using UFT.
Robot Framework Certification: The Robot Framework Certification validates skills in utilizing the Robot Framework for test automation. This open-source, generic automation framework is widely used for acceptance testing and robotic process automation. Certified individuals demonstrate their ability to design and implement test cases using the Robot Framework, ensuring maintainability and scalability of automated tests. This certification is ideal for professionals seeking recognition in the rapidly evolving landscape of test automation with a focus on flexibility and extensibility.
C. Recognized Industry Standards
Adherence to industry standards, such as ISO/IEC 29119 for software testing, ensures a systematic and well-defined approach to testing processes.
XIV. Collaborative Testing Environments
A. Tools for Collaborative Manual Testing
Collaboration tools that facilitate communication and coordination among manual testers, enabling them to work seamlessly on testing tasks.
B. Tools for Collaborative Automation Testing
Automated testing tools that support collaboration, allowing multiple team members to contribute to test script development and execution.
C. Advantages of Collaborative Testing
The benefits of collaborative testing, including faster testing cycles, improved communication, and a more holistic approach to quality assurance.
XV. Challenges in Testing Complex Applications
A. Handling Diverse Technologies
Testing applications built on diverse technologies requires a comprehensive testing strategy that includes both manual and automation testing.
B. Ensuring Security in Automation Testing
Security testing is a critical aspect that requires careful consideration in automation testing to identify and mitigate potential vulnerabilities.
C. Adapting to Rapid Technological Changes
The rapid evolution of technologies necessitates a flexible testing approach that can quickly adapt to new tools, frameworks, and development methodologies.
XVI. Regulatory Compliance and Testing
A. Impact on Manual Testing
The role of manual testing in ensuring regulatory compliance and meeting industry standards, especially in sectors like healthcare and finance.
B. Impact on Automation Testing
The challenges and opportunities for automation testing in meeting regulatory requirements and ensuring adherence to industry-specific standards.
C. Ensuring Compliance in Both Approaches
The need for a comprehensive testing strategy that addresses regulatory compliance, regardless of whether testing is manual or automated.
XVII. Evaluating Test Coverage
A. Metrics for Manual Testing
Key metrics for assessing the effectiveness of manual testing, including test coverage, defect density, and test execution efficiency.
B. Metrics for Automation Testing
Metrics specific to automation testing, such as test automation ROI, script stability, and overall test suite performance.
C. Combining Metrics for Comprehensive Evaluation
The importance of combining both manual and automation testing metrics for a holistic evaluation of the testing process.
XVIII. Choosing the Right Tools
A. Criteria for Selecting Manual Testing Tools
Factors to consider when choosing manual testing tools, including ease of use, compatibility with the application, and support for collaboration.
B. Criteria for Selecting Automation Testing Tools
The criteria for selecting automation testing tools, including scripting capabilities, integration with CI/CD pipelines, and community support.
C. Integration with Development and Deployment Tools
The seamless integration of testing tools with development and deployment tools, ensuring a streamlined and efficient software development lifecycle.
XIX. Return on Investment (ROI)
A. Manual Testing ROI Calculation
Methods for assessing the ROI of manual testing that take into consideration testing time, defect identification, and total project deadlines.
B. Automation Testing ROI Calculation
The measures and factors that go into estimating the ROI of automated testing, such as initial setup expenses, maintenance efforts, and time saved on repeated operations.
C. Long-Term ROI Considerations
The long-term effects of the chosen testing strategy on the overall success of the project, including scalability, flexibility, and future-proofing.
XX. Conclusion
A. Recap of Key Points
A concise summary of the key points discussed, emphasizing the importance of a thoughtful and context-driven approach to testing.
B. Decision-Making Framework for Testing
A decision-making framework to guide development teams in choosing the right mix of manual and automation testing based on project requirements.
C. Continuous Improvement in Testing Strategies
The need for development teams to embrace continuous improvement in testing strategies, staying informed about industry trends, and adapting to evolving technologies.
Subscribe to my newsletter
Read articles from Aditya Tomar directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Aditya Tomar
Aditya Tomar
I am a developer from India and I am continuously learning and sharing knowledge with the community.