Giter Site home page Giter Site logo

queryintegrity's Introduction

Query Integrity

Query Integrity is framework to create and run tests on software using Metamorphic Testing. The main purpose of the tool is to automatically test and find inconsistency of data query result in order to find bugs and problems in data retrieving related features of software.

This library is originally developed for CSIT314's group assessment at University of Wollongong

The idea

In any data retrieving system, the relation between the result of any 2 queries should be logically corrected (e.g. A search for "A" should not return any result from a search for "not A"). These relations are metamorphic relations. Failing to produce a correct relation between some pair of queries can be a result of:

  • A bug
  • A technical limitation
  • A shortcoming of system design
  • ...

These problems might not appear in development or even in testing due to small size of test data, deterministic natural of manually created tests. We only test what we know can go wrong, but the bugs are normally found where we did not know that can go wrong.

A simple solution for that is to automatically generate multiple pairs of queries that we know what relation of their results should be. Hundreds or thousands of queries can be sent and validate without the creator know what query it is or what is the supposed answer for that query.

The tests

This project currently supports 3 kinds of metamorphic relations that are common among data retrieving systems:

The not test

A query search for A should not return any result in the query search for not A.

The subset test

  • A query search for A should return all the result in the query search for A and B.
  • A query search for A or B should return all the result in the query search for A.

The equal test

  • A query search for A should return the same result as a query search for B if A and B are logically equivalent (e.g. A and not not A, A and B and B and A, ...)

The project

This project provide following modules:

  • query-integrity-core provides testing service as well as interfaces to generate queries that fit your system as well as a validator for the results.

  • mongodb-integration provides an implementation to test mongodb server.

queryintegrity's People

Contributors

duchuanle avatar ducthienbui97 avatar

Watchers

 avatar  avatar  avatar

Forkers

gnvramanarao

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.