- Ad hoc testing is a commonly used term for software testing performed without planning and documentation.
- The tests are intended to be run only once, unless a defect is discovered. Ad hoc testing is the least formal test method. As such, it has been criticized because it is not structured and hence defects found using this method may be harder to reproduce (since there are no written test cases).
- However, the strength of ad hoc testing is that important defects can be found quickly.
- It is performed by improvisation: the tester seeks to find bugs by any means that seem appropriate.
- Ad hoc testing can be seen as a light version of error guessing, which itself is a light version of exploratory testing
Software Testing Reference
A Complete Reference on Software Testing.
Thursday, 28 June 2012
What is Ad Hoc Testing?
What is Performance Testing?
- Performance testing is a testing performed to determine how a system performs in terms of responsiveness and stability under a particular workload.
- It can also serve to investigate, measure, validate or verify other quality attributes of the system, such as scalability, reliability and resource usage.
- Performance testing is a means of quality assurance (QA). It involves testing software applications to ensure they will perform well under their expected workload.
- The goal of performance testing is not to find bugs but to eliminate performance bottlenecks
- The focus of Performance testing is checking a software program’s
- Speed – Determines whether the application responds quickly
- Scalability – Determines maximum user load the software application can handle.
- Stability – Determines if the application is stable under varying loads
Types of performance testing.
- Load testing – Load testing is the simplest form of performance testing. A load test is usually conducted to understand the behavior of the system under a specific expected load.
- Stress testing – involves testing an application under extreme workloads to see how it handles high traffic or data processing .The objective is to identify breaking point of an application.
- Endurance testing – is done to make sure the software can handle the expected load over a long period of time.
- Spike testing – Spike testing is done by suddenly increasing the number of, or load generated by, users by a very large amount and observing the behaviour of the system. The goal is to determine whether performance will suffer, the system will fail, or it will be able to handle dramatic changes in load.
- Volume testing – Under Volume Testing large no. of. Data is populated in database and the overall software system’s behavior is monitored. The objective is to check software application’s performance under varying database volumes.
- Scalability testing – The objective of scalability testing is to determine the software application’s effectiveness in “scaling up” to support an increase in user load. It helps plan capacity addition to your software system.
- Configuration testing - Rather than testing for performance from the perspective of load, tests are created to determine the effects of configuration changes to the system's components on the system's performance and behaviour. A common example would be experimenting with different methods of load-balancing.
- Isolation testing - Isolation testing is not unique to performance testing but a term used to describe repeating a test execution that resulted in a system problem. Often used to isolate and confirm the fault domain.
Manual Testing and Automation Testing
Manual testing
- Manual testing is the process of manually testing software for defects.
- It requires a tester to play the role of an end user, and use most of all features of the application to ensure correct behavior.
- To ensure completeness of testing, the tester often follows a written test plan that leads them through a set of important test cases.
- Manual testing is a laborious activity that requires the tester to possess a certain set of qualities; to be patient, observant, speculative, creative, innovative, open-minded, resourceful, unopinionated, and skillful.
Automation Testing
- Test automation is the use of software to control the execution of tests, the comparison of actual outcomes to predicted outcomes, the setting up of test preconditions, and other test control and test reporting functions.
- Commonly, test automation involves automating a manual process already in place that uses a formalized testing process.
- Test automation is the process of writing a computer program to do testing that would otherwise need to be done manually.
- Once tests have been automated, they can be run quickly and repeatedly.
- This is often the most cost effective method for software products that have a long maintenance life, because even minor patches over the lifetime of the application can cause features to break which were working at an earlier point in time.
Wednesday, 27 June 2012
What is Security testing?
- Security testing is a process to determine that an information system protects data and maintains functionality as intended.
- The six basic security concepts that need to be covered by security testing are: confidentiality, integrity, authentication, availability, authorization and non-repudiation.
- Security testing is related to the security of data and the functionality of the application. You should be aware of the following concepts while performing security testing:
- Confidentiality - The application should only provide the data to the relevant party e.g. one customer's transactional data should not be visible to another customer; the irrelevant personal details of the customer should not be visible to the administrator and so on.
- Integrity - The data stored and displayed by the application should be correct e.g. after a withdrawal, the customer's account should be debited by the correct amount.
- Authentication - It should be possible to attribute the data transmitted in the application to either the application or the customer. In other words, no one other than the customer or the bank should be able to create or modify any data.
- Authorization - The application or a user should only be able to perform the tasks which they are respectively authorized to perform e.g. a customer should not be able to withdraw more than the balance in their account without having an overdraft facility, the application should not be able to levy charges on a customer account without prior customer approval.
- Availability - The data and functionality should be available to the users throughout the working period e.g. if the bank's operating times are from 8 a.m. to 8 p.m. on all working days, it should be possible for a customer to access their account and make the necessary transactions on their account.
- Non-repudiation - At a later date, it should not be possible for a party to deny that a particular transaction or data change took place e.g. if a customer withdraws an amount from their account, this should trigger the relevant actions (posting to their transaction records, debiting their account and sending them a notification etc.).
What is System Testing?
- Testing the behavior of the entire(whole) software/system as defined in software requirements specification(SRS) is known as system testing.
- Its main focus is to verify that the customer requirements are fulfilled.
- System testing is done after integration testing is complete.
- System testing should test functional and non functional requirements of the software.
- Testing done by a professional testing agent on the completed software product before it is introduced to the market.
- Some of the main testing types which need to be covered in system testing:
- Sanity Testing
- Usability Testing
- Stress Testing
- Load Testing
- Performance Testing
- Regression Testing
- Maintenance Testing
- Security Testing
- Accessibility Testing
Unit Testing and Integration Testing.
Unit Testing
- Testing of individual software components or modules.
- Typically done by the programmer and not by testers, as it requires detailed knowledge of the internal program design and code. may require developing test driver modules or test harnesses.
- The goal of unit testing is to isolate each part of the program and show that the individual parts are correct.
- A unit test provides a strict, written contract that the piece of code must satisfy.
- As a result, it affords several benefits.
Integration testing
- Integration testing is the phase in software testing in which individual software modules are combined and tested as a group.
- It occurs after unit testing and before validation testing.
- Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan to those aggregates, and delivers as its output the integrated system ready for system testing.
- Some different types of integration testing are Top Down Testing and Bottom Up Testing.
- Top Down Testing is an approach to integrated testing where the top integrated modules are tested and the branch of the module is tested step by step until the end of the related module.
- Bottom Up Testing is an approach to integrated testing where the lowest level components are tested first, then used to facilitate the testing of higher level components. The process is repeated until the component at the top of the hierarchy is tested.
Tuesday, 26 June 2012
What is Structural Testing?
- White-box testing (also known as clear box testing, glass box testing, transparent box testing, and structural testing) is a method of testing software that tests internal structures or workings of an application, as opposed to its functionality (i.e. black-box testing).
- In white-box testing an internal perspective of the system, as well as programming skills, are used to design test cases.
- The tester chooses inputs to exercise paths through the code and determine the appropriate outputs.
- White-box test design techniques include, control flow testing, data flow testing, branch testing, path testing, statement coverage and decision coverage.
Subscribe to:
Posts (Atom)