Software Testing Q and A By Aditya
What is Software Testing?
In short, I would say software testing is a process to perform the functionality and quality check of the software product which matches the expected business requirements of the stakeholder and marking the product as a Bug free for end users.
What is black box testing?
In short, Black box testing mainly focus on input and output of the application without knowing the code. These test can be functional or non-functional without any reference to the structure of the application.
What is automation framework?
In short, a framework in automation is a platform developed by integrating the various hardware, software resources along with using various tools used to make our work easy like if we follow the set of guidelines like coding standards, test data handling, object repository and so on, when followed during the automation script which gives greater beneficial outcome like increate code reusability, higher portability, easy maintenance. Coming to test automation framework is for creating and designing test cases. These framework is set of rules which can be followed in a systematic way what ensures to deliver the best results.
What is the different between a test plan and test strategy?
A test plan is defined as a document which gives the scope, objective, method, time and weight on a testing task. And test strategy is defined as a set of principles which determines the design and regulates how the testing process will be done. The objective of test strategy is to give a systematic approach to the software testing process to ensure the quality, reliability, traceability and planning.
What is selenium?
Selenium is an open-source & portable automated software testing tool for web applications, which provides set of different software tools each with different approaches to test automation. Most of the QA engineers focus on one or two tools which meet the needs of project. Teaching all the tools gives them many different options for testing automation problems. Selenium is not just a single tool but a set of tools that helps testers to automate web applications more efficiently. The entire suite of tools results in a rich set of testing functions mainly focusing the needs of testing web applications in all types. These are highly flexible, allowing many options for locating the user interface elements and comparing the expected test results. One of the key feature is one test can run on different browsers.
When should we stop testing?
Testing can be stopped when the acceptance criteria been satisfied. Mainly we ca hold or stop testing when the below conditions been satisfied,
- When our software requirements is covered 100% and achieved all the test cases.
- Defects are been dealt and resolved.
- If all tests been passed with 95%.
- Deadline of out project is been met
- All test documents are prepared, reviewed and published go live.
- Testing budget is exhausted upon completion
- If stakeholder satisfied with the production and signoff we can stop testing.
What is regression testing?
In short, regression testing is nothing but full or partial selection of existing executed test cases which need to re-execute to ensure the existing and new functionalities work fine.
What are difference between functional and non functional testing.
Functional testing – It is the behavior of software under test, based on the given requirement from the stakeholder or client, a document which is called system requirement specification is used as a guide to test the application. It helps us to validate the behavior of the application.
Non Functional Testing – It is mostly done before release to make sure no developed tests get failed. Helps to validate the performance of the application.
|Parameters||Functional Testing||Non-Functional Testing|
|Execution||Functional Testing is performed before Non-Functional Testing.||Non-Functional Testing performed after the Functional Testing is done.|
|Focus area||Functional Testing is based on stakeholder’s requirements specifications.||Non-Functional Testing focusses on stakeholder’s expectation.|
|Requirement||Functional Testing is easy to define the functional requirements.||Non-Functional Testing is bit difficult to define the requirements.|
|Usage||Functional Testing helps us to validate the behavior of the application.||Non-Functional Testing helps to validate the performance of the application.|
|Objective||Functional Testing is carried out to validate software actions.||Non-Functional Testing is done to validate the performance of the software.|
|Requirements||Functional Testing is carried out using the functional specification.||Non-Functional Testing is a kind of testing which is carried out by performance specifications|
|Manual testing||Functional Testing is easy to execute by manual testing.||Non-Functional Testing is very hard to perform non-functional testing manually.|
|Functionality||Functional Testing describes what the product does.||Non-Functional Testing describes how the product works.|
|Example Test Case||Functional Testing for check login functionality.||Non-Functional Testing the dashboard should load in 2 seconds.|
|Testing Types||Examples of Functional Testing Types as follows:|
– Unit testing
– Smoke testing
– User Acceptance
– Integration Testing
– Regression Testing
|Examples of Non-functional Testing Types |
– Performance Testing
– Volume Testing
– Usability Testing
– Load Testing
– Stress Testing
– Compliance Testing
– Portability Testing
– Disaster Recover Testing
What is unit testing?
It is a technique for individual modules been tested to determine if here are any issues by the developer. It is concerned with functional testing of standalone modules. The major aim is to isolate each unit of the application to identify, analyze and fix of issues.
What is smoke testing?
It is a technique which inspired from hardware testing to check for the smoke from the hardware components once the power is switched on. Similarly, in software testing the smoke testing is to test the basic functionality of the build. If the test fails, out build is unstable and is not tested anymore unless the smoke test of the build been passed.
What is Integration Testing?
Integration testing is a testing technique to ensure proper interfacing and interaction among the integrated modules or units after the integration process.
What is user acceptance testing?
User Acceptance Testing in short UAT is the last phase of software testing process. During UAT the client or users are involved in the testing the application to validate the application against the given requirement. This is performed at client’s location at developer’s site. The UAT comes under the functional testing.
What is Regression Testing?
Regression testing is also known as Re-Testing or re-executed test, is nothing but the full selection of application or partial section of application which is already executed test cases which need to be retested to check the existing functionalities working as expected. Here we have two types of regression testing,
- Final Regression Tests – this is performed to validate the changes. The build is deployed to customer end.
- Regression Tests – this is a normal regression testing which is performed to check the build has not broken. If any recent changed with code have been done the changes for defect fixed to be verified in this phase.
What is Performance Testing?
Performance testing is a main technique in nonfunctional testing process which is used to determine the system parameters in responsiveness. This testing is used to speed the testing, response time, reliability, scalability, stability and resource used of a software application under particular load. The main purpose of this testing is to identify and remove the performance of the bottlenecks in application.
What is volume testing?
This testing belongs to nonfunctional test, where the software is the part of performance testing with huge volume of data. It is also referred as flood testing. In volume testing we analyze the system performance by increasing the volume of data in Database.
What is scalability testing?
This test comes under non functional tests, in scalability testing the performance testing parameter which investigate with application ability to grow by increasing the workload per user or the size of database.
What is Usability testing?
Usability testing comes under non-functional testing technique where we measure of how system or application can be used by end users.
What is load testing?
Load testing is performance testing technique, where response of the application or system is measured under various load conditions. The load testing is performed for normal & full load conditions.
What is stress testing?
Stress testing comes under nonfunctional testing technique. During stress testing, the application or system is monitored after exposing the system to overload to ensure that the system can sustain the full stress mode. The recovery of the system from such phase is very critical as it is highly likely to happen in production environment.
When I created the selenium script in eclipse & here when I try to run I am getting error like “the import org.openqa cannot be resolved” in import files?
This is due to not configuring properly Jars. Here are the steps to follow Selenium library in the class path.
1) Firstly, right click on our Project ABCsExample > Select Properties > Java build path. Then navigate to Libraries tab & then click Add External JARs.
2) Do add all Selenium Java jar files from the lib folder as well.
3) Click OK.
Why do we need to run selenium tests in parallel?
In testing1000 automated test scripts from an application on different browsers tests are performed orderly. This approach of testing is very much time consuming, So we go with parallel testing which helps us to reduce the execution time and efforts. The results are also shown faster.
What is Web-Table in selenium.
We have two which are published on web.
- Static – Number of rows & columns are fixed in static table.
- Dynamic – the number of rows and columns are not fixed in dynamic table.
In short, the web-table is a kind of grid which consist of rows & columns. When needed to present the values using rows and columns; School timetable, it has TR & TD HTML tags.
What is the importance of Geolocation browser testing?
Geolocation browser testing is done very frequently these days, by this testing approach we can assure out website or app is loading right on the particular location. By geolocation testing we can perform website testing from ay set of IPs which belong to different countries around the world. In a decade the number of websites have been increased rapidly, with this increased website for which we use this geolocation testing approach. For Example- if we collect mobile numbers from mobile users we want to check the country code to be filled automatically by the location of the user, we need to include this into our test suite.
What are Selenium Webdriver Commands?
In selenium webdriver we have mainly three types of commands, they are classified into in following category:
- Browser Commands
- Navigation Commands
- WebElement Commands
What is fullscreen() Method in Selenium Webdriver
The fullscreen() method is used to full screen the current window if it is not already fullscreen. In this method the title bar is no displayed. Until Selenium 3 version, there were several issues reported with fullscreen() feature doesn’t work mostly (not always) when using ChromeDriver and it throws org.openqa.selenium.UnsupportedCommandException: unknown command. We have a workaround to use ChromeOptions options.addArguments(“start-fullscreen”) in that case where you get “org.openqa.selenium.UnsupportedCommandException: unknown command” error on using fullscreen(). But in Selenium 4 (alpha 3), fullscreen() works like charm without any issue.
What is maximize() Method in Selenium Webdriver
The maximize() method is used to resize the current window to set dimension to maxmimun screen where the title bar of the window is still displayed. Maximizes the current window if it is not already maximized.
What is Software Quality Assurance (SQA)?
Software quality assurance is an umbrella term, consisting of various planned process and activities to monitor and control the standard of whole software development process so as to ensure quality attribute in the final software product.
What is Software Quality Control (SQC)?
With the purpose similar to software quality assurance, software quality control focuses on the software instead to its development process to achieve and maintain the quality aspect in the software product.
Whether, software quality assurance (sqa), software quality control (sqc) & software testing are similar terms?
No, but the end purpose of all is same i.e. ensuring and maintaining the software quality.
What is the difference between SQA, SQC and Testing?
SQA is a broader term encompassing both SQC and testing in it and ensures software development process quality and standard and subsequently in the final product also, whereas testing which is used to identify and detect software defects is a subset of SQC.
What is software testing life cycle (STLC)?
Software testing life cycle defines and describes the multiple phases which are executed in a sequential order to carry out the testing of a software product. The phases of STLC are requirement, planning, analysis, design, implementation, execution, conclusion and closure.
How STLC is related to or different from SDLC (software development life cycle)?
Both SDLC and STLC depict the phases to be carried out in a subsequent manner, but for different purpose. SDLC defines each and every phase of software development including testing, whereas STLC outlines the phases to be executed during a testing process. It may be inferred that STLC is incorporated in the SDLC phase of testing.
What are the phases involved in the software testing life cycle?
The phases of STLC are requirement, planning, analysis, design, implementation, execution, conclusion and closure.
Why entry criteria and exit criteria is specified and defined?
Entry and exit criteria is defined and specified to initiate and terminate a particular testing process or activity respectively, when certain conditions, factors and requirements is/are being met or fulfilled.
What do you mean by the requirement study and analysis?
Requirement study and analysis is the process of studying and analysing the testable requirements and specifications through the combined efforts of QA team, business analyst, client and stakeholders.
What are the different types of requirements required in software testing?
Software/functional requirements, business requirements and user requirements.
Is it possible to test without requirements?
Yes, testing is an art, which may be carried out without requirements by a tester by making use of his/her intellects possessed, acquired skills and gained experience in the relevant domain.
Differentiate between software requirement specifications (SRS) and business requirement specification (BRS).
SRS layouts the functional and non-functional requirements for the software to be developed whereas BRS reflects the business requirement i.e., the business demand of a software product as stated by the client.
Why there is a bug/defect in software?
A bug or a defect in software occurs due to various reasons and conditions such as misunderstanding or requirements, time restriction, lack of experience, faulty third party tools, dynamic or last time changes, etc.
What is bug leakage and bug release?
Bug release is when software or an application is handed over to the testing team knowing that the defect is present in a release. During this the priority and severity of bug is low, as bug can be removed before the final handover.
Bug leakage is something, when the bug is discovered by the end users or customer, and not detected by the testing team while testing the software.
What is a software testing artifact?
Software testing artifact or testing artifact are the documents or tangible products generated throughout the testing process for the purpose of testing or correspondence amongst the team and with the client.
What are test plan, test suite and test case?
Test plan defines the comprehensive approach to perform testing of the system and not for the single testing process or activity. A test case is based on the specified requirements & specifications define the sequence of activities to verify and validate one or more than one functionality of the system. Test suite is a collection of similar types of test cases.
How to design test cases?
Broadly, there are three different approaches or techniques to design test cases. These are Black box design technique, based on requirements and specifications. White box design technique based on internal structure of the software application. Experience based design technique based on the experience gained by a tester.
What is test environment?
A test environment comprises of necessary software and hardware along with the network configuration and settings to simulate intended environment for the execution of tests on the software.
Why test environment is needed?
Dynamic testing of the software requires specific and controlled environment comprising of hardware, software and multiple factors under which a software is intended to perform its functioning. Thus, test environment provides the platform to test the functionalities of software in the specified environment and conditions.
What is test execution?
Test execution is one of the phases of testing life cycle which concerns with the execution of test cases or test plans on the software product to ensure its quality with respect to specified requirements and specifications.
What are the different levels of testing?
Generally, there are four levels of testing viz. unit testing, integration testing, system testing and acceptance testing.
What is unit testing?
Unit testing involves the testing of each smallest testable unit of the system, independently.
What is the role of developer in unit testing?
As developers are well versed with their lines of code, they are preferred and being assigned the responsibility of writing and executing the unit tests.
What are stubs and drivers and how these are different to each other?
Stubs and drivers are the replicas of modules which are either not available or have not been created yet and thus they works as the substitutes in the process of integration testing with the difference that stubs are used in top bottom approach and drivers are used in bottom up approach.
What is system testing?
System testing is used to test the completely integrated system as a one system against the specified requirements and specifications.
Different types of acceptance testing.
Broadly, acceptance testing is of two types-alpha testing and beta testing. Further, acceptance testing can also be classified into following forms:
- Operational acceptance testing
- Contract acceptance testing
- Regulation acceptance testing
Difference between alpha and beta testing.
Both alpha and beta testing are the forms of acceptance testing where former is carried out at development site by the QA/testing team and the latter one is executed at client site by the intended users.
What are the different approaches to perform software testing?
Generally, there are two approaches to perform software testing viz. Manual testing and Automation. Manual testing involves the execution of test cases on the software manually by the tester whereas automation process involves the usage of automation framework and tools to automate the task of test scripts execution.
What is the advantage of automation over manual testing approach and vice-versa?
In comparison to manual approach of testing, automation reduces the efforts and time required in executing the large amount of test scripts, repetitively and continuously for a longer period of time with accuracy and precision.
Is there any testing technique that does not needs any sort of requirements or planning?
Yes, but with the help of test strategy using checklists, user scenarios and matrices.
Difference between ad-hoc testing and exploratory testing?
Both ad-hoc testing and exploratory testing are the informal ways of testing the system without having proper planning & strategy. However, in ad-hoc testing, a tester is well-versed with the software and its features and thereby carries out the testing whereas in exploratory, he/she gets to learn and explore more about the software during the course of testing and thus tests the system gradually along with software understanding and learning throughout the testing process.
How monkey testing is different from ad-hoc testing?
Both monkey and ad-hoc testing are the informal approach of testing but in monkey testing, a tester does not requires the pre-understanding and detailing of the software, but learns about the product during the course of testing whereas in ad-hoc testing, tester has the knowledge and understanding of the software.
Why non-functional testing is equally important to functional testing?
Functional testing tests the system’s functionalities and features as specified prior to software development process. It only validates the intended functioning of the software against the specified requirement and specification but the performance of the system to function in the unexpected circumstances and conditions in real world environment at the user’s end and to meet customer satisfaction is done through non-functional testing technique. Thus, non-functional testing looks after the non-functional traits of the software.
Which is a better testing methodology: black-box testing or white-box testing?
Both black-box and white-box testing approach have their own advantages and disadvantages. Black-box testing approach enables testers to externally test the system on the basis of specified requirement and specification and does not provide the scope of testing the internal structure of the system, whereas white-box testing methodology verify and validates the software quality through testing of its internal structure and working.
If black-box and white-box, then why gray box testing?
Gray box testing is a third type of testing and a hybrid form of black-box and white-box testing approach, which provides the scope of externally testing the system using test plans and test cases derived from the knowledge and understanding of internal structure of the system.
Difference between static and dynamic testing of software.
The primary difference between static and dynamic testing approach is that the former does not involves the execution of code to test the system whereas latter approach requires the code execution to verify and validate the system quality.
Smoke and Sanity testing are used to test software builds. Are they similar?
Although, both smoke and sanity testing is used to test software builds but smoke testing is used to test the initial build which are unstable whereas sanity tests are executed on relatively stable builds which had undergone multiple time through regression testing.
When, what and why to automate?
Automation is preferred when the execution of tests needs to be carried out repetitively for a longer period of time and within the specified deadlines. Further, an analysis of ROI on automation is desired to analyse the cost-benefit model of the automation. Preferably functional, regression and functional tests may be automated. Further, tests which requires accuracy and precision, and is time-consuming may be considered for automation, including data driven tests also.
What are the challenges faced in automation?
Some of the common challenges faced in the automation are Initial cost is very high along with the maintenance costs. Thus, requires proper analysis to assess ROI on automation.
- Increased complexities.
- Limited time.
- Demands skilled tester, having appropriate knowledge of programming.
- Automation training cost and time.
- Selection of right and appropriate tools and frameworks.
- Less flexible.
- Keeping test plans and cases updated and maintained.
Difference between retesting and regression testing.
Both retesting and regression testing is done after modification in software features and configuration to remove or correct the defect(s). However, retesting is done to validate that the identified defects has been removed or resolved after applying patches while regression testing is done to ensure that the modification in the software doesn’t impacts or affects the existing functionalities and originality of the software.
How to categorize bugs or defects found in the software?
A bug or a defect may be categorized on the priority and severity basis, where priority defines the need to correct or remove defect, from business perspective, whereas severity states the need to resolve or eliminate defect from software requirement and quality perspective.
What is the importance of test data?
Test data is used to drive the testing process, where diverse types of test data as inputs are provided to the system to test the response, behaviour and output of the system, which may be desirable or unexpected.
Why agile testing approach is preferred over traditional way of testing?
Agile testing follows the agile model of d/evelopment, which requires no or less documentation and provides the scope of considering and implementing the dynamic and changing requirements along with the direct involvement of client or customer to work on their regular feedbacks and requirements to provide software in multiple and short iterative cycles.
What are the parameters to evaluate and assess the performance of the software?
Parameters which are used to evaluate and assess the performance of the software are active defects, authored tests, automated tests, requirement coverage, no. of defects fixed/day, tests passed, rejected defects, severe defects, reviewed requirements, test executed and many more.
How important is the localization and globalization testing of a software application?
Globalization and localization testing ensures the software product features and standards to be globally accepted by the world wide users and to meet the need and requirements of the users belonging to a particular culture, area, region, country or locale, respectively.
What is the difference between verification and validation approach of software testing?
Verification is done throughout the development phase on the software under development whereas validation is performed over final product produced after the development process with respect to specified requirement and specification.