Friday 7 March 2014

Software Testing Types

  • COMPATIBILITY TESTING. Testing to ensure compatibility of an application or Web site with different browsers, OSs, and hardware platforms. Compatibility testing can be performed manually or can be driven by an automated functional or regression test suite.
  • CONFORMANCE TESTING. Verifying implementation conformance to industry standards. Producing tests for the behavior of an implementation to be sure it provides the portability, interoperability, and/or compatibility a standard defines.
  • FUNCTIONAL TESTING. Validating an application or Web site conforms to its specifications and correctly performs all its required functions. This entails a series of tests which perform a feature by feature validation of behavior, using a wide range of normal and erroneous input data. This can involve testing of the product's user interface, APIs, database management, security, installation, networking, etcF testing can be performed on an automated or manual basis using black box or white box methodologies.
  • LOAD TESTING. Load testing is a generic term covering Performance Testing and Stress Testing.
  • PERFORMANCE TESTING. Performance testing can be applied to understand your application or WWW site's scalability, or to benchmark the performance in an environment of third party products such as servers and middleware for potential purchase. This sort of testing is particularly useful to identify performance bottlenecks in high use applications. Performance testing generally involves an automated test suite as this allows easy simulation of a variety of normal, peak, and exceptional load conditions.
  • REGRESSION TESTING. Similar in scope to a functional test, a regression test allows a consistent, repeatable validation of each new release of a product or Web site. Such testing ensures reported product defects have been corrected for each new release and that no new quality problems were introduced in the maintenance process. Though regression testing can be performed manually an automated test suite is often used to reduce the time and resources needed to perform the required testing.
  • SMOKE TESTING. A quick-and-dirty test that the major functions of a piece of software work without bothering with finer details. Originated in the hardware testing practice of turning on a new piece of hardware for the first time and considering it a success if it does not catch on fire.
  • STRESS TESTING. Testing conducted to evaluate a system or component at or beyond the limits of its specified requirements to determine the load under which it fails and how. A graceful degradation under load leading to non-catastrophic failure is the desired result. Often Stress Testing is performed using the same process as Performance Testing but employing a very high level of simulated load.
  • UNIT TESTING. Functional and reliability testing in an Engineering environment. Producing tests for the behavior of components of a product to ensure their correct behavior prior to system integration. 
  • Acceptance Testing
    Testing the system with the intent of confirming readiness of the product and customer acceptance. Acceptance testing, which is a black box testing, will give the client the opportunity to verify the system functionality and usability prior to the system being moved to production. The acceptance test will be the responsibility of the client; however, it will be conducted with full support from the project team. The Test Team will work with the client to develop the acceptance criteria.
    Ad Hoc Testing

    Testing without a formal test plan or outside of a test plan. With some projects this type of testing is carried out as an adjunct to formal testing. If carried out by a skilled tester, it can often find problems that are not caught in regular testing. Sometimes, if testing occurs very late in the development cycle, this will be the only kind of testing that can be performed. Sometimes ad hoc testing is referred to as exploratory testing.
    Alpha Testing
    Testing after code is mostly complete or contains most of the functionality and prior to users being involved. Sometimes a select group of users are involved. More often this testing will be performed in-house or by an outside testing firm in close cooperation with the software engineering department.
    Automated Testing
    Software testing that utilizes a variety of tools to automate the testing process and when the importance of having a person manually testing is diminished. Automated testing still requires a skilled quality assurance professional with knowledge of the automation tool and the software being tested to set up the tests.
    Beta Testing
    Testing after the product is code complete. Betas are often widely distributed or even distributed to the public at large in hopes that they will buy the final product when it is released.
    Black Box Testing
    Testing software without any knowledge of the inner workings, structure or language of the module being tested. Black box tests, as most other kinds of tests, must be written from a definitive source document, such as a specification or requirements document.
    Compatibility Testing
    Testing used to determine whether other system software components such as browsers, utilities, and competing software will conflict with the software being tested.
    Configuration Testing
    Testing to determine how well the product works with a broad range of hardware/peripheral equipment configurations as well as on different operating systems and software.
    End-to-End Testing
    Similar to system testing, the 'macro' end of the test scale involves testing of a complete application environment in a situation that mimics real-world use, such as interacting with a database, using network communications, or interacting with other hardware, applications, or systems if appropriate.
    Functional Testing
    Testing two or more modules together with the intent of finding defects, demonstrating that defects are not present, verifying that the module performs its intended functions as stated in the specification and establishing confidence that a program does what it is supposed to do.
    Independent Verification and Validation (IV&V)
    The process of exercising software with the intent of ensuring that the software system meets its requirements and user expectations and doesn't fail in an unacceptable manner. The individual or group doing this work is not part of the group or organization that developed the software. A term often applied to government work or where the government regulates the products, as in medical devices.
    Installation Testing
    Testing with the intent of determining if the product will install on a variety of platforms and how easily it installs. Testing full, partial, or upgrade install/uninstall processes. The installation test for a release will be conducted with the objective of demonstrating production readiness. This test is conducted after the application has been migrated to the client's site. It will encompass the inventory of configuration items (performed by the application's System Administration) and evaluation of data readiness, as well as dynamic tests focused on basic system functionality. When necessary, a sanity test will be performed following the installation testing.
    Integration Testing
    Testing two or more modules or functions together with the intent of finding interface defects between the modules or functions. Testing completed at as a part of unit or functional testing, and sometimes, becomes its own standalone test phase. On a larger level, integration testing can involve a putting together of groups of modules and functions with the goal of completing and verifying that the system meets the system requirements. (see system testing)
    Load Testing
    Testing with the intent of determining how well the product handles competition for system resources. The competition may come in the form of network traffic, CPU utilization or memory allocation.
    Parallel/Audit Testing
    Testing where the user reconciles the output of the new system to the output of the current system to verify the new system performs the operations correctly.
    Performance Testing
    Testing with the intent of determining how quickly a product handles a variety of events. Automated test tools geared specifically to test and fine-tune performance are used most often for this type of testing.
    Pilot Testing
    Testing that involves the users just before actual release to ensure that users become familiar with the release contents and ultimately accept it. Often is considered a Move-to-Production activity for ERP releases or a beta test for commercial products. Typically involves many users, is conducted over a short period of time and is tightly controlled. (see beta testing)
    Recovery/Error Testing
    Testing how well a system recovers from crashes, hardware failures, or other catastrophic problems.
    Regression Testing
    Testing with the intent of determining if bug fixes have been successful and have not created any new problems. Also, this type of testing is done to ensure that no degradation of baseline functionality has occurred.
    Sanity Testing
    Sanity testing will be performed whenever cursory testing is sufficient to prove the application is functioning according to specifications. This level of testing is a subset of regression testing. It will normally include a set of core tests of basic GUI functionality to demonstrate connectivity to the database, application servers, printers, etc.
    Security Testing
    Testing of database and network software in order to keep company data and resources secure from mistaken/accidental users, hackers, and other malevolent attackers.
    Software Testing
    The process of exercising software with the intent of ensuring that the software system meets its requirements and user expectations and doesn't fail in an unacceptable manner. The organization and management of individuals or groups doing this work is not relevant. This term is often applied to commercial products such as internet applications. (contrast with independent verification and validation)
    Stress Testing
    Testing with the intent of determining how well a product performs when a load is placed on the system resources that nears and then exceeds capacity.
    System Integration Testing
    Testing a specific hardware/software installation. This is typically performed on a COTS (commercial off the shelf) system or any other system comprised of disparent parts where custom configurations and/or unique installations are the norm.
    Unit Testing
    Unit Testing is the first level of dynamic testing and is first the responsibility of the developers and then of the testers. Unit testing is performed after the expected test results are met or differences are explainable / acceptable.
    Usability Testing
    Testing for 'user-friendliness'. Clearly this is subjective and will depend on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
    White Box Testing
    Testing in which the software tester has knowledge of the inner workings, structure and language of the software, or at least its purpose.

    What are the contents in an effective Bug report?

    Project, Subject, Description, Summary, Detected By (Name of the Tester), Assigned To (Name of the Developer who is supposed to the Bug), Test Lead ( Name ), Detected in Version, Closed in Version, Date Detected, Expected Date of Closure, Actual Date of Closure, Priority (Medium, Low, High, Urgent), Severity (Ranges from 1 to 5), Status, Bug ID, Attachment, Test Case Failed (Test case that is failed for the Bug)

    What is Bug Life Cycle?

    Bug Life Cycle is nothing but the various phases a Bug undergoes after it is raised or reported.
    • New or Opened
    • Assigned
    • Fixed
    • Tested
    • Closed

    What is Error guessing and Error seeding ?

    Error Guessing is a test case design technique where the tester has to guess what faults might occur and to design the tests to represent them.
    Error Seeding is the process of adding known faults intentionally in a program for the reason of monitoring the rate of detection & removal and also to estimate the number of faults remaining in the program.

    What is the difference between Bug, Error and Defect?

    Error: It is the Deviation from actual and the expected value.
    Bug: It is found in the development environment before the product is shipped to the respective customer.

    Defect:
    It is found in the product itself after it is shipped to the respective customer.

    What is Test bed and Test data?

    Test Bed is an execution environment configured for software testing. It consists of specific hardware, network topology, Operating System, configuration of the product to be under test, system software and other applications. The Test Plan for a project should be developed from the test beds to be used.
    Test Data is that run through a computer program to test the software. Test data can be used to test the compliance with effective controls in the software.

    What is Negative testing?

    Negative testing - Testing the system using negative data is called negative testing, e.g. testing the password where it should be minimum of 8 characters so testing it using 6 characters is negative testing.

    Explain Load, Performance and Stress Testing with an Example.

    Load Testing and Performance Testing are commonly said as positive testing where as Stress Testing is said to be as negative testing.
    Say for example there is a application which can handle 25 simultaneous user logins at a time. In load testing we will test the application for 25 users and check how application is working in this stage, in performance testing we will concentrate on the time taken to perform the operation. Where as in stress testing we will test with more users than 25 and the test will continue to any number and we will check where the application is cracking.

    What are SDLC and STLC ? Explain its different phases.

    SDLC
    • Requirement phase
    • Designing phase (HLD, DLD (Program spec))
    • Coding
    • Testing
    • Release
    • Maintenance
    STLC
    • System Study
    • Test planning
    • Writing Test case or scripts
    • Review the test case
    • Executing test case
    • Bug tracking
    • Report the defect

    What is Ad-hoc testing?

    Ad hoc testing is concern with the Application Testing without following any rules or test cases.
    For Ad hoc testing one should have strong knowledge about the Application.

    Describe bottom-up and top-down approaches in Regression Testing.

    Bottom-up approach: In this approach testing is conducted from sub module to main module, if the main module is not developed a temporary program called DRIVERS is used to simulate the main module.
    Top-down approach: In this approach testing is conducted from main module to sub module. if the sub module is not developed a temporary program called STUB is used for simulate the submodule.

    What is the difference between structural and functional testing?

    Structural testing is a "white box" testing and it is based on the algorithm or code.
    Functional testing is a "black box" (behavioral) testing where the tester verifies the functional specification.

    What is Re- test? What is Regression Testing?

    Re- test - Retesting means we testing only the certain part of an application again and not considering how it will effect in the other part or in the whole application.
    Regression Testing - Testing the application after a change in a module or part of the application for testing that is the code change will affect rest of the application.

    What is UAT testing? When it is to be done?

    UAT testing - UAT stands for 'User acceptance Testing. This testing is carried out with the user perspective and it is usually done before the release.

    What are the basic solutions for the software development problems?

    • Basic requirements - clear, detailed, complete, achievable, testable requirements has to be developed. Use some prototypes to help pin down requirements. In nimble environments, continuous and close coordination with customers/end-users is needed.
    • Schedules should be realistic - enough time to plan, design, test, bug fix, re-test, change, and document in the given schedule.
    • Adequate testing – testing should be started early, it should be re-tested after the bug fixed or changed, enough time should be spend for testing and bug-fixing.
    • Proper study on initial requirements – be ready to look after more changes after the development has begun and be ready to explain the changes done to others. Work closely with the customers and end-users to manage expectations. This avoids excessive changes in the later stages.
    • Communication – conduct frequent inspections and walkthroughs in appropriate time period; ensure that the information and the documentation is available on up-to-date if possible electronic. More emphasize on promoting teamwork and cooperation inside the team; use prototypes and proper communication with the end-users to clarify their doubts and expectations.

    What are the common problems in the software development process?

    • Inadequate requirements from the Client - if the requirements given by the client are not clear, unfinished and not testable, then problems may come.
    • Unrealistic schedules – Sometimes too much of work is being given to the developer and ask him to complete in a Short duration, then the problems are unavoidable.
    • Insufficient testing – The problems can arise when the developed software is not tested properly.
    • Given another work under the existing process – request from the higher management to work on another project or task will bring some problems when the project is being tested as a team.
    • Miscommunication – in some cases, the developer was not informed about the Clients requirement and expectations, so there can be deviations.

    Why does software have bugs?

    • Miscommunication or no communication – about the details of what an application should or shouldn't do
    • Programming errors – in some cases the programmers can make mistakes.
    • Changing requirements – there are chances of the end-user not understanding the effects of changes, or may understand and request them anyway to redesign, rescheduling of engineers, effects of other projects, work already completed may have to be redone or thrown out.
    • Time force - preparation of software projects is difficult at best, often requiring a lot of guesswork. When deadlines are given and the crisis comes, mistakes will be made.

    What software testing types can be considered?

    Black box testing – This type of testing doesn’t require any knowledge of the internal design or coding. These Tests are based on the requirements and functionality.
    White box testing – This kind of testing is based on the knowledge of internal logic of a particular application code. The Testing is done based on the coverage of code statements, paths, and conditions.
    Unit testing – the 'micro' scale of testing; this is mostly used to test the particular functions or code modules. This is typically done by the programmer and not by testers; it requires detailed knowledge of the internal program design and code. It cannot be done easily unless the application has a well-designed architecture with tight code; this type may require developing test driver modules or test harnesses.
    Sanity testing or Smoke testing – This type of testing is done initially to determine if a new software version is performing well enough to accept it for a major testing effort. For example, if the new software is crashing the systems in every 5 minutes or corrupting databases, the software may not be in a 'sound’ condition to proceed for further testing in its current state.
    Functional testing – This a commonly used black-box testing geared to check the functional requirements of an application; this type of testing should be done by testers.
    Integration testing – This testing is combining the ‘parts’ of an application to determine if they function together correctly. The 'parts' can be code modules, individual applications, client and server applications on a network, etc. This type of testing is especially relevant to the client/server and distributed systems.
    Incremental Integration testing – This is continuous testing of an application when a new functionality is added the existing ones; it checks the application functionality by verifying whether it works separately before all parts of the program are completed, in this type it will be checked whether to introduce test drivers or not; this is done by programmers or by testers.
    Regression testing – This is testing the whole application again after the fixes or the modifications are done on the software. This is mostly done at the end of the Software development life cycle. Mostly Automated testing tools are used for these type of testing.
    System testing – This is a type of black-box type testing that is based on overall requirements specifications; covers all combined parts of a system.
    End-to-end testing – This is similar to system testing; this involves testing of a complete application environment such as interacting with a database, using network communications, or interacting with other hardware, applications and so on.
    UAT (User Acceptance Testing ) – This type of testing comes on the final stage and mostly done on the specifications of the end-user or client.
    Usability testing – This testing is done to check the 'user-friendliness' of the application. This depends on the targeted end-user or customer. User interviews, surveys, video recording of user sessions, and other techniques can be used. Programmers and testers are usually not appropriate as usability testers.
    Compatibility testing – Testing how well the software performs in a particular hardware, software, operating system, network etc.
    Comparison testing – This is nothing comparing the software strengths and weakness with another competing product.
    Mutation testing – This is another method for determining if a set of test data or test cases is useful, by purposely introducing various code changes or bugs and retesting with the original test data or cases to determine whether the 'bugs' are detected.

    How do you decide when you have 'tested enough’?

    Common factors in deciding when to stop are:
    • Deadlines (release deadlines, testing deadlines, etc.)
    • Test cases completed with certain percentage passed
    • Test budget depleted
    • Coverage of code/functionality/requirements reaches a specified point
    • Bug rate falls below a certain level
    • Beta or alpha testing period ends

    Describe the Software Development Life Cycle

    It includes aspects such as initial concept, requirements analysis, functional design, internal design, documentation planning, test planning, coding, document preparation, integration, testing, maintenance, updates, retesting, phase-out, and other aspects.

    Describe the difference between validation and verification

    Verification is done by frequent evaluation and meetings to appraise the documents, policy, code, requirements, and specifications. This is done with the checklists, walkthroughs, and inspection meetings.
    Validation is done during actual testing and it takes place after all the verifications are being done.

    What is the difference between QA and testing?

    Testing involves operation of a system or application under controlled conditions and evaluating the results. It is oriented to 'detection'.
    Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'.


    What is quality assurance?

    Software QA involves the entire software development PROCESS - monitoring and improving the process, making sure that any agreed-upon standards and procedures are followed, and ensuring that problems are found and dealt with. It is oriented to 'prevention'.

    What is the purpose of the testing?

    Software testing is the process used to help identify the Correctness, Completeness, Security and Quality of the developed Computer Software.
    Software Testing is the process of executing a program or system with the intent of finding errors.


0 comments:

Post a Comment