Giter VIP home page Giter VIP logo

proteum's Introduction

This version of Proteum/IM is a through review of the codebase, converting it to modern C and using current tools for building and testing. It is not currently usable. You must use Proteum/IM 2.0.1, as tagged and released in this project.

Building requirements

  • cmake
  • cmocka

Compilation instructions

cd build
cmake ..
make

How to test Proteum/IM

ctest

How to test other applications using Proteum/IM

Proteum requires GCC to be installed. To use its GUI it is also necessary TCL/TK.

Suposing the executable files are in directory /usr/bin/proteum, run

export PROTEUMIMHOME=/usr/bin/proteum
export PATH=$PROTEUMIMHOME:$PATH
proteumim

Proteum can also be run using command line. We will consider a source file named 'cal.c' and '/tmp/cal' as directory for files for the software under testing (*** caution! instrunctions below are under review and may now work! ***)

  1. Create project: pteste -create -S cal -E cal -D /tmp/cal -C "gcc -O -W cal.c -o cal" -research Cal
  2. List interfaces that can be tested (for interface mutation): li -D /tmp/cal -P __cal cal __cal
  3. List functions that can be tested (for mutation analysis): li -l -D /tmp/cal __cal __cal
  4. Create test set: tcase -create -D /tmp/cal Cal
  5. Add test cases: tcase -add -D /tmp/cal -E cal -p "input data" -EE __cal_inst -trace cal
  6. Create mutants: muta -create -D /tmp/cal Cal
  7. Run mutants:
  8. tcase -e -D /tmp/cal Cal
  9. exemuta -exec -D /tmp/cal Cal
  10. Show results: report -tcase -D /tmp/cal -L 512 Cal

Further documentation

proteum's People

Contributors

magsilva avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

proteum's Issues

Remove static variables from gerais.c

Currently, lib/gerais.c has some static variables such as 'ap_from_buf' and 'bufaux'. Remove them and rewrite the functions that depends upon them: 'inic_from_buf' and 'from_buf'.

Move all error messages to a log file

When running test cases, move all error messages to a log file instead of sending them to a stderr. Alternatively, we could still send messages to stderr, but we must review the code to assure that, for every execution on test cases, we provide different stderr and stdout file descriptors.

Remove limits for importing test cases

A long time ago, I faced a issue when importing test cases. For instance, I tried to exhaustively create and add test cases to current project (test set):

for month in `seq 1 12`; do
  for year in `seq 1 9999`; do
     tcase -add -D /media/disk/Cal -E cal  -p "$month $year"  -EE
__cal_inst -trace cal;
  done;
done

However, only 512 test cases could be imported. It would be important to remove such limit.

Currently, to keep working with more than 512 mutants, we can workaround this by importing as much as 512 test cases, run the mutants, and run tcase with the option to remove test cases that could not kill mutants. This should free some space to import new test cases.

Do not recognize functions of SUT

Proteum fails to recognize functions within a software under testing. That's quite frequent. For instance, if a function makes use of 'sprintf', it is not recognized by Proteum. See Righetto's report:

"""
a ferramenta não consegue reconhecer todas as funções do código; não sei ao certo o porque isso acontece, mas fiz alguns testes e utilizar a função "sprintf" faz com que a função não seja reconhecida, ou utilizar acesso de vetor ou criação estática em uma função diferente da main. Porém, esta ultima afirmação eu não tenho total certeza porque em programas como QuadTree existe uma sctruct com declaração estática de vetor e funciona.
"""

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.