.\" -*- mode: troff; coding: utf-8 -*- .\" Automatically generated by Pod::Man v6.0.2 (Pod::Simple 3.45) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" \*(C` and \*(C' are quotes in nroff, nothing in troff, for use with C<>. .ie n \{\ . ds C` "" . ds C' "" 'br\} .el\{\ . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" .\" Required to disable full justification in groff 1.23.0. .if n .ds AD l .\" ======================================================================== .\" .IX Title "PRIVOXY-REGRESSION-TEST 1" .TH PRIVOXY-REGRESSION-TEST 1 2026-03-31 "perl v5.42.2" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "نام (NAME)" privoxy\-regression\-test \- چارچوب آزمون رگرسیون برای Privoxy .SH "خلاصه دستور (SYNOPSIS)" .IX Header "SYNOPSIS" \&\fBprivoxy\-regression\-test\fR [\fB\-\-check\-bad\-ssl\fR] [\fB\-\-curl curl\fR] [\fB\-\-debug bitmask\fR] [\fB\-\-forks\fR forks] [\fB\-\-fuzzer\-feeding\fR] [\fB\-\-fuzzer\-feeding\fR] [\fB\-\-help\fR] [\fB\-\-level level\fR] [\fB\-\-local\-test\-file testfile\fR] [\fB\-\-loops count\fR] [\fB\-\-max\-level max\-level\fR] [\fB\-\-max\-time max\-time\fR] [\fB\-\-min\-level min\-level\fR] \fB\-\-privoxy\-address proxy\-address\fR \&\fB\-\-privoxy\-cgi\-prefix cgi\-prefix\fR [\fB\-\-retries retries\fR] [\fB\-\-test\-number test\-number\fR] [\fB\-\-show\-skipped\-tests\fR] [\fB\-\-sleep\-time\fR seconds] [\fB\-\-verbose\fR] [\fB\-\-version\fR] .SH "توضیحات (DESCRIPTION)" .IX Header "DESCRIPTION" ابزار .B Privoxy\-Regression\-Test قرار است روزی به یک مجموعه کامل آزمون رگرسیون برای .B Privoxy تبدیل شود. با این حال هنوز کاملاً به آن مرحله نرسیده است و در حال حاضر فقط می‌تواند عملیات روی سرایندها را بیازماید، کد وضعیت بازگشتی برای درخواست به نشانی‌های اینترنتی دلخواه را بررسی کند و اعمال شدن اقدامات بر آن‌ها را بسنجد. .PP عملیات مربوط به سرایند کلاینت با درخواست به \&\fBhttp://p.p/show\-request\fR و بررسی این‌که آیا .B Privoxy درخواست اولیه را مطابق انتظار تغییر داده است یا خیر آزموده می‌شوند. .PP درخواست اصلی هم شامل سرایندی است که باید عملیات مورد آزمایش روی آن انجام گیرد و هم شامل یک سرایند اضافی فعال‌کننده برچسب‌گذار است که عملکرد آزمایشی را فعال می‌سازد. .PP اقدامات اعمال‌شده از طریق \&\fBhttp://p.p/show\-url\-info\fR بررسی می‌شوند. .SH "نحو فایل پیکربندی (CONFIGURATION FILE SYNTAX)" .IX Header "CONFIGURATION FILE SYNTAX" پیکربندی .B Privoxy\-Regression\-Test درون فایل‌های اقدام (action files) نرم‌افزار .B Privoxy تعبیه شده و از طریق رابط وب .B Privoxy بارگذاری می‌شود. .PP این قابلیت آزمایش نسخه‌ای از .B Privoxy را که روی یک سیستم راه دور اجرا می‌شود آسان‌تر کرده و مانع از به‌روزرسانی آزمون‌ها بدون به‌روزرسانی متناظر در پیکربندی .B Privoxy می‌شود. .PP یک بخش آزمون اقدام سرایند کلاینت به شکل زیر است: .PP .Vb 4 \& # Set Header = Referer: http://www.example.org.zwiebelsuppe.exit/ \& # Expect Header = Referer: http://www.example.org/ \& {+client\-header\-filter{hide\-tor\-exit\-notation} \-hide\-referer} \& TAG:^client\-header\-filter\e{hide\-tor\-exit\-notation\e}$ .Ve .PP مثال بالا باعث می‌شود .B Privoxy\-Regression\-Test سرایند \&\fBReferer: http://www.example.org.zwiebelsuppe.exit\fR را تنظیم کند و انتظار داشته باشد که به \&\fBReferer: http://www.example.org\fR تغییر یابد. .PP هنگام آزمودن این بخش، .B Privoxy\-Regression\-Test سرایند \&\fBX\-Privoxy\-Control: client\-header\-filter{hide\-tor\-exit\-notation}\fR را تنظیم می‌کند که موجب می‌شود برچسب‌گذار .B privoxy\-control برچسب \&\fBclient\-header\-filter{hide\-tor\-exit\-notation}\fR را ایجاد کند؛ این برچسب در نهایت باعث فعال‌سازی بخش اقدام در .B Privoxy می‌شود. .PP توجه داشته باشید که خود اقدامات فقط توسط .B Privoxy استفاده می‌شوند؛ .B Privoxy\-Regression\-Test آن‌ها را نادیده می‌گیرد و تا زمانی که انتظارات برآورده شوند موفقیت‌آمیز عمل خواهد کرد. .PP یک آزمون واکشی (fetch test) به صورت زیر است: .PP .Vb 2 \& # Fetch Test = http://p.p/user\-manual \& # Expect Status Code = 302 .Ve .PP این نمونه به .B Privoxy\-Regression\-Test می‌گوید که نشانی \&\fBhttp://p.p/user\-manual\fR را درخواست کرده و انتظار پاسخی با کد وضعیت HTTP .B 302 داشته باشد. مسلماً این یک آزمون بسیار دقیق نیست و عمدتاً برای ایجاد پوشش کد جهت Valgrind یا اطمینان از نصب صحیح قالب‌ها کاربرد دارد. .PP اگر مایلید صفحات CGI که به ارجاع‌دهنده معتبر (trusted referer) نیاز دارند را بیازمایید، می‌توانید از ساختار زیر استفاده کنید: .PP .Vb 1 \& # Trusted CGI Request = http://p.p/edit\-actions .Ve .PP این آزمون مانند آزمون‌های معمولی واکشی عمل می‌کند، اما سرایند referer را روی یک مقدار معتبر تنظیم می‌نماید. .PP اگر هیچ کد وضعیت مورد انتظاری به طور صریح تعیین نشود، کد .B 200 به کار می‌رود. .PP برای اطمینان از مسدود بودن یک نشانی: .PP .Vb 1 \& # Blocked URL = http://www.example.com/blocked .Ve .PP برای اطمینان از اعمال مجموعه مشخصی از اقدامات روی یک نشانی: .PP .Vb 2 \& # Sticky Actions = +block{foo} +handle\-as\-empty\-document \-handle\-as\-image \& # URL = http://www.example.org/my\-first\-url .Ve .PP اقدامات پایدار (sticky actions) برای تمامی نشانی‌های زیر آن تا رسیدن به دستورالعمل sticky actions بعدی بررسی می‌شوند. .PP برای اطمینان از این‌که درخواست‌ها برای یک نشانی تغییرمسیر داده می‌شوند: .PP .Vb 2 \& # Redirected URL = http://www.example.com/redirect\-me \& # Redirect Destination = http://www.example.org/redirected .Ve .PP برای نادیده گرفتن یک آزمون، خط زیر را اضافه کنید: .PP .Vb 1 \& # Ignore = Yes .Ve .PP تفاوت بین یک آزمون ردشده و یک آزمون حذف‌شده در این است که حذف آزمون شماره آزمون‌های بعدی را تحت تأثیر قرار می‌دهد، در حالی که آزمون ردشده همچنان بارگذاری می‌شود و شماره آزمون‌ها بدون تغییر باقی می‌ماند. .PP گاهی تغییرات عمدی کاربر با آزمون‌های پیکربندی پیش‌فرض ناسازگار است و موجب شکست آزمون می‌شود. افزودن دستورالعمل Ignore به آزمون‌های ناموفق راهگشاست، اما نامناسب است زیرا این دستورالعمل احتمالاً در به‌روزرسانی بعدی از بین می‌رود. .PP شرایط بازنویسی (Overwrite conditions) یک راهکار جایگزین است و می‌تواند در هر فایل اقدامی قرار گیرد، مشروط بر این‌که بعد از آزمونی بیاید که انتظار شکست آن می‌رود. این شرایط باعث می‌شوند تمام آزمون‌های قبلی منطبق با آن شرط رد شوند. .PP توصیه می‌شود شرط بازنویسی پایین‌تر از بخش سفارشی .B Privoxy که سبب شکست مورد انتظار آزمون شده، و پیش از آزمون سفارشی که رفتار مورد انتظار کنونی را می‌آزماید قرار گیرد. مثال: .PP .Vb 8 \& # The following section is expected to overwrite a section in \& # default.action, whose effect is being tested. Thus also disable \& # the test that is now expected to fail and add a new one. \& # \& {+block{Facebook makes Firefox even more unstable. Do not want.}} \& # Overwrite condition = http://apps.facebook.com/onthefarm/track.php?creative=&cat=friendvisit&subcat=weeds&key=a789a971dc687bee4c20c044834fabdd&next=index.php%3Fref%3Dnotif%26visitId%3D898835505 \& # Blocked URL = http://apps.facebook.com/ \& .facebook./ .Ve .SH "سطوح آزمون (TEST LEVELS)" .IX Header "TEST LEVELS" تمام آزمون‌ها دارای سطوح آزمون هستند تا کاربر بتواند اجرای آن‌ها را کنترل کند (به \fIگزینه‌ها (OPTIONS)\fR در ادامه مراجعه کنید). سطوح آزمون یا با دستورالعمل .B Level یا به صورت ضمنی بر اساس نوع آزمون تعیین می‌شوند. .PP آزمون‌های تغییرمسیر به صورت پیش‌فرض در سطح 108، آزمون‌های مسدودسازی در سطح 7، آزمون‌های واکشی در سطح 6، آزمون‌های «اقدامات پایدار» در سطح 5، آزمون‌های درخواست‌های معتبر CGI در سطح 3 و آزمون‌های اقدام سرایند کلاینت در سطح 1 قرار دارند. .PP سطح فعلی آزمون‌های تغییرمسیر بالاتر از مقدار پیش‌فرض max\-level است، زیرا آزمون‌های ناموفق منجر به برقراری ارتباطات خروجی می‌شوند. از گزینه .B \-\-max\-level برای اجرای آن‌ها نیز استفاده کنید. .PP دستورالعمل «Default level offset» می‌تواند برای تغییر سطح پیش‌فرض با یک مقدار مشخص استفاده شود. این دستورالعمل تمام آزمون‌های بعد از خود را تا انتهای فایل یا تا رسیدن به دستورالعمل «Default level offset» بعدی تحت تأثیر قرار می‌دهد. هدف از این دستورالعمل، آسان‌تر کردن رد کردن آزمون‌های مشابه در یک فایل معین بدون نیاز به حذف یا غیرفعال کردن کامل آزمون‌هاست. .SH "گزینه‌ها (OPTIONS)" .IX Header "OPTIONS" \&\fB\-\-check\-bad\-ssl\fR به جای اجرای آزمون‌های رگرسیون شرح‌داده‌شده در بالا، صفحاتی را از badssl.com با گواهی‌های نامعتبر درخواست می‌کند تا اطمینان حاصل شود که .B Privoxy مشکلات گواهی را تشخیص می‌دهد. این گزینه تنها زمانی کار می‌کند که .B Privoxy با FEATURE_HTTPS_INSPECTION کامپایل شده باشد، به درستی پیکربندی شده باشد و بتواند به اینترنت متصل شود. .PP \&\fB\-\-curl curl\fR استفاده از باینری غیرپیش‌فرض curl. .PP \&\fB\-\-debug bitmask\fR افزودن ماسک بیتی ارائه‌شده به صورت عدد صحیح به تنظیمات اشکال‌زدایی. .PP \&\fB\-\-forks forks\fR تعداد انشعاب‌هایی (forks) که باید پیش از اجرای آزمون‌های رگرسیون آغاز شوند. این گزینه عمدتاً برای آزمون فشار کاربرد دارد. .PP \&\fB\-\-fuzzer\-address\fR آدرس شنود مورداستفاده هنگام اجرای آزمون‌های رگرسیون. مفید برای اطمینان از این‌که درخواست‌ها برای بارگذاری آزمون‌های رگرسیون به دلیل فازینگ شکست نخورند. .PP \&\fB\-\-fuzzer\-feeding\fR نادیده گرفتن برخی خطاها که در غیر این صورت باعث می‌شدند .B Privoxy\-Regression\-Test آزمون را متوقف کند، زیرا در عملکرد عادی نباید رخ دهند. این گزینه زمانی کاربرد دارد که .B Privoxy\-Regression\-Test تنها برای تغذیه یک فازر استفاده می‌شود؛ در این حالت احتمال بالایی وجود دارد که .B Privoxy یک درخواست نامعتبر دریافت کند و پیام خطا بازگرداند. .PP \&\fB\-\-help\fR نمایش گزینه‌های موجود خط فرمان. .PP \&\fB\-\-header\-fuzzing\fR فضاهای خالی خطی (linear white space) را در سرایندها به گونه‌ای تغییر می‌دهد که نباید بر نتیجه آزمون تأثیر بگذارد. .PP \&\fB\-\-level level\fR تنها اجرای آزمون‌هایی با .B level تعیین‌شده. .PP \&\fB\-\-local\-test\-file test\-file\fR آزمون‌ها را از طریق رابط وب .B Privoxy دریافت نکند، بلکه از یک فایل محلی منفرد استفاده کند. برای آزمودن .B Privoxy توصیه نمی‌شود، اما می‌تواند برای به کار بردن .B Privoxy\-Regression\-Test در آزمودن موارد دیگر، مانند پیکربندی‌های وب‌سرور مفید باشد. .PP \&\fB\-\-loop count\fR تکرار چرخه آزمون‌های رگرسیون به تعداد .BR count . مفید برای تغذیه یک فازر، یا هنگام انجام آزمون‌های فشار با چندین نمونه در حال اجرای همزمان از .BR Privoxy\-Regression\-Test . .PP \&\fB\-\-max\-level max\-level\fR تنها اجرای آزمون‌هایی با .B level پایین‌تر یا مساوی با مقدار عددی .BR max\-level . .PP \&\fB\-\-max\-time max\-time\fR اختصاص .B max\-time ثانیه به .B Privoxy برای بازگرداندن داده‌ها. افزایش مقدار پیش‌فرض زمانی که .B Privoxy از طریق Valgrind اجرا می‌شود منطقی است؛ کاهش آن نیز در زمان استفاده از .B Privoxy\-Regression\-Test برای تغذیه فازر ممکن است مناسب باشد. .PP \&\fB\-\-min\-level min\-level\fR تنها اجرای آزمون‌هایی با .B level بالاتر یا مساوی با مقدار عددی .BR min\-level . اگر .B min\-level بزرگتر از .B max\-level باشد، مقدار .B max\-level برابر با .B min\-level قرار داده می‌شود. .PP \&\fB\-\-privoxy\-address proxy\-address\fR آدرس شنود .BR Privoxy . اگر تنظیم نشده باشد، مقدار متغیر محیطی http_proxy استفاده خواهد شد، مگر اینکه این متغیر تنظیم نشده باشد که در این صورت از http://127.0.0.1:8118 استفاده می‌شود. .B proxy\-address باید با نحو http_proxy مشخص شود. .PP \&\fB\-\-privoxy\-cgi\-prefix privoxy\-cgi\-prefix\fR پیشوند مورداستفاده هنگام ساخت نشانی‌هایی که قرار است به رابط CGI نرم‌افزار .B Privoxy برسند. اگر تنظیم نشده باشد، از \&\fBhttp://p.p\fR استفاده می‌شود که انتظار می‌رود با پیکربندی پیش‌فرض .B Privoxy کار کند. اگر .B Privoxy با قابلیت .B FEATURE_HTTPS_INSPECTION ساخته شده باشد، و اگر بازرسی https با اقدام .B +https\-inspection فعال شده باشد، می‌توان از این گزینه با \&\fBhttps://p.p\fR استفاده کرد، مشروط بر اینکه سیستم در حال اجرای .B Privoxy\-Regression\-Test برای اعتماد به گواهی مورداستفاده .B Privoxy پیکربندی شده باشد. توجه داشته باشید که در حال حاضر دو آزمون در فایل رسمی \&\fBregression\-tests.action\fR وجود دارند که هنگام استفاده از .B privoxy\-cgi\-prefix با \&\fBhttps://\fR انتظار می‌رود با شکست مواجه شوند و به طور خودکار رد نمی‌شوند. .PP \&\fB\-\-retries retries\fR تلاش مجدد به تعداد .BR retries . .PP \&\fB\-\-test\-number test\-number\fR تنها اجرای آزمون با شماره مشخص‌شده. .PP \&\fB\-\-show\-skipped\-tests\fR ثبت گزارش آزمون‌های ردشده حتی در صورت خاموش بودن حالت پرگویی (verbose). .PP \&\fB\-\-shuffle\-tests\fR بر زدن بخش‌های آزمون و آزمون‌های آن‌ها پیش از اجرا. در ترکیب با .BR \-\-forks ، این کار می‌تواند شانس تشخیص شرایط مسابقه (race conditions) را افزایش دهد. البته تشخیص برخی مشکلات بدون این گزینه آسان‌تر است. .PP \&\fB\-\-sleep\-time seconds\fR درنگ به مدت .B seconds ثانیه میان آزمون‌ها. مفید هنگام اشکال‌زدایی مسائل در سیستم‌هایی که با دقت میلی‌ثانیه لاگ ثبت نمی‌کنند. .PP \&\fB\-\-verbose\fR ثبت گزارش آزمون‌های موفقیت‌آمیز. به صورت پیش‌فرض تنها موارد ناموفق ثبت می‌شوند. .PP \&\fB\-\-version\fR چاپ نسخه و خروج. .PP خط تیره دوم اختیاری است، و گزینه‌ها تا زمانی که ابهامی ایجاد نشود می‌توانند کوتاه شوند. .SH "پیکربندی PRIVOXY (PRIVOXY CONFIGURATION)" .IX Header "PRIVOXY CONFIGURATION" برنامه .B Privoxy\-Regression\-Test همراه با فایل \&\fBregression\-tests.action\fR ارائه می‌شود که هدف آن آزمودن تمام اقدامات رسمی تغییردهنده سرایند کلاینت است و می‌تواند برای تأیید نصب صحیح قالب‌ها و فایل‌های راهنمای کاربر به کار رود. .PP برای استفاده، این فایل باید در دایرکتوری پیکربندی .B Privoxy کپی شده و پس از آن در فایل پیکربندی .B Privoxy با خط زیر فراخوانی شود: .PP .Vb 1 \& actionsfile regression\-tests.action .Ve .PP به طور کلی، انتظار می‌رود آزمون‌های آن بدون نیاز به تغییر فایل‌های دیگر action کار کنند، مگر اینکه از قبل برچسب‌گذارهای (taggers) زیادی توسط خودتان اضافه شده باشد. اگر از برچسب‌گذارهایی استفاده می‌کنید که باعث اختلال می‌شوند، ممکن است نیاز باشد آن‌ها را موقتاً برای صفحات CGI نرم‌افزار .B Privoxy غیرفعال کنید. .PP برخی از آزمون‌های رگرسیون به ویژگی‌هایی از .B Privoxy وابسته‌اند که ممکن است در پیکربندی شما غیرفعال باشند. آزمون‌های دارای سطح پایین‌تر از 7 انتظار می‌رود با تمام پیکربندی‌های .B Privoxy کار کنند (مشروط بر اینکه با FEATURE_GRACEFUL_TERMINATION کامپایل نکرده باشید). .PP آزمون‌های سطح 9 نیازمند این هستند که .B Privoxy فایل‌های راهنمای کاربر (User Manual) را ارائه دهد؛ آزمون‌های سطح 12 نیازمند فعال بودن ویرایشگر CGI هستند. .SH "هشدارها (CAVEATS)" .IX Header "CAVEATS" انتظار می‌رود نحو فایل پیکربندی در نسخه‌های آینده دستخوش تغییر شود. .SH "محدودیت‌ها (LIMITATIONS)" .IX Header "LIMITATIONS" از آنجا که صفحه \&\fBshow\-request\fR در .B Privoxy تنها سرایندهای کلاینت را نشان می‌دهد، .B Privoxy\-Regression\-Test نمی‌تواند از آن برای آزمودن اقداماتی از .B Privoxy که سرایندهای سرور را تغییر می‌دهند استفاده کند. .PP از آنجا که .B Privoxy\-Regression\-Test برای کنترل اقدامات آزمایشی به قابلیت برچسب‌گذاری (tag) نرم‌افزار .B Privoxy وابسته است، در حال حاضر تنها با نسخه 3.0.7 یا بالاتر .B Privoxy کار می‌کند. .PP در حال حاضر .B Privoxy\-Regression\-Test صفحه پیکربندی .B Privoxy را از طریق \&\fIcurl\fR\|(1) واکشی می‌کند؛ بنابراین باید \&\fIcurl\fR روی سیستم نصب باشد، در غیر این صورت اجرای معنادار .B Privoxy\-Regression\-Test امکان‌پذیر نخواهد بود. .SH "همچنین ببینید (SEE ALSO)" .IX Header "SEE ALSO" \&\fBprivoxy\fR\|(8) \fBcurl\fR\|(1) .SH "نویسنده (AUTHOR)" .IX Header "AUTHOR" Fabian Keil