SDLC and Manual Testing Interview Questions Flashcards
Can you tell the difference between STLC (Software Testing Life Cycle) and SDLC (Software Development Life Cycle)?
SDLC is an acronym for Software Development Life Cycle which consists of the following phases:
● Planning Phase ● Requirements gathering/Analysis phase ● Design phase ● Coding/Development/Implementation phase ● Testing phase ● Production phase
But what exactly is SDLC?
SDLC is a process in which a software product is either created, enhanced or maintained.
What actually happens in all of these phases? Let’s analyze each phase:
● Planning Phase: Feasibility Study is performed to understand whether the Project (service or product) is in:
Adequate Demand, Marketable, ROI (Return of investment), Probability for achievement / success
● Requirements gathering/Analysis Phase: This is the phase when business stakeholders/client-side members, Project Managers, and Business Analysts meet to discuss requirements for the project. Several meetings are hosted where the client states the expectations of the project and will also discuss topics regarding who will use the software product, how users will use the product, and specific information related to the development of the software product.
● Design Phase: This is when the software product is actually designed. This includes drawing plans, drawing an architectural style, and continuously hosting meetings with the client to get approvals. This is usually done by UI Designers, Graphic Designers, or sometimes even developers.
● Coding/Development/Implementation Phase
This is when the created design is actually developed.
● Testing Phase: This is when the testing is conducted of what was developed. This is where STLC comes into play. STLC is an acronym for Software Testing Life Cycle which consists of the following phases: Requirement analysis, Test Planning, Test case Development, Setup testing environment, Test Execution, Test closure.
● Production Phase/Deployment and Maintenance: This is when the code developed has been deployed into production
SDLC vs STLC
● STLC is part of SDLC. We can say that STLC is a subset of the SDLC set.
● STLC is limited to the testing phase whereas SDLC is a complete development of a software or product.
● STLC is a very important phase of SDLC and the final product or the software cannot be released without passing through the STLC process.
Why do Software Applications have bugs?
There are various reasons why a system might have bugs, such as bad design, coding errors, miscommunication, continuous changes in requirements, rushing to meet deadlines and also the complexity of the application.
Can you tell the Difference between Verification and Validation?
Verification is when you are analyzing requirements, design documents, test plans and test cases to ensure we cover all scenarios, and we are creating the right product and here there is no code involved. Simply reviewing documents to ensure everything is covered and NO coding is involved.
Validation is when we are executing our test cases and actually writing code to verify the system
What is the difference between static and dynamic testing?
Static Testing (Done In Verification Stage).
Static Testing is a White Box testing technique where the developers verify or test their code with the help of a checklist to find errors in it, this type of testing is done without running the developed application or program.
Code Reviews, Inspections, Walkthroughs are mostly done at this stage of testing.
Dynamic Testing (Done In Validation Stage).
Dynamic Testing is done by executing the actual application with valid inputs to check the expected output. Examples of Dynamic Testing methodologies are Integration Testing, System Testing, Regression and Acceptance Testing.
What Is the Difference between Black Box and White Box testing?
Black box testing is a testing approach which depends completely on the product requirements and specifications, and it is usually done to check the functionality of an application. Basically, front-end testing.
White box testing is when you know the internal structure of the application meaning you know coding and can perform unit testing as well. Also known as Code Based testing or Structural testing.
Can you tell different types of testing you are aware of?
● Unit testing ● Integration testing ● Regression testing ● Ad-Hoc ● Smoke testing ● Performance testing ● System testing ● UAT Testing
In which phase should testing begin?
Testing should start at the requirements phase. We have to make sure requirements are correct in the first place. With the wrong requirement it is impossible to build bug free applications.
What is Ad-Hoc Testing? Exploratory testing? Random Testing?
All are the same thing; it is informal testing where you are testing without a test case and randomly testing a module conducting negative testing and positive testing but not in any order etc.
What is unit testing, and have you ever done unit testing?
Unit testing is a part of the white box testing, and it is done by the developers before they deploy their code from the Development environment to QA environment.
Since it is performed by devs, I haven’t done unit testing.
What is Integration testing?
Once every individual component is tested, we must make sure that when we integrate these components together, they must work as expected. Example amazon.com has fresh and prime, but the entire website works together even though it has different components.
What is the difference between UAT and QA? What is Acceptance testing?
QA is one lower environment to UAT.
QA can be a separate team that does testing and after testing passes the QA environment, code is moved to UAT environment whereas Testing is conducted to make sure no bugs have been missed.
Also, UAT is mostly a business/customer side that conducts it. Acceptance testing is UAT testing another name for it.
What is system testing?
It is testing the entire system which includes but is not limited to the Front-end, Back-end, Database, Server, Hardware, and any related Software product/application.
What is Beta Testing?
Beta testing is conducted to gather feedback from the real-time usage of the product.
It happens after the installation at the client-end, or another good example is in the real-world gaming industry they release a game to a certain audience before a mass release to get feedback.
What is 508 Compliance testing?
All websites are supposed to be 508 compliant meaning disabled personnel should be able to use it. Features are specific fonts used on these types of websites, text to speech capability and magnify capability etc. Just know what it is but you don’t tell the
interviewer that you have done so.
What is Boundary Testing?
Boundary testing is to make sure software accepts valid data inside the valid Boundary and rejects invalid data outside the valid Boundary.
A simple example would be testing the input field limitation from 0 to 100 where the lower boundary is 0 and the higher boundary is 100.
We make sure we can’t go lower than 0 and higher than 100. We only test the edges and not the middle.
Boundary value testing can be very beneficial since
errors are frequently made during programming of the different cases near the ‘edges’ of the range of values.
What is Negative Testing and what is Positive Testing?
Negative testing is testing the application/system with a negative scenario using incorrect/invalid data and verifies if the application responds as expected.
Negative test cases are created based on the idea of testing in a destructive manner.
Positive testing is testing the application/system with correct and valid data and verifies if the application responds as expected. Also, can be called a “Happy Path” Testing.
What is non-functional testing? Have you done any performance testing?
Performance testing (Can 5000 user’s login to the application at the same time?)
Security testing.
Simply say NO you have not done so and that performance testing was conducted by a separate team.
What is Functional testing?
Simply testing any functionality is functional testing.
Manual testers do functional testing, and they can be called a functional testing team.
As an Automation Tester, you may be required to perform manual testing based on project needs.
What is the difference between regression testing and retesting?
Regression testing is performing tests to ensure that modifications to a module or system do not have a negative effect on previous functionalities.
It is performed when a new functionality is added, or bug fix occurs, and we want to make sure other parts of the application are still functioning correctly.
While retesting is performed when a defect gets fixed, and you have to retest the functionality to see if it is really fixed or not.
What is the difference between system testing and integration testing?
System testing is when the entire system is checked such as hardware, software, servers, databases etc., whereas for integration testing, the integration between the individual modules is tested.
What is a hotfix?
A hotfix is an emergency issue that needs to be fixed right away and does not need to go through a whole sprint cycle.
It’s an exception where it can be developed, tested and deployed in a few hours or a day since it’s an extreme priority and clients want the critical issue fixed ASAP and deployed.
When is a test considered to be successful?
Tests that cover more functionalities and discover more errors in your software product are considered more successful.
The whole purpose of a testing process is to discover as many bugs as possible and as early as possible.
If there isn’t enough time for testing, what would you do?
If we are short on time, I would prioritize my test cases and tackle ones that cover most functionalities, and I will also check with my team members if they can help out since I have been on agile projects we work together in such matters.
When we prioritize here is what we look for:
● Which functionality is most visible to the user?
● Which functionality has the largest safety impact?
● Which aspects of the application are most important to the customer?
● Which aspects of the application can be tested early in the development cycle?
● Which parts of the code are most complex and thus most subject to errors?
● Which parts of the application were developed in rush or panic mode?
● Which parts of the requirements and design are unclear or poorly thought out?
● What do the developers think are the highest-risk aspects of the application?
● What kinds of problems would cause the most customer service complaints?
● What kinds of tests could easily cover multiple functionalities?
What would you do if you end up with unclear requirements or requirements are not available?
In this scenario, your knowledge of application plays a big role.
I would start to do some random testing to understand what is being asked and try to discover to get an idea, so I can start writing scripts.
Then I will also check out our meeting notes, emails, and discussions.
On top of that, look for wireframes which might give me an idea but overall, my common sense and experience plays a part here and also, I would think from a customer’s perspective.
Finally, if BA is available to clarify with them as well.