Subscribe by Email


Showing posts with label Test data. Show all posts
Showing posts with label Test data. Show all posts

Monday, June 24, 2013

Sharing of test data with vendors along with test cases ..

In several previous posts, I have been outlining some details with respect to interaction with vendors, for example - (Outlining focus areas of testing, Process for answering queries from vendors, Extracting relevant test cases); all of these outline some areas of interaction with the vendors. Working with vendors cannot be just one single area, there is a lot related to information regarding processes, tools to be used, focus areas to be decided, and so on. Yet another area of interaction between the vendors and the core testing team is the data to be used for the various areas of testing.
Having testing data is very important. You may have all the required test cases for doing a complete feature testing of the application, but without the test data, all this does not mean anything. For example, if you are testing a video application, then you need to be able to test for the different video formats that the application would support, and there are a large number of such video formats that are needed to be tested (unless you are in the video domain, you would not really believe the number of formats that exist because of the large number of companies that do something for video). For each such different type of video format, you would need to have the required data in this regard - multiple number of video files in each format (as another example, you could have a video file that is just a collection of images, another without audio, and yet another that has a combination of video and audio - there could be a defect that is only found if the video file does not have any audio - we once found a defect like this and it was a big pain to figure out what the problem was; after this, we had to add files with and without audio to our testing matrix).
And video files are large. The total size of the video test data that we used for complete testing was more than 50 GB in size, and it was guarded with great care. Because of the sheer size of the test data, we had decided not to put this test data in the source safe we used (because the data backup of the source safe meant that the guys running the source safe were not happy over backing up so much data that was binary rather than being coding text files) and hence had made multiple disk copies of the this test data, and there was some amount of effort required to ensure that there was a master copy of the data and all copies were synchronized to this copy.
Are you getting an idea of the problem we faced when we added a vendor testing team to this matrix. We had to tell them the focus area of testing, we had to prepare the extraction of the required test cases and make sure that these made sense for somebody wanting to do the testing who did not have the same amount of experience as the core team, and then we had to also pass on the large test data to the vendor while linking this test data to the test cases. Even though we had a fast connection to the vendor, there were some permission requests that also had to be processed since some of the test data that we had was from the vendors with no permissions to pass on, and hence every time we needed to pass them onto a vendor, we needed permission (no monetary problem, just the paperwork and time required), and since the test data was changing with new video cameras entering into the market, there were synchronization problems. And in an unusual case, we found that a particular set of high end video files required a very high end machine and this information was not captured properly. So when the vendor tries to use those files, things were not working.
The challenges may differ depending of the type of test data, but there is a need to ensure that there is a strategy to prepare for the passing on the required test data to the vendor.


Tuesday, November 6, 2012

What is data driven automation testing? What are data driven automation frameworks and data driven scripts?


What is Data Driven Automation Testing

- Data driven automation testing or DDT as the term itself explains is a type of testing that involves tests which are exclusively driven by data. 
- A set of conditions is directly fed to the application as input and the output obtained is verified.
- The process which involves soft coded test environment controls and settings is also verifiable. 
- Input is supplied in the form of a row of the table by the tester in its utter simplest form. 
- This table consists of the values corresponding to the partition or boundary input spaces.
- According to the control methodology of data driven testing the test configuration is read from the data base. 
- This is one king of software testing for which you have so many methodologies to implement it. 
- All the methodologies call for different efforts for creation and subsequent maintenance and hence these methodologies are known to co -exist.
- The basic benefit one can get from the data driven testing is the ease with which the additional inputs can be added to the table on the discovery of the new partitions in it or addition to the SUT or system under test or software product. 
- One aspect of the data driven testing that makes it quite popular in the field of test automation is the cost. 
- Though being quite cheap when it comes to automated testing, the data driven testing can soar high on the cost if carried out manually. 

Methodology of Data Driven Testing

- Data driven testing can be considered to be a testing involving the creation of test scripts to be executed along with the data sets corresponding to them in a frame work. 
- A re-usable test logic is offered by the testing frame work that helps a lot in the reduction of the maintenance part of the software system or application and brings about improvement in the test coverage. 
- For an application, there can be one or more than one central data sources where all this stuff such as input and result data values can be stored. 
- In data driven testing the actual organization and format can be made specific to implementation. 
- Both input and output verification values are included in the test data.
- The facility of harvesting data from a running system has been provided via a ‘sniffer’ or a purpose – built custom tool for the automation environments which are quite advance or we can say mature. 
- The play back of the harvested data is performed by the frame work of data driven testing thus resulting in a automated regression testing tool that is quite powerful. 
- There are certain tasks that are to be carried out during the data driven testing and are coded in the test scripts:
  1. Navigation through the program
  2. Performing read operations on the data sources
  3. Logging of the test status
  4. Logging of the test information and so on.
- Anything that carries a potential to vary or to change variably (for example, end points, locations, test data, environment and so on.) are segregated from the test scripts or logic. 
- These elements are then placed in what is called an external asset. 
- This external asset comprises a test data set or configuration. 
- The logic which the test scripts execute is operated by the data values. 


Monday, October 8, 2012

How Does Run time data (Parameterization) is handled in QTP?


Efficient run time data handling is quite important for proper test automation through quick test professional. In this article we take up discussion regarding how run time data is parameterized or handled during a run session in quick test professional.
The parameterization of run time data is necessary in quick test professional  as it enhances test components. 

What happens in Run-time Data Parameterization?

- In run time data parameterization or handling, a variable is passed as a parameter or an argument via an external source which is generally a generator in most of the cases. 
- This variable or parameter which is passed essentially consists of a value that is assigned via the generator as mentioned in the previous line. 
- The parameterization of the variables in the test component can be done in a series of different check points as well as in a series of a set of different steps as it is required by the situation.
- Apart from normal values, the parameterization of the action data values can also be done. 
- For parameterizing the same value in a series of several steps the data driven wizard can be used.  

How it is handled in QTP?

- Quick test professional test automation suite comes with an in built integrated spread sheet when the run time data table is filled up with the test data. 
- This spread sheet is just like the excel spread sheet and thus multiple test iterations can be created which in turn will save you a big deal on the side of programming efforts. 
- The run time data can be entered either manually or in an automatic way by importing the data from the spread sheets, text files, data bases and so on. 
The spread sheets in quick test professional come with full functionality as that of the excel spread sheets. 
- Using these spread sheets following tasks can be achieved:
  1. Manipulation of the data sets
  2. Creation of multiple iterations of the tests
  3. Expanding test coverage without unnecessary programming and so on.
- In simple form, parameterization can be defined as providing multiple test data or inputs to the tests. 
- While working on quick test professional, input can be supplied in the below mentioned 4 ways:
  1. Input through note pad
  2. Input through key board
  3. Input or import via a data base
  4. Input through excel spread sheet.

What is Run Time Data

Run time data is nothing but a live version of the data that has a current association with the test that is currently under execution. 
There are two methods available for the parameterization of the run time data as mentioned below:
  1. DTSheet.GetParameter: with this parameterization method the specified parameter can be retrieved from the run time data table.
  2. DTSheet.AddParameter: with this parameterization method a new column is added.
Properties of Run-Time Data
  1. Name property: It defines the name of the column in the run time data table.
  2. Raw value property: It defines the raw value of a cell residing in the current row of the parameter under consideration. The actual string written in the cell before computation is called the raw value for example actual text present in some formula.
  3. Value property: This is the default property of the parameter and used for retrieving as well as setting the value of the cell of the active row in run time data table.
  4. Value by row property: It is used for retrieving the value of the in the row specified by the parameter.  


Saturday, July 14, 2012

What are characteristics of fuzz technique? What are uses of fuzz technique?


Fuzz testing or fuzzing as it is commonly known as, is another type of very popular mixed software testing methodology i.e., it can be either implemented as a black box testing technique or white box testing technique or even as grey box testing technique, though the latter case being very rare. 
- It also provides the options for running it manually or by some semi automated or fully automated processes. 
- Unexpected, invalid or random data is what all is fed as input data values to the test cases created for the fuzz testing of a software system or application. 
- After the arrangement of the test input data values for the test cases, the whole software system or application is subjected to an inspection to determine if at all it is experiencing any problems like crashes, memory leaks or failure of the code assertions that are nothing but built in defects in the software system or application. 
- Fuzz testing or fuzzing is actually a testing methodology that is categorized under the category of the security testing and is often used for security checks of a software system or application. 

Fuzz testing if further divided results in to two sub categories as described below:
1. Generation based fuzz testing: 
This type involves creation of entirely new set of input data based on the model input data and
2. Mutation based fuzz testing: 
This type is concerned with the generation of new set of data by mutating the existing samples.

Fuzz testing lays more emphasis more on the network protocols and the file formats of the software system or application than the other aspects of the system. But this does not hold necessary that only the network protocols and file formats should undergo fuzz testing, other aspects of the input data for the system can also be subjected to the fuzz testing. Common input for the fuzz testing basically includes:
  1. Key board events
  2. Mouse events
  3. Environment variables and
  4. API calls sequence.
The unusual input forms are:
Such as those being mentioned below can also be subjected to fuzz testing:
  1. Shared memory
  2. Contents of the data base of the software system or application and
  3. Inter leaving of threads (precise)
The input data which manages to cross the trust boundary of the software system or application catches the attention of the testers more than any other happening during the testing. The origination of the fuzz testing is traced back to the University of Wisconsin and discovered by the professor Barton Miller. 

Uses of Fuzz Testing


The fuzz testing has emerged as a software testing technique with more than one uses:
  1. For the testing of large projects having a budget just enough for the development of the test tools it can be employed as black box testing technique.
  2. It is a very feasible and affordable software testing technique and has a high benefit- to - cost ratio.
  3. The fuzz testing proves helpful in providing a sample stating the behavior of the software system or application generated in a random manner.
  4. It very effectively demonstrates the exception handling capability of a piece of the source code of the program without crashing.
  5. Fuzz testing gives an assurance for the maintenance of the overall quality of the software system or application rather than just acting as a testing tool for finding bugs.
  6. Fuzz testing can also be used as a substitute for the formal methods employed for exhaustive testing of the software system.
  7. One can rely on fuzz testing for determining the reliability of the software system as an application of static analysis, code audits or partial rewrites.


Sunday, March 18, 2012

Explain the concepts of fuzz test technique?

WHAT IS FUZZ TESTING?

- Fuzz testing is the formal name for fuzzing which as we know is another software testing technique that involves playing with the software system or application using all types of possible invalid input test data.

- By the invalid input test data we mean it can be either unexpected data or random data i.e., any other type of test data other than the specified input data type.

- It is not necessary that the fuzz testing should always be automated; it can also be semi automatic though keeping the whole process fully automated consumes less time and effort.

- Semi automatic process is used only when there is manual interference required in the testing.

- After feeding the invalid input data to the software system or application, the behavior of the system is monitored for any exceptions like hanging, crashing or failing of the code assertions that are built in and also check for any memory leaks.

From the above discussions we can easily make out that the fuzz testing has been developed for testing of the security related issues of the software system or application. Till now two types of fuzz testing have been identified namely:

1. Mutation based testing
2. Generation based testing

CONCEPTS OF FUZZ TESTING

- Fuzz testing was developed to complement the negative testing and syntax testing.

- Both of the above types of the fuzz testing can be either employed as white box testing technique or black box testing technique or as a mix of the two techniques i.e., grey box testing.

- Whatever technique may be used, it is focussed up on the common target i.e., network protocols, file formats and so on.

- Though these two are the usually targeted elements, almost any type of input test data for the program can be subjected to the fuzz testing.

- The most common types of input data include:
1. Sequence of API calls
2. Environment variables
3. Mouse events
4. Keyboard events etc.

- Apart from just testing the input test data types, even some elements like shared memory, contents of a data base, interleaving of threads etc can also be tested by the fuzz test.

- But, usually the input that is able to cross the trust boundary of the security of the software system or application is targeted.

- Among all other approaches to fuzz testing, the one which is mostly preferred is the black box approach.

- This approach is mostly employed for the testing of large software projects having a budget for the development of the testing tools.

- Fuzz testing is included in the class of the software testing techniques that offer a high benefit – to – cost ratio.

- Like other software testing techniques, fuzz testing also has a drawback which is that it is able to develop only a sample of the behavior of the software system.

- In some rare cases, if the software passes the fuzz test, it merely indicates that only a part of the software system can effectively handle the unexpected input data types without any problem.

- This tells us that fuzz testing can be considered as an overall quality assurance factor and not merely just a bug finding tool.

- Fuzz testing is also not to be taken as a substitute neither for the formal methods nor for the exhaustive testing.

- It also gives us a gross measurement of the reliability of the software.

- Based on the results of the fuzz testing, it can be decided that which part needs a partial rewrite, static analysis or code audits.


Sunday, March 4, 2012

What is meant by test bed and test data?

Software testing is loaded with so many concepts and terms that sometimes it gets so confusing that one is not able to decide what a concept means. To carry out effective software testing, one needs to be thorough with all sorts of terms related to it like test bed, test data, test logs, test environment, test cases and etc.

Here in this article we are going to discuss regarding two significant terms namely test bed and test data.

INTRODUCTION TO TEST BED

- Test bed can be thought of as platform on which the experimentations are carried out for development of large projects.
- Test beds are developed so that any amount and kind of rigorous as well as replicable and transparent testing of the computational tools, scientific theories as well as new technologies can be carried out on it.
- The term test bed usually denotes a development environment.
- These types of development environment are shielded or kept safe from the hazards of real and live testing i.e., testing in a production environment.
- The development environment provided by the test bed is ideal for carrying out testing on an isolated module which can be a library, functionality, feature or class.
- Isolated testing of some modules is very much required during the usual testing.
- It is not necessary that a test bed should be implemented only for the purpose of maintaining security during the testing schedule.
- A test bed serves as a proof for a new module or concept that it has been tested in isolation and later will be added to the software system or application.
- A skeleton framework or replica of the actual framework is set all around the module in order to make it behave like it has already been installed in the software system or application.
- For an application to be tested, the test bed should be composed of both hardware and software components.
- Test environment is another name for test bed.
- The term test bed is a less familiar one and is rarely used.
- These days online test beds are also available where the public can test the HTML or CSS code that they have created and want to test for the outcomes.

COMPONENTS OF TEST BED
A typical test bed includes the below mentioned components:

1. Hardware
2. Software and
3. Networking components

INTRODUCTION TO TEST DATA

- Test data is the data that has been exclusively designed to be used an input for the test cases for software testing.
- Sometimes data might be used for some comparison purpose.
- Other times it might be used to check how the program behaves to unusual types of data.
- There are many approached for producing test data.
- Some are highly systematic and focussed; some are more informal while some others are automated.
- Test data generation forms an extremely important part of the whole software development life cycle.
- Nowadays test data generation has become a less intensive task as there are many automated data generation tools available.


Friday, February 10, 2012

Automated Test Data Generation Using an Iterative Relaxation Method ?

Software development is not complete without software testing. It constitutes an inseparable part of software development process. Almost 50 percent of the total funds for development of a software are spend on software testing and this process consumes most of the time of the whole development process.

AUTOMATED TEST DATA GENERATION
Generation of test data for the given test and according to the testing criteria proves to be quite a difficult problem.
- The automated test data generation can relieve much stress of the software testers.
- Generation of test data that is used to make a program follow a given path is the most prominent and an important problem that arises while carrying out the path oriented testing.
- The obtained input is refined by various iterations and another input is obtained.
- The whole process predicates on this obtained input.
- The statements of the program relevant to the evaluation of each branch are executed in each iteration.
- Up on each iteration, a set of linear constraints is obtained which are then solved to obtain the increment values for the input data.
- The obtained increment values are added to the current input value to obtain the input data that is to be used for the next iteration.

RELAXATION METHODS
- The relaxation method provides knowledge about the amount by which the value of each input variable should be modified for the branches on the path in order to evaluate the desired result.

ITERATIVE RELAXATION METHODS
- These can be defined as techniques for solving system of equations.
- Relaxation methods are also iterative methods defined for numerical problems of mathematics.
- They are extensively used for solving system of equations which include the following types:
(A) Linear equations
Relaxation methods are used for solving the linear equations. Problems like that of linear least squares are usually addressed under this category.

(B) System of linear inequalities
Iterative or relaxation methods prove very effective in solving the system of linear inequalities which represent the problems similar to those that arise during linear programming.

(C) Non linear system of equations
These days, iterative methods or relaxation methods have been developed and prove a great help in solving system of equations which are non linear.

- Iterative relaxation methods have proven to be very effective and important methodology in providing solutions for linear system of equations.

- They prove to be effective system of equations that are used to solve partial differential equations based on the model of ellipse.

- These systems of equations are basically used to describe problems related to boundary conditions and values in which the value of the function in the solution is indicated or specified on the boundary of a specified domain.

- If the branch conditions on a path are linear in nature, the iterative relaxation technique either obtains a solution for such a path in just one iteration or it declares that the path is in-feasible.

- We can say that the existing approaches require an unacceptably large number of iterations for longer paths since they use only one branch predicate as well as input variable at a time.

- These methods also use back tracking.

- If the branch conditions on a path are non linear in nature, then it takes more than one iteration to get the desired input data.

- But, the set of constraints that has to be solved is linear in nature and can be solved using the method of gauss elimination.

These advantages make the technique of automated test data generation practical as well as suitable for automated testing.


Facebook activity