TLS – آیا روش آسان برای شناسایی خطاهای اعتبار سنجی گواهی (در تولید) وجود دارد؟

متاسفانه چنین ویژگی ای وجود ندارد زیرا عدم دسترسی به TLS است که قبل از آن باید منطق برنامه را تحت تاثیر قرار دهد. با این حال شما ممکن است مشکل واقعی در اینجا در تمام حقیقت و صداقت از دست رفته اگر کسی کد منتشر شده است که تایید TLS درست نیست و یا به طور فعال نادیده گرفتن خطاهای TLS

 وارد توصیف تصویر اینجا

البته این کمیک است از دست رفته متخصص برنامه نویس: "اوه در نهایت همه این تستها را منتقل می کند" خوب

من فکر می کنم یک سوال بزرگتر است "چرا یک توسعه دهنده نیاز به یک گواهی نامه خود را دارد؟" پاسخ "تست" پس از آن روش های بسیار بهتر، ایمن تر و آسان تر برای رسیدگی به تست وجود دارد که نیازی به گواهینامه یا سرور ندارند . اگر یک توسعه دهنده نمیتواند چگونگی تست کد برای سرور یا برنامه کاربردی مشتری را در خارج از محدوده سرویس گیرنده و سرور بررسی کند، چه کدام کد در پایگاه کد تولید انجام می شود و چرا این توسعه دهنده کمک نمی کند تا سریع تر و ایمن تر شود شیوه ها و الگوهای طراحی؟

با این کد فقط کد: روشهای بی حد و حصر بسیاری برای آزمایش آن وجود دارد که نیازی به سرور، گواهینامه، و حتی ساعتهای شخصی نیست. آنها باید این شیوه ها را در حال حرکت رو به جلو ببرند و این الگوها را به کد قدیمی تر ادغام کنند.

"اما اگر یک توسعه دهنده نمی خواهد؟" استدلال رایج در برابر این است. پاسخ این است که "پس از آن پیدا کنید یک توسعه دهنده که معتقد به شیوه های طراحی مناسب و ایمن است." پایان. از. داستان. این ارزش ها اشکالات، سردرد ها و زمان و سود خود را از دست نمی دهند، آنها با بی توجهی های شگرف خود به استانداردهای تعیین شده توسط افراد با تجربه تر از خودشان می توانند از آنها یاد بگیرند. مهم نیست که آیا سالها تجربه بیشتری داشته باشند یا خیر، زیرا تجربه آنها اشتباه است. این به خصوص بیشتر از این است که این شیوه های طراحی رایگان و به آسانی در دسترس هستند.

با بارگیری منابع آزاد و آموزش مناسب، جای تعجب است که چیزی جز شرکت کوچک بی تجربه، هرگز به این وضعیت نمی رسد، اما این اتفاق می افتد. حتی پس از آن تعجب آور نیست که بسیاری از این شرکت ها در نهایت در زمانی که آنها این اعمال را اتخاذ می کنند، به همان نقطه در زمان می رسند.


اکنون ممکن است به نظر برسد که من فقط می گریزدم و می ترسم (با اینکه می توانم درک کنم) اما صادقانه این یک الگوی آسان برای اتخاذ است. به مثال زیر برای دستیار مسیر NodeJS نگاه کنیم

در این مثال ما یک handler handler می نویسیم که یک بازدید کننده را به سایت وارد می کند و سپس به handler بعدی اضافه می کند.

handler.js

 module .exports = route // صادرات مسیر برای وارد کردن و تدوین در یک فایل دیگر
مسیر عملکرد (req، res، next) {
  req.app.locals.plugins.logVisit (req)
    سپس (خطا => خطا بعدی (خطا): بعدی ())
}

اکنون ما باید این مسیر را آزمایش کنیم. اجازه می دهد یک تست را بدون هیچ کتابخانه تستی که تعداد تست های موفق و آزمایش های شکست خورده را منتشر می کند، بنویسید و فقط این مسیر را آزمایش کنید

test.js

 اجازه دهید handler = require ('./ handler')
اجازه عبور = 0؛
اجازه دهید شکست خورد = 0؛

اجازه دهید goodReq = {
  برنامه: {
    مردم محلی: {
      پلاگین ها: {
        logVisit (req) {
          req! = null
            ؟ ++ passed && console.log ('به درستی درخواست شی را برای ورود به سیستم منتقل کرد')
            : ++ failed && console.log ('درخواست شیء را برای ورود به سیستم منتقل نمی کند')
            بازگشت Promise.resolve ()
        }
      }
    }
  }
}

اجازه دهید goodNext = function (خطا) {
  اگر (خطا) {
    return ++ failed && console.log ('تماس نامناسبی با خطای خوب انجام داد')
  }
  ++ passed && console.log ('یک تماس خوب با logVisit')
}

اجازه دهید badReq = {
  برنامه: {
    مردم محلی: {
      پلاگین ها: {
        logVisit (req) {
          req! = null
            ؟ ++ passed && console.log ('به درستی درخواست شی را برای ورود به سیستم منتقل کرد')
            : ++ failed && console.log ('درخواست شیء را برای ورود به سیستم منتقل نمی کند')
            بازگشت Promise.resolve (خطای جدید ('logVisit ناموفق' نامیده شد))
        }
      }
    }
  }
}

let badNext = تابع (خطا) {
  اگر (! خطا) {
    return ++ failed && console.log ('خطا در تماس با خطا ناشناس' ')
  }
  ++ گذشت && console.log ('به درستی یک تماس logVisit اشتباه گرفته شده است')
}

typeof handler == 'تابع'
  ؟ ++ passed && console.log ('handler یک تابع است')
  : ++ failed && console.log ('handler یک تابع نیست')
اگر (شکست خورده) {
  پرتاب خطای جدید ('handler یک تابع نیست، نمیتوان آن را به عنوان یک نام نامید، آزمونهای آینده را قطع کرد)'
}


console.log ('Handler logVisit را فراخوانی می کند و حالت غیر خطای دریافت می کند')
handler (goodReq، null، goodNext)
اگر (شکست خورده) {
  پرتاب خطای جدید ('handler به درستی تماس نگرفت و موفق نشد.
}

console.log ('Handler logVisit را فراخوانی می کند و حالت خطا را دریافت می کند')
handler (badReq، null، badNext)
اگر (شکست خورده) {
  پرتاب خطای جدید ('handler به درستی تماس نگرفت و خطای logVisit را نپذیرفت و آزمایشهای آینده را لغو کرد)
}

setTimeout (() => {
  console.log ('تمام تست ها برای handler pass شده است و اکنون برای آزمایش ادغام آماده است)
  console.log ('# of Tests:'، (passed + failed))
  console.log ('تعداد تستهای شکست خورده:'، شکست خورده است)
  console.log ('تعداد آزمایش های منتخب:'، گذشت)
}، 1000)؛

همانطور که می بینید، ما حتی یک سرور برای تست کد یا یک گواهی خود مستقل یا حتی یک کتابخانه تست نداریم (گرچه احتمالا آزمایش آن آسان تر شده است) لازم نیست. قبل از اینکه این دستیار هرگز به یک سرور وارد شود، آن را آزمایش خواهد کرد. در آن زمان توسعه دهنده در حال حاضر می داند که آن را در نظر می گیرد. این گواهی خود را امضا نمیکند همچنین می توانید اثبات کنید که آزمایش ها با اجرای آنها انجام می شود.

تا زمانی که شما آزمایش مناسب داشته باشید، مجبور نیستید گواهینامه خود را امضا کنید.