Skip to content
This repository has been archived by the owner on Aug 26, 2022. It is now read-only.

Latest commit

 

History

History
57 lines (45 loc) · 4.33 KB

README.md

File metadata and controls

57 lines (45 loc) · 4.33 KB

Overview

P# is a framework that provides the capability of creating asynchronous state-machines, sending events from one machine to another, and writing assertions about system properties (both safety and liveness).

During testing, the built-in P# testing engine captures and controls all (implicit as well as specified) nondeterminism in the system, thoroughly explores the actual executable code to discover bugs, and reports fully-reproducible bug traces. A P# bug trace provides a global order of all events and transitions, and thus is easier to debug.

Getting started with P#

First, build P# from source, following the instructions here, or install our latest NuGet package.

Next, learn about the different ways of using P# here, and how to write your first P# program here.

Now you are ready to dive into various features and topics:

Learn how to use the P# testing infrastructure to write unit-tests, thoroughly check safety and liveness properties, and deterministically reproduce bugs:

Tools

The following provides information regarding the available tools in the P# ecosystem:

Code editing

We provide support for editing the P# language syntax in Visual Studio:

Samples and applications

We provide a collection of samples that show how to use the P# framework to build and systematically test asynchronous, event-driven applications. The P# samples are available in the Git repository, under the Samples directory. You can read more here.

We have also used P# to test applications on top of Azure Service Fabric and Orleans:

Publications

List of publications on P#:

Contributing

To start contributing to P#, read our contribution guidelines.

Contact us

If you are interested in using P# in your project, or have any P# related questions, please send us an email or open a new issue.