Friday, January 29, 2010

Software Testing Interview Questions

The order of STLC
1) Test Strategy
2) Test Plan
3) Test Scenario
4) Test Cases
1) Test Strategy: Test Strategy is a Document, developed by the Project manager, which contains what type of technique to follow and which module to test.
2) Test Plan: Test plan is a Document, developed by the Test Lead, which contains "What to Test","How to Test", "When to Test", "Who to Test".
3) Test Scenario: A name given to Test Cases is called Test Scenario. These Test Scenario was deal bythe Test Enggineer.
4) Test Cases: It is also document andit specifies a Testable condition to validate a functionality. These Test Cases are deal by the Test Enggneer

1.Requirement phase,
2.Desing phase(HLD,DLD(Program spec))
1.Requirements knowledge transfer
2.Test planning
3.Writting Test case or scripts
4.executing test case
5.Bug tracking

Diff between system testing and functional testing
Functional testing is the technique utilized in the system tesing.Its a black box testing type... Functional testing is noting but testing or check whether a sytem functions properly as per the req..
system testing is the phase after integration testing phase.After all modules get integrated and tested for integration, the system is tested as a whole.

1: Why a software needs to be tested? Why Software Testing is necessary?

Testing is the most important way of assuring (or controlling) the quality of software. Good practices throughout the development process contribute to the quality of the final product, but only testing can demonstrate that quality has been achieved and identify the problems and the risks that remain.

1. To Improve Quality of software

2. To Improve Reliability of software.

3. 50% of maintenance cost attributed to fixing bugs.





To fix a bug found during a test implies rework, which might go far back into the development cycle - possibly all the way back to the initial requirements. All that rework needs to be re-tested. The cost of fixing bugs increases exponentially at each stage of development. Rework and re-testing are time-consuming and expensive, and fixes are error-prone - studies have shown that each fix has a 50% chance of creating a new defect.

2: Why do software have bugs?# miscommunication or no communication - as to specifics of what an application should or shouldn't do (the application's requirements).# software complexity - the complexity of current software applications can be difficult to comprehend for anyone without experience in modern-day software development. Multi-tier distributed systems, applications utilizing mutliple local and remote web services applications, data communications, enormous relational databases, security complexities, and sheer size of applications have all contributed to the exponential growth in software/system complexity.# programming errors - programmers, like anyone else, can make mistakes.# changing requirements (whether documented or undocumented) - the end-user may not understand the effects of changes, or may understand and request them anyway - redesign, rescheduling of engineers, effects on other projects, work already completed that may have to be redone or thrown out, hardware requirements that may be affected, etc. #time pressures - scheduling of software projects is difficult at best, often requiring a lot of guesswork. When deadlines loom and the crunch comes, mistakes will be made. # poorly documented code - it's tough to maintain and modify code that is badly written or poorly documented; the result is bugs. In many organizations management provides no incentive for programmers to document their code or write clear, understandable, maintainable code. In fact, it's usually the opposite: they get points mostly for quickly turning out code, and there's job security if nobody else can understand it ('if it was hard to write, it should be hard to read').# software development tools - visual tools, class libraries, compilers, scripting tools, etc. often introduce their own bugs or are poorly documented, resulting in added bugs.

3: Who in the company is responsible for Quality

Every team member in a project is responsible for Quality of product build.But testing team is responsible to define the quality of product developed.Answer 4: Should we test every possible combination/scenario for a program?No. Exhaustive testing is not possible and also a time consuming process and hence not recommended. Its not mandatory.There are several points to be considered here. Delivery time available, personnel availability, complexity of the application under testing, available resources, budget etc. But we should test cover to the maximum extent satisfying the primary functionality which are must from the customer point of view.

5: How will you describe testing activities?

Testing activities start from the elaboration phase. The various testing activities are preparing the test plan, Preparing test cases, Execute the test case, Log teh bug, validate the bug & take appropriate action for the bug, Automate the test cases, View and report the test results etcThe testing activities are:- Effort estimation and project initiation- system study- test plan- designing test cases- automation (if required)- executing the test cases- reporting bugs- regression testing- analysis- summary reportsAnswer 6: Do you have a favorite QA book? Why?I have a couple of favorites, but my all time number one isSoftware testing In The Real World, by Edward KitI have bought and handed out multiple copies of this book I think it is so good.I love the easy to read style, the practicle application and the very usable appendicies.Answer 7: How do we perform regression testing?Regression testing is nothing but testing the application for an existing functionality. When ever a release for a software is made, some new functionality is introduced. In our normal test cycle we would test the application against the new functionality. But there should be some testing done to ensure that because of these new functionality, our old functionality are not affected. This testing is known as Regression TestingWhile performing regression testing we do not need create new Test case and all.So Each time that you modify a Code of application (class, method, or function), you should perform regression testing to ensure that your changes have not introduced errors.Regression testing is performed for the 3 scenarios1. When the defects are fixed2. when there is the change for request3. when new features are addedDeveloper fixed the defects and send to tester.Tester test the new functionality of the application with the co-existence of the application and verify that The new functionality of the application should not create any problem on the existence application.- the roles of glass-box and black-box testing tools?White-box or glass-box testing relies on analyzing the code itself and the internal logic of the software. White-box testing is often, but not always, the purview of programmers. It uses techniques which range from highly technical or technology specific testing through to things like code inspections.Although white-box techniques can be used at any stage in a software product's life cycle they tend to be found in Unit testing activities.Glass-box testing also called as white-box testing refers to testing, with detailed knowledge of the modules internals. Thus these tools concentrate more on the algorithms, data structures used in development of modules. These tools perform testing on individual modules more likely than the whole application.Glass-box testing: It is based on internal design of an application code.Tests are based on path coverage,branch coverage,statement coverage. It is also known as White Box testing.White box test cases can check for..1) All independent paths with in a modules are executed atleast once2) Execute all loops3) Exercise all logical decisions4) Exercise internal data structure to ensure their validity- the difference between QA and Testing?Quality Assurance – the process of preventing defects from entering software through 'best practices'. Not be confused with testing!The process of critically evaluating software to find flaws and fix them and to determine its current state of readiness for releasethe difference between Smoke Testing and Sanity TestingAnswer: [From Wiki]In software development, the sanity test (a form of software testing which offers "quick, broad, and shallow testing"[1]) determines whether it is reasonable to proceed with further testing.Software sanity tests are commonly conflated with smoke tests [2]. A smoke test determines whether it is possible to continue testing, as opposed to whether it is reasonable[citation needed]. A software smoke test determines whether the program launches and whether its interfaces are accessible and responsive (for example, the responsiveness of a web page or an input button). If the smoke test fails, it is impossible to conduct a sanity test. In contrast, the ideal sanity test exercises the smallest subset of application functions needed to determine whether the application logic is generally functional and correct (for example, an interest rate calculation for a financial application). If the sanity test fails, it is not reasonable to attempt more rigorous testing. Both sanity tests and smoke tests are ways to avoid wasting time and effort by quickly determining whether an application is too flawed to merit any rigorous testing. Many companies run sanity tests on a weekly build as part of their development process [3]The Hello world program is often used as a sanity test for a development environment. If Hello World fails to compile the basic environment (or the compile process the user is attempting) has a configuration problem. If it works the problem may be a bug in the specific application being compiled.

No comments: