ویرگول
ورودثبت نام
eftekhari.shahab
eftekhari.shahab
eftekhari.shahab
eftekhari.shahab
خواندن ۲ دقیقه·۷ سال پیش

PyExZ3

یک ابزار مناسب برای تولید داده آزمون

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

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

فرض کنید برنامه زیر را در پایتون داریم:

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

CFG
CFG

برنامه های زیادی برای تولید 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 تولید کرده است.

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



۱
۰
eftekhari.shahab
eftekhari.shahab
shahab
shahab
it' me
شاید از این پست‌ها خوشتان بیاید