GithubHelp home page GithubHelp logo

igorxp5 / pytest-ekstazi Goto Github PK

View Code? Open in Web Editor NEW
9.0 9.0 0.0 66 KB

Ekstazi is a Regression Test Selection algorithm. This is a Pytest plugin implementing it.

License: MIT License

Python 100.00%
ekstazi pytest python regression test-selection testing

pytest-ekstazi's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pytest-ekstazi's Issues

Create the Test Case Selector module

Read the results of the last test execution, calculate the hash of dependencies again, check which dependencies were changed and return which test cases have to run.

Make a simple project to be used for testing

The project should be created under tests directory.

Requirements:

  • Create two test files with some test cases
    • The test cases must cover all files in the project
  • The project needs to have 5 files following the below depedency tree. By following that tree, we can test our Ekstazi algorithm in any sort of project structure.
    files_tree

Let's define in the comments of this thread, what kind of project we may do.

Discover some way to see which files are being tested in runtime

See if we can do the same as original Ekstazi do in Java, observing the files that are being used in runtime. If we can't do that, our next approach would be read the test files before running the test suite, and check import files and their usage in the test cases.

The next steps depends on the success of the research, we would create a function to get dependecies of each test case in a test file, or create a wrapper to execute the tests and collect their dependencies.

About Ekstazi algorithm

Ekstazi

Ekstazi is a Regression Test Selection algorithm. The best scenario is always run all test cases, but this takes time. This is where Ekstazi comes in, the algorithm selects the test cases based on the last changes on the project.

Overview

See below the main characteristics of Ekstazi:

  • Ekstazi is algorithm for non-blackbox tests. So we need the source code to use it.
  • Original Ekstazi doesn't use version control system like Git or SVN.
  • Ekstazi figures out what project files each test case "touch", in runtime. It saves the depedencies of each test.
  • Ekstazi calculates the hash of the content of each project file "touched" in the test cases to identify changes in the files.
  • Based on previous testing round and last project changes, Ekstazi selects just test cases that contains features update.
  • Original Ekstazi was made in Java. Its approach is change the JVM to figure out the dependencies of the test cases.

TODO: Move this to a Wiki page.

Create a module to save the test dependencies

The results include:

  • Hash of the content of each dependency file
  • The test cases location, and the dependecy matrix. The depedency matrix will tell us what files each test cases covers.

Let's save those informations in a JSON file.

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.