The fMBT (free Model-Based Testing) tool automatically generates and executes tests. It is suitable for testing anything from individual C++ classes to GUI applications and distributed systems containing a range of different devices. fMBT provides a model editor, test generator, adapters for various purposes and tools for analysing logs.
Quick start for Docker users:
Build an image including commandline and GUI utilities:
docker build . -t fmbt-gui:latest -f Dockerfile.fmbt-gui
See Dockerfile.fmbt-gui on running fmbt3-editor from the image.
Quick start for Ubuntu 24.04 and later users:
sudo apt install -y autoconf automake build-essential debhelper flex gawk git-core gnuplot graphviz imagemagick libboost-dev libboost-regex-dev libedit-dev libglib2.0-dev libmagickcore-dev libpng16-16 libtool libxml2-dev python3 python3-pip python3-dev python3-pexpect python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtwidgets tesseract-ocr
./autogen.sh && ./configure && make -j 4 && sudo make install
Quick start for Debian 11 / Ubuntu 22.04 users:
### Note: use fmbt3-editor instead of fmbt-editor.
sudo apt install -y autoconf automake build-essential debhelper flex gawk git-core gnuplot graphviz imagemagick libboost-dev libboost-regex-dev libedit-dev libglib2.0-dev libmagickcore-dev libpng16-16 libtool libxml2-dev python2 python2-dev python3-pexpect python3-distutils python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtwidgets tesseract-ocr
./autogen.sh && ./configure && make -j 4 && sudo make install
cd utils3 && sudo make install
Quick start for Debian 10 / Ubuntu 20.04 users:
### Note: use fmbt3-editor instead of fmbt-editor.
sudo apt install -y autoconf automake build-essential debhelper flex gawk git-core gnuplot graphviz imagemagick libboost-dev libboost-regex-dev libedit-dev libglib2.0-dev libmagickcore-dev libpng16-16 libtool libxml2-dev python python-dbus python-dev python3-pexpect python3-distutils python3-pyside2.qtcore python3-pyside2.qtgui python3-pyside2.qtwidgets tesseract-ocr
./autogen.sh && ./configure && make -j 4 && sudo make install
cd utils3 && sudo python3 setup.py install
Quick start for Debian 9 / Ubuntu 18.04 and earlier users:
sudo apt-get install build-essential libglib2.0-dev libboost-regex-dev libedit-dev libmagickcore-dev python-dev python-pexpect python-dbus python-gobject gawk libtool autoconf automake debhelper libboost-dev flex libpng16-16 libxml2-dev graphviz imagemagick gnuplot python-pyside tesseract-ocr
Quick start for Fedora users:
yum install glibc-devel glib2-devel boost-devel libedit-devel gcc-c++ pexpect dbus-python libtool dh-autoreconf flex libpng12 libxml2-devel graphviz ImageMagick ImageMagick-devel gnuplot python-devel python-pyside tesseract
Quick start for Arch users (assuming base and base-devel to be installed):
pacman -S libedit imagemagick libxml2 boost python2 python gnuplot graphviz gts leptonica tesseract tesseract-data python-pexpect python-dbus boost libtool flex imagemagick python2-pexpect python2-pyside python-pyside-common python2-shiboken
You will also need X (xorg-server) in order to use fmbt-editor and
fmbt-scripter.
./autogen.sh # run only if you cloned sources from git ./configure # add parameter PYTHON=python2 when building on Arch Linux make sudo make install
Known issue with Fedora and Arch Linux: By default "make install" installs Python libraries into directories that are not in the default PYTHONPATH. Add them to the path: export PYTHONPATH=$PYTHONPATH:/usr/local/lib/python2.7/site-packages:/usr/local/lib64/python2.7/site-packages
Windows users:
See README-windows.txt for building fMBT for Windows.
See artifacts built in gitlab CI/CD pipelines.
https://gitlab.com/fmbt/fmbt_ci/pipelines
Create a model and a test configuration:
fmbt-editor helloworld.aal helloworld.conf
Run the first test:
fmbt -l first.log helloworld.conf
See what it executed:
fmbt-log first.log
doc/aal_python.txt AAL/Python language reference documentation.
doc/configuration.txt Test configuration reference documentation.
https://github.com/01org/fMBT/wiki/GUI-testing GUI testing interfaces for Android, Tizen, VNC, Windows and X11.
examples/filesystemtest Test a filesystem: mkdir, rmdir, access.
examples/c++-unittest Test a C++ class.
examples/javascript-unittest Test a JavaScript API in a browser.
examples/python-unittest Test a Python class.
https://github.com/askervin/fmbt-mplayertest Test MPlayer's pause, continue, next song, prev song, add song, and reset playlist.
https://github.com/askervin/fmbt-androidtest Test the phone application on Android: make calls, put calls on hold, swap calls, hang up calls from the phone application and homescreen menu.
make check Run tests against the source tree as it is.
test/git-HEAD/run.sh Run tests against the latest commit in the current git branch.