یک ابزار مناسب برای تولید داده آزمون
فرض کنید یک برنامه دارید که یال های زیادی دارد و برای اینکه تمام یال ها رو بتوانید پیمایش کنید نیاز به ورودی های مختلفی دارید. این ابزار به شما کمک می کند بصورت اتوماتیک تمام یال ها را بپیمایید و داده ای مورد نیاز را برای تست برای شما تولید می کند.
این ابزار بر روی زبان پایتون توسعه داده شده است و از لایبرری قدرتمند z3 استفاده می کند.
فرض کنید برنامه زیر را در پایتون داریم:

این برنامه ساختاری به شکل زیر دارد:

برنامه های زیادی برای تولید CFG وجود دارد که یکی از بهترین آنها و ساده ترین آنها که به زبان JAVA کار می کند به نام progex-v3.4.5 وجود دارد.
حال به کمک pyexz3 داده آزمون هایی تولید می کنیم که تمام یال ها را پوشش بدهد:
برای کار با PyexZ3 نیاز است پایتون 3 و لایبرری z3 بر روی سیستم نصب شده باشد.
نصب Z3:
ابتدا لایبرری را از اینجا دانلود کنید
سپس دستور زیر را وارد کنید:
cd build; make
بعد دستور زیر:
make install
پس از نصب موفقیت آمیز شما باید این comment را دریافت کنید:
Z3Py was installed at /.../usr/lib/python-2.7/site-packages, make sure
this directory is in your PYTHONPATH environment variable. @echo Z3 was
successfully installed.
سپس اضافه کردن path زیر به PYTHONPATH:
export PYTHONPATH=$HOME/usr/lib/python-2.7/site-packages:$PYTHONPATH
حال می توانید پایتون را run کنید و قطعه کد زیر را اجرا کنید:
from z3 import *
x = Real('x')
y = Real('y')
s = Solver()
s.add(x + y > 5, x > 1, y > 1)
print(s.check())
print(s.model())
quit()
خروجی باید به شکل زیر نمایش داده شود:
>>> print(s.check())
sat
>>> print(s.model())
[y = 4, x = 2]
تبریک میگم الان لایبرری z3 با موفقیت بر روی پایتون نصب شده است
حال می توانید از برنامه PyexZ3 استفاده کنید
برای این کار کافیست از دستور زیر استفاده کنید:
pyexz3 FILE.py
که File در اینجا اسم متدی است که در برنامه استفاده کردید
از آنجا که اسم متد ما py بود پس ما دستور زیر را اجرا می کنیم:
pyhton3 pyexz3 py.py
اسم خروجی چیزی به مانند شکل زیر خواهد بود:

همانطور که مشاهده می کنید مقادیر مختلفی برای n تولید کرده است.
و تمامی یال ها را می پیماید. حتی اگر منطق برنامه مشکل داشته باشد به طوری یک یال هرگز پیموده نشود به شما خطا بر میگرداند و شما متوجه خطای خود خواهید شد.