Skip to main content

MC/DC analizer for Python

Project description

pymcdc

A Python package to analyze and verify MC/DC (Modified Condition/Decision Coverage) criteria.

Installation

pip install pymcdc

🚀 How to Use

python -m pymcdc foo.py

Analyzes the file foo.py and displays the condition combinations that must be satisfied for each decision.

python -m pymcdc --run foo.py

Executes foo.py and shows which MC/DC combinations were covered.

python -m pymcdc --run --append foo.py

Cumulatively runs foo.py and displays the MC/DC combinations covered across multiple runs.

python -m pymcdc --unittest test_foo.py foo.py

Runs foo.py using the test cases defined in test_foo.py.
The --unittest argument can be used multiple times. The --append option is also supported here.

🔍 Example

python3 -m pymcdc bissexto.py
Line number: (5, 5)
Decision: a < 1 or a > 9999
Combinations to be covered: 
    | Result.   a < 1    a > 9999   Cover. 
-------------------------------------------
  1 |  False    False     False     False  
  2 |   True    True      False     False  
  3 |   True    False      True     False  

Run time: 0.00070 
python3 -m pymcdc --run bissexto.py
Line number: (5, 5)
Decision: a < 1 or a > 9999
Combinations to be covered: 
    | Result.   a < 1    a > 9999   Cover. 
-------------------------------------------
  1 |  False    False     False      True  
  2 |   True    True      False     False  
  3 |   True    False      True      True 
python3 -m pymcdc --unittest test_bissexto.py bissexto.py
Running tests...
.
----------------------------------------------------------------------
Ran 1 test in 0.000s

OK

Line number: (5, 5)
Decision: a < 1 or a > 9999
Combinations to be covered: 
    | Result.   a < 1    a > 9999   Cover. 
-------------------------------------------
  1 |  False    False     False     False  
  2 |   True    True      False     False  
  3 |   True    False      True      True  

📝 Notes

  1. The number of MC/DC requirements for a decision with n conditions is not always n+1. It can be slightly larger due to limitations in the computation algorithm.
  2. For decisions with more than 15 conditions, the analysis may take a few minutes. This is only done once when using the --append option.

👤 Author

Marcio Delamaro

📄 License

MIT

🤝 Contributions

Feel free to open issues or submit pull requests!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymcdc-0.1.tar.gz (8.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymcdc-0.1-py3-none-any.whl (9.4 kB view details)

Uploaded Python 3

File details

Details for the file pymcdc-0.1.tar.gz.

File metadata

  • Download URL: pymcdc-0.1.tar.gz
  • Upload date:
  • Size: 8.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for pymcdc-0.1.tar.gz
Algorithm Hash digest
SHA256 c9cb0e825595ec0f607117c6ce6817ba3e686daad31dc44b3778c1723b8d9b56
MD5 bccaaef223ac1fccbafc0632a8b76e2a
BLAKE2b-256 17d49bf2eb0143324744acb71b6c903836a37afe462de9d5371f92d6d60821e8

See more details on using hashes here.

File details

Details for the file pymcdc-0.1-py3-none-any.whl.

File metadata

  • Download URL: pymcdc-0.1-py3-none-any.whl
  • Upload date:
  • Size: 9.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for pymcdc-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 8b75f9642191052b6c8db7d1b37d26a9b6e2bf4be00a976fe132daf71f25c1ce
MD5 61f1ea81d5297eeaaea5fe3174847c5f
BLAKE2b-256 4b823f80b7b5794a6a0b7921061fab2c9af3e8032d5b1b89df056b444bcdb3d8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page