1<!DOCTYPE html> 2<html lang="en"> 3<head> 4 <title>FREE Functional Testing for your Prototype PCBA with HQ NextPCB</title> 5 <meta name="description" content="When it comes to ensuring the quality and reliability of electronic products, PCBA functional testing is an indispensable step. At HQ NextPCB, we recognize the critical role that functional testing plays in the manufacturing process, and we are committed to providing top-notch testing services to our customers." /> 6 <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 7<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1, user-scalable=no;"> 8<meta http-equiv="X-UA-Compatible" content="IE=edge"> 9<link rel="canonical" href="https://www.nextpcb.com/blog/free-functional-testing" /> 10<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 11<link rel="stylesheet" type="text/css" href="/static/vendor/layui/css/layui.css?ver=f42378"> 12<link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/common.min.css?ver=1f3709"> 13<link rel="stylesheet" type="text/css" href="/uploads/font/font.min.css"> 14<link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/css3.0/base.min.css?ver=c58db5"> 15<link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/intlTelInput.css?ver=544363"> 16<link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/common/common.min.css?ver=2bd600"> 17 18<!-- DFM 客æ·ç«¯ç¸å ³çæ ·å¼ --> 19
20<script type="text/javascript" src="//static.nextpcb.com/js/google-cookie.min.js?ver=382573"></script>
20 21<!-- Google Tag Manager -->
22<script>
vendor: 327 bytes, lines 22-26
22(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 23new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 24j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 25'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 26})(window,document,'script','dataLayer','
26GTM-5SC2KNJ
vendor: 3 bytes, line 26
26');
26</script>
26 27<!-- End Google Tag Manager --> 28 29 30 <link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/intlTelInput.css?ver=544363"> 31 <link rel="stylesheet" type="text/css" href="//static.nextpcb.com/css/blog/index.css?ver=89d89a"> 32
32<script type="application/ld+json"> 33 { 34 "@context": "https://schema.org", 35 "@type": "Article", 36 "mainEntityOfPage": { 37 "@type": "WebPage", 38 "@id": "https://www.nextpcb.com/blog/free-functional-testing" 39 }, 40 "headline": "FREE Functional Testing for your Prototype PCBA with HQ NextPCB", 41 "description": "When it comes to ensuring the quality and reliability of electronic products, PCBA functional testing is an indispensable step. At HQ NextPCB, we recognize the critical role that functional testing plays in the manufacturing process, and we are committed to providing top-notch testing services to our customers.", 42 "image": [ 43 "https://www.nextpcb.com/uploads/images/202407/23/1721728927-1916-sumaDE.png" 44 ], 45 "author": { 46 "@type": "Person", 47 "name": "Carmen Zheng" 48 }, 49 "publisher": { 50 "@type": "Organization", 51 "name": "NEXTPCB", 52 "logo": { 53 "@type": "ImageObject", 54 "url": "https://static.nextpcb.com/images/newNavIcon/logo2025.svg" 55 } 56 }, 57 "datePublished": "2024-07-18T11:33:00+08:00", 58 "dateModified": "2026-05-27T10:30:45+08:00" 59 } 60 </script>
60 61</head> 62<style type="text/css"> 63 .quickQuotePannel{ 64 position: relative; 65 left: 0; 66 top: 0; 67 padding: 0; 68 } 69 .sharesBox{ 70 width: 130px; 71 padding-bottom: 20px; 72 display: inline-block; 73 position: relative; 74 cursor: pointer; 75 } 76 .sharesBox .s_menu{ 77 display: none; 78 } 79 .sharesBox:hover .s_menu{ 80 display: block; 81 } 82 .sharesBox .s_menu{ 83 top: 32px; 84 right: 33px; 85 left: -17px; 86 } 87 i { 88 font-style: italic !important; 89 } 90 91 .index-topad { 92 width: 100%; 93 max-height: 80px; 94 min-height: 60px; 95 overflow: hidden; 96 position: relative; 97 background-color: #f5f5f5; 98 } 99 .index-topad-box { 100 display: block; 101 } 102 .index-topad-box img { 103 width: 1920px; 104 height: auto; 105 margin-left: -360px; 106 } 107 .index-topad .icon-close { 108 position: absolute; 109 width: 22px; 110 height: 22px; 111 right: 0; 112 top: 0; 113 text-align: center; 114 line-height: 22px; 115 font-size: 12px; 116 color: #fff; 117 background-color: rgba(0, 0, 0, 0.4); 118 cursor: pointer; 119 font-style: normal !important; 120 } 121 122 .fixed-blog-nav { 123 position: fixed; 124 top: 48px; 125 width: 880px; 126 box-sizing: border-box; 127 z-index: 1111; 128 } 129 .fixed-blog-title { 130 position: fixed; 131 top: 107px; 132 width: 880px; 133 background: #FFF; 134 z-index: 1122; 135 padding-bottom: 20px; 136 margin-left: -38px; 137 margin-top: 0; 138 } 139 140 .blog-detail-sticky{ 141 position: sticky; 142 top: 0; 143 z-index: 22; 144 } 145 .blog_d_content { 146 display: flex; 147 justify-content: space-between; 148 font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; 149 } 150 151 .blog_d_content .d_content_left{ 152 max-width: 1020px; 153 min-width: 880px; 154 width: auto; 155 flex: 1; 156 } 157 158 .blog_d_content .rContent{ 159 max-width: 360px; 160 min-width: 300px; 161 flex: 1; 162 margin-left: 20px; 163 } 164 165 .blog_d_content .rContent .promo-box a { 166 display: block; 167 margin-bottom: 10px; 168 } 169 170 .blog_d_content .rContent .tags { 171 padding: 20px 30px; 172 display: flex; 173 flex-wrap: wrap; 174 gap: 10px; 175 } 176 177 .blog_d_content .rContent .tags .tags-item { 178 border-radius: 2px; 179 padding: 0px 8px; 180 font-size: 12px; 181 display: block; 182 min-width: 92px; 183 text-align: center; 184 box-sizing: border-box; 185 line-height: 24px; 186 background: #f4f4f4; 187 margin: 0; 188 } 189 190 .blog_d_content .rContent .tags .tags-item:hover { 191 color: #c00; 192 text-decoration: underline; 193 cursor: pointer; 194 } 195</style> 196<body> 197 <!-- é¦é 第äºå±å»£åA02 --> 198<!-- é é¨éæ¬å»£å A03 --> 199 <div class="index-topad"> 200 <a href="https://www.nextpcb.com/news/mid-autumn-national-day-holiday-notice-2026" title="Superior Reliability, Exceptional Service." 201 target="_bank" 202 onclick="fixedClick(33)" 203 class="wrap index-topad-box" 204 > 205 <img src="/uploads/images/202609/17/1789640974-06-ACBdGe.webp?v=3.0.3.0626" > 206 </a> 207 <i class="icoy icon-close" id="closeAd"></i> 208 </div> 209 210 <style> 211 .new-text-icon-animation { 212 position: absolute; 213 top: 0px; 214 right: 10px; 215 background: #CC0000; 216 font-size: 12px; 217 color: #fff; 218 height: 14px; 219 line-height: 14px; 220 border-radius: 3px; 221 padding: 1px 2px; 222 /* animation: movepoint 2s infinite; */ 223 } 224 .new-text-icon-animation::before { 225 content: ''; 226 width: 0; 227 height: 0; 228 border-left: 3px solid transparent; 229 border-right: 3px solid transparent; 230 border-top: 3px solid #CC0000; 231 position: absolute; 232 left: 10px; 233 bottom: -2px; 234 } 235 .nav-sub-new-icon { 236 position: relative; 237 top: -8px; 238 right: auto; 239 margin-left: 4px; 240 display: inline-block; 241 vertical-align: middle; 242 } 243 .nav-sub-new-icon::before { 244 border: none; 245 } 246 @keyframes movepoint { 247 25% { 248 top: 0px 249 } 250 100% { 251 top: 3px 252 } 253 } 254 .new-icon-animation { 255 animation: movepoint 2s infinite; 256 } 257 258 /* toolnav SVG 徿 尺寸 */ 259 .yui-nav-product-menu-col dt svg { 260 width: 28px; 261 height: 28px; 262 display: block; 263 } 264 265 @keyframes sub-movepoint { 266 25% { 267 top: -4px 268 } 269 100% { 270 top: -8px 271 } 272 } 273 .sub-new-icon-animation { 274 animation: sub-movepoint 2s infinite; 275 } 276 277 .sponsorship-wrap { 278 position: relative; 279 } 280 281 .sponsorship-wrap .sponsorship-sub-menu { 282 display: block; 283 padding-left: 20px; 284 } 285 286 .sponsorship-wrap:hover .sponsorship-sub-menu { 287 display: block; 288 } 289 290 .home-title { 291 position: absolute; 292 left: 50%; 293 top: 50%; 294 transform: translate(-50%, -50%); 295 font-size: 14px; 296 font-weight: 600; 297 color: #333; 298 margin: 0; 299 white-space: nowrap; 300 line-height: 1.4; 301 } 302</style> 303<!-- Google Tag Manager (noscript) -->
vendor: 68 bytes, lines 303-304
303 304<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=
304GTM-5SC2KNJ
vendor: 87 bytes, lines 304-305
304" 305 height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
306<!-- End Google Tag Manager (noscript) --> 307 308<div class="topBarNew bg-f2 blog-detail-sticky"> 309 <div class="new-wrap yui-top topMsgBox clear" style="position: relative;"> 310 <a href="/" class="logo" style="position: relative;"> 311 <img class="fl" height="46" src="//static.nextpcb.com/images/newNavIcon/logo2025.svg" alt="NextPCB" /> 312 </a> 313 <div class="topMsg yui-top-area vlm-wrap"> 314 <!-- 伿 å¸ --> 315 <a href="/member/finance/coupon" class="icon-btn"> 316 <div class="icon-coupon-new" style="width:32px; height:32px;"></div> 317 </a> 318 319 <!-- è´ç©è½¦ --> 320 <a href="/order/cart/type/1" class="icon-btn"> 321 <div class="icon-img icon-cart-new"></div> 322 </a> 323 324 <!-- æ¶æ¯ --> 325 326 <!-- 帮å©ä¸å¿ --> 327 <a href="/helpcenter" target="_blank" class="icon-btn"> 328 <div class="icon-img icon-help-new"></div> 329 </a> 330 331 <!-- æ¥è¯ç«ä¸çº¿ååæ¥ä¿®æ¹ è¯è¨åæ¢--> 332 <span class="hover-box hover-box-bg google_translate_element_box icon-btn"> 333 <form action="/ajax/language" method="post" enctype="multipart/form-data" id="form-language"> 334 <i class="iti-flag vlm us icon-country"></i> 335 <div class="hover-sub"> 336 <a href="javascript:tablanguage('ja-jp');" class="hover-sub-item ani-str"><i class="iti-flag vlm jp"></i> æ¥æ¬èª</a> 337 <a href="javascript:tablanguage('en-us');" class="hover-sub-item ani-str"> <i class="iti-flag vlm us"></i> English</a> 338 </div> 339 <input type="hidden" name="lang" id="lang_code" value="" /> 340 <input type="hidden" name="redirect" value="https://www.nextpcb.com/blog/free-functional-testing" /> 341 </form> 342 </span> 343 344 <!-- è´¦å· --> 345 <span id="ajax_Login" class="yui-top-login my_login hover-box icon-btn"> 346 <div class="icon-img icon-user-new "></div> 347 <div class="myCenter hover-sub top-user-menu"> 348 <div class="yui-top-login-info f-ct" id="ajax_Login_no"> 349 <span class="yui-top-login vlm my_noLogin"> 350 <a class="vlm lbtn-base lbtn lbtn-sm lbtn-rssm" href="https://passport.nextpcb.com?reurl=https://www.nextpcb.com/blog/free-functional-testing">Login</a> 351 <a class="vlm lbtn lbtn-hollow lbtn-sm lbtn-hollow-base lbt
351n-rsfew" href="https://passport.nextpcb.com/register?reurl=https://www.nextpcb.com/blog/free-functional-testing">Sign Up</a> 352 </span> 353 </div> 354 <dl id="ajax_Login_yes" class="yui-top-login-info yui-top-login-user f-ct" style="display: none;"> 355 <dt> 356 <img class="u-avast-base" src="//static.nextpcb.com/images/newNavIcon/new_user.png?v=3.0.3.0626" /> 357 </dt> 358 <dd> 359 <p class="yui-top-login-id s_id f-base"> 360 ID: </p> 361 <p class="fc6 s_name yui-top-login-name f-base"><em class="fc-main">Hi,</em></p> 362 </dd> 363 </dl> 364 <div class="yui-top-login-list"> 365 <a class="yui-top-login-item" href="/member"> 366 <i class="icoy icon-my ani-str"></i> 367 <span class="hover-sub-item ani-str">My NextPCB</span> 368 </a> 369 <a class="yui-top-login-item" href="/order/cart/type/1"> 370 <i class="icoy icon-cart ani-str"></i> 371 <span class="hover-sub-item ani-str">My Shopping Cart</span> 372 </a> 373 <a class="yui-top-login-item" href="/order/orderPacket"> 374 <i class="icoy icon-mlall ani-str"></i> 375 <span class="hover-sub-item ani-str"> All Orders</span> 376 </a> 377 <a class="yui-top-login-item" href="/member/finance/coupon"> 378 <i class="icoy icon-mlcoupon ani-str"></i> 379 <span class="hover-sub-item ani-str"> My Coupon</span> 380 </a> 381 <a class="yui-top-login-item" href="/member/setting/profile"> 382 <i class="icoy icon-myinfo ani-str"></i> 383 <span class="hover-sub-item ani-str">My Profile</span> 384 </a> 385 <a class="yui-top-login-item" href="/member/setting/address"> 386 <i class="icoy icon-address ani-str"></i> 387 <span class="hover-sub-item ani-str">My Shipping Address</span> 388 </a> 389 </div> 390 <div id="ajax_loginout" class="yui-top-login-out" style="display: none;"> 391 <a data-domain="https://apipassport.hqonline.com" class="lbtn lbtn-rssm lbtn-hollow-base lbt
391n-hollow lbtn-sm" onclick="logout(this)">Sign Out</a> 392 </div> 393 394 </div> 395 </span> 396 397 </div> 398 </div> 399 <div class="yui-nav-height"> 400 <div class="nav yui-nav"> 401 <div class="new-wrap clear"> 402 <ul class="fl-lt pst-rlt nav-ul"> 403 <span class="navTagMove yui-nav-hover ani-str"></span> 404 <li class="yui-nav-item "><a href="/" style="padding-left: 0;">Home</a></li> 405 <li data-nav="blog" class="yui-nav-item hover-box hover-main "> 406 <a href="/pcb-quote">PCB Quote <span class="nav_down_box"></span></a> 407 <div class="more_select hover-sub ani-str"> 408 <a class="hover-sub-item" href="/pcb-quote"><span>Standard PCB</span></a> 409 <a class="hover-sub-item" href="/advanced-pcb-quote"> 410 <span>Advanced PCB</span> 411 </a> 412 </div> 413 </li> 414 415 <li class="yui-nav-item hover-box hover-main "> 416 <a href="/pcb-assembly-services">PCB Assembly <!-- <i class="new-text-icon-animation">New</i> --> 417 <span class="nav_down_box"></span> 418 </a> 419 <div class="more_select hover-sub ani-str"> 420 <a class="hover-sub-item" href="/rev0-pcba">Rev 0 PCBA<i class="new-text-icon-animation nav-sub-new-icon">New</i></a> 421 <a class="hover-sub-item" href="/pcb-assembly-quote">PCB Assembly Quote</a> 422 <a class="hover-sub-item" href="/pcb-assembly-services">PCB Assembly Service</a> 423 <a class="hover-sub-item" href="/pcb-assembly-capabilities">PCB Assembly Capability</a> 424 <a class="hover-sub-item" href="/pcb-stencil">PCB Stencil Service</a> 425 <a class="hover-sub-item" href="/bom-service">BOM Service</a> 426 <a class="hover-sub-item" href="/blog/free-functional-testing">Free Functional Testing</a> 427 </div> 428 </li> 429 <li class="yui-nav-item hover-box hover-main"> 430 <a class="hqonline-href" href="https://www.hqonline.com" target="_blank"> 431 Components Sourcing <!-- <i class="new-text-icon-animation" style="right: 6px;">Hot</i> --> 432 </a> 433 <div class="more_select hover-sub ani-str"> 434 <a class="hover-sub-item" href="https://www.hqonline.com" target="_blank">HQ Online Components</a> 435 <a class="hover-sub-item" href="https://www.hqonline.com/bom-tool" target="_blank">BOM Tool</a> 436 </div> 437 </li> 438 <li class="yui-nav-item hover-box hover-main"> 439 <a href="https://www.nextpcb.com/cable-assembly-services">Cable Assembly <span class="nav_down_box"></span> 440 </a> 441 <div class="more_select hover-sub ani-str"> 442 <a class="hover-sub-item" href="/cable-assembly-quote">Cable Assembly Quote</a> 443 <a class="hover-sub-item" href="https://www.nextpcb.com/cable-assembly-services">Cable Assembly Services</a> 444 <a class="hover-sub-item" href="https://www.nextpcb.com/service-type/cable-assembly-wire-harness#cable-assembly-wire-harness-capabilities">Cable Assembly Capabilities</a> 445 </div> 446 </li> 447 <li class="yui-nav-item hover-box hover-main"> 448 <a href="/free-online-gerber-viewer.html" target="_blank"> 449 Gerber Viewer | DFM <span class="nav_down_box"></span> 450 <!-- <i class="new-text-icon-animation" style="right: 2px;">Free</i> --> 451 </a> 452 <div class="more_select hover-sub ani-str"> 453 <a class="hover-sub-item" href="/free-online-gerber-viewer.html" target="_blank">Online Gerber Viewer</a> 454 <a class="hover-sub-item" href="/dfm" target="_blank">HQDFM Design Analysis Software</a> 455 <a class="hover-sub-item" href="/dfm-user-manual" target="_blank">HQDFM User Manual</a> 456 </div> 457 </li> 458 <li class="yui-nav-item yui-nav-product hover-box "> 459 <a>Capabilities & Services<span class="nav_down_box"></span></a> 460 <!-- <i class="yui-nav-corner">N</i> --> 461 <div class="more_select product_sublink hover-sub hover-main ani-str" style="left: -639px;box-sizing: border-box; width: 1200px;"> 462 <div class="product_sublink-box yui-nav-product-box"> 463 464 <div class="yui-nav-product-menu"> 465 <div class="yui-nav-product-menu-col"> 466 <dl> 467 <dt> 468 <img src="//static.nextpcb.com/images/newNavIcon/product/col1-1.webp" loading="lazy"> 469 <b class="title">NextPCB Capabilities</b> 470 </dt> 471 <dd> 472 <a href="/pcb-capabilities">Standard PCB Capabilities</a> 473 <a href="https://www.nextpcb.com/advanced-pcb-manufacturing-capabilities">Advanced PCB Capabilities</a> 474 <a href="/assembly-capabilities">PCB Assembly Capabilities</a> 475 </dd> 476 </dl> 477 <div class="hr-line"></div> 478 <dl> 479 <dt> 480 <img src="//static.nextpcb.com/images/newNavIcon/product/col1-1.webp" loading="lazy"> 481 <b class="title">Capabilities by PCB Types</b> 482 </dt> 483 <dd> 484 <a href="/pcb-product">PCB Product Showsase </a> 485 <a href="/pcb-type/rigid-pcbs">Rigid PCBs</a> 486 <a href="/pcb-type/rogers-pcbs">Rogers PCB</a> 487 <a href="/pcb-type/high-tg-pcb">High-TG PCBs</a> 488 <a href="/pcb-type/Thick-copper-PCB">Heavy Copper PCBs</a> 489 <a href="/pcb-type/hdi-pcb">HDI PCBs</a>
490 <a href="/pcb-type/high-speed-pcb">High-Speed PCBs</a> 491 <a href="/pcb-type/high-frequency-pcb">High-Frequency PCBs</a> 492 <a href="/pcb-type/aluminum-pcb">Aluminum PCBs</a> 493 <a href="/pcb-type/copper-core-pcb">Copper-Core PCBs</a> 494 <a href="/pcb-type/ceramic-pcb">Ceramic PCBs</a> 495 <a href="/pcb-type/flexible-pcb">Flex PCBs</a> 496 <a href="/pcb-type/rigid-flex-pcb">Rigid-Flex PCBs</a> 497 </dd> 498 </dl> 499 </div> 500 <div class="yui-nav-product-menu-col"> 501 <dl> 502 <dt> 503 <img src="//static.nextpcb.com/images/newNavIcon/product/col1-1.webp" loading="lazy"> 504 <b class="title">Printed Circuit Boards</b> 505 </dt> 506 <dd> 507 <a href="/pcb-prototype">PCB Prototype</a> 508 <a href="https://www.nextpcb.com/pcb-applicable-industries">Applicable Industries</a> 509 <a href="/blog/pcb-manufacturing-comprehensive-guide">PCB Manufacturing Process</a> 510 <a href="https://www.nextpcb.com/advanced-pcb-materials">Advanced PCB Materials</a> 511 </dd> 512 </dl> 513 <div class="hr-line"></div> 514 <dl> 515 <dt> 516 <img src="//static.nextpcb.com/images/newNavIcon/product/col2-1.webp" loading="lazy"> 517 <b class="title">PCB Assembly</b> 518 </dt> 519 <dd> 520 <a href="/pcb-assembly-services">PCB Assembly Service</a> 521 <a href="/pcb-stencil">PCB Stencil Service</a> 522 <a href="/blog/what-are-files-requirements-for-pcba">File Requirements</a> 523 <a href="/blog/pcb-assembly-guide">PCB Assembly Guide</a> 524 <a href="/blog/a-comprehensive-guide-to-ic-programming-in-pcb-assembly">IC Programming</a> 525 <a href="/blog/what-is-dfa-in-design-for-manufacturing-and-assembly">PCBA DFA</a> 526 <a href="/pcb-vocabulary/bga-assembly-capabilities">BGA Assembly Capabilities</a> 527 <a href="/blog/how-pcb-laser-marking-and-coding-works">Laser Labeling/Coding</a> 528 </dd> 529 </dl> 530 <div class="hr-line"></div> 531 <dl> 532 <dt> 533 <img src="//static.nextpcb.com/images/newNavIcon/product/col2-2.webp" loading="lazy"> 534 <b class="title">Layer Buildup</b> 535 </dt> 536 <dd> 537 <a href="/pcb-vocabulary/layer-stack-up">Layer Stack-up</a> 538 <a href="/pcb-vocabulary/prepregs-cores-foils" >Prepregs, cores, foils</a> 539 </dd> 540 </dl> 541 <div class="hr-line"></div> 542 <dl> 543 <dt> 544 <img src="//static.nextpcb.com/images/newNavIcon/product/col3-3.webp" loading="lazy"> 545 <b class="title">SMD-Stencils</b> 546 </dt> 547 <dd> 548 <a href="/pcb-vocabulary/laser-stencil">Laser Stencil</a> 549 </dd> 550 </dl> 551 </div> 552 <div class="yui-nav-product-menu-col"> 553 <dl> 554 <dt> 555 <img src="//static.nextpcb.com/images/newNavIcon/product/col3-1.webp" loading="lazy"> 556 <b class="title">PCB Design-Aid & Layout</b> 557 </dt> 558 <dd> 559 <a href="/pcb-vocabulary/layer-orientation">Layer Orientation</a> 560 <a href="/pcb-vocabulary/bga" >BGA</a> 561 <a href="/pcb-vocabulary/pcb-price-composition" >PCB Price Composition</a> 562 <a href="/pcb-vocabulary/printed-circuit-board-materials" >Printed Circuit Board Materials</a> 563 <a href="/pcb-vocabulary/pcb-design-layout" >PCB Design & Layout</a> 564 <a href="/pcb-vocabulary/panel-creation" >Panel Creation</a> 565 <a href="/pcb-vocabulary/gold-fingers" >Gold Fingers</a> 566 </dd> 567 </dl> 568 <div class="hr-line"></div> 569 <dl> 570 <dt> 571 <img src="//static.nextpcb.com/images/newNavIcon/product/col3-2.webp" loading="lazy"> 572 <b class="title">Mechanics</b> 573 </dt> 574 <dd> 575 <a href="/pcb-vocabulary/v-scoring">V-Scoring</a> 576 <a href="/pcb-vocabulary/back-drilling" >Back drilling</a> 577 <a href="/pcb-vocabulary/pcb-milling" >PCB milling</a> 578 </dd> 579 </dl> 580 </div> 581 <div class="yui-nav-product-menu-col"> 582 <dl> 583 <dt> 584 <img src="//static.nextpcb.com/images/newNavIcon/product/col4-1.webp" loading="lazy"> 585 <b class="title">Quality</b> 586 </dt> 587 <dd> 588 <a href="/pcb-vocabulary/e-test" >E-Test</a> 589 <a href="/blog/automated-x-ray-inspection" >X-RAY</a> 590 <a href="/pcb-vocabulary/design-rule-check" >Design Rule Check</a> 591 <a href="/pcb-vocabulary/a-o-i" >A.O.I</a> 592 </dd> 593 </dl> 594 <div class="hr-line"></div> 595 <dl> 596 <dt> 597 <img src="//static.nextpcb.com/images/newNavIcon/product/col4-2.webp" loading="lazy"> 598 <b class="title">Drills & Throughplating</b> 599 </dt> 600 <dd> 601 <a href="/pcb-vocabulary/via-in-pad">Via-in-pad</a> 602 <a href="/pcb-vocabulary/blind-buried-vias" >Blind & Buried Vias</a> 603 <a href="/pcb-vocabulary/annular-rings" >Annular Rings</a> 604 <a href="/pcb-vocabulary/side-plating" >Side plating</a> 605 <a href="/pcb-vocabulary/plated-half-holes" >Plated Half-holes/Castellated Holes</a> 606 <a href="/pcb-vocabulary/plated-through-slots" >Plated-through Slots</a> 607 </dd> 608 </dl> 609 <div class="hr-line"></div> 610 <dl> 611 <dt> 612 <img src="//static.nextpcb.com/images/newNavIcon/product/col4-3.webp" loading="lazy"> 613 <b class="title">Factory & Certificate</b> 614 </dt> 615 <dd> 616 <a href="/pcb-factory-VR-visiting/" style="position: relative;">PCB Factory VR Visiting 617 <img style="position: absolute;top: 4px; right: 49px;" src="//static.nextpcb.com/images/quote/quoteTag.png?v=4" loading="lazy"> 618 </a> 619 <a href="/assembly-factory-show" >PCB Assembly Factory Show</a> 620 <a href="/certificate" >Certificate</a> 621 </dd> 622 </dl> 623 </div> 624 </div> 625 626 <div class="yui-nav-product-adv"> 627 <a href="/pcb-quote"> 628 <div class="yui-nav-product-adv-box"> 629 <div class="img-box"> 630 <img src="//static.nextpcb.com/images/newNavIcon/product/pcb.webp" loading="lazy"> 631 </div> 632 <div class="pcb-text-box"> 633 <b>New users: <em>$<strong>30 off</strong></em></b> 634 <p>24 hours Fast Turnaround</p> 635 <span>100% E-test & AOI</span> 636 </div>
637 </div> 638 </a> 639 <a href="/pcb-assembly-quote"> 640 <div class="yui-nav-product-adv-box" style="margin-top: 15px;"> 641 <div class="img-box" style="margin-top: 9px;"> 642 <img src="//static.nextpcb.com/images/newNavIcon/product/pcba.webp" loading="lazy"> 643 </div> 644 <div class="pcba-text-box"> 645 <b>Free for 10pcs</b> 646 <b style="margin-top: 6px;"><em>50%OFF</em> for 100pcs</b> 647 <span>TURNKEY PCB ASSEMBLY</span> 648 </div> 649 </div> 650 </a> 651 </div> 652 </div> 653</div> </li> 654 <li class="yui-nav-item yui-nav-tool hover-box hover-main active"> 655 <a>Tools & Resources</a> 656 <div class="more_select tool_sublink hover-sub hover-main ani-str" style="left: 50%; transform: translateX(-50%); box-sizing: border-box;"> 657 <div class="tool_sublink-box yui-nav-product-box"> 658 659 <div class="yui-nav-product-menu"> 660 <div class="yui-nav-product-menu-col" style="width: 280px;"> 661 <dl> 662 <dt> 663 <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="5" y="2" width="18" height="24" rx="2" stroke="#333" stroke-width="1.5"/><line x1="9" y1="7" x2="19" y2="7" stroke="#333" stroke-width="1.5"/><circle cx="9.5" cy="12.5" r="1" fill="#333"/><circle cx="14" cy="12.5" r="1" fill="#333"/><circle cx="18.5" cy="12.5" r="1" fill="#333"/><circle cx="9.5" cy="17" r="1" fill="#333"/><circle cx="14" cy="17" r="1" fill="#333"/><circle cx="18.5" cy="17" r="1" fill="#333"/><circle cx="9.5" cy="21.5" r="1" fill="#333"/><circle cx="14" cy="21.5" r="1" fill="#333"/><circle cx="18.5" cy="21.5" r="1" fill="#333"/></svg> 664 <b class="title">Calculators</b> 665 </dt> 666 <dd> 667 <a href="https://www.nextpcb.com/pcb-engineering-tools">All PCB Engineering Tools</a> 668 <a href="/pcb-impedance-calculator">PCB Impedance Calculator</a> 669 <a href="https://www.nextpcb.com/pcb-trace-width-calculator">PCB Trace Width Calculator</a> 670 <a href="https://www.nextpcb.com/5-band-resistor-color-code-calculator">5-Band Resistor Color Code Calculator</a> 671 <a href="https://www.nextpcb.com/pcb-via-current-calculator">PCB Via Current Calculator</a> 672 <a href="https://www.nextpcb.com/pcb-via-parasitic-capacitance-calculator">PCB Via Parasitic Capacitance Calculator</a> 673 <a href="https://www.nextpcb.com/pcb-via-parasitic-inductance-calculator">PCB Via Parasitic Inductance Calculator</a> 674 <a href="https://www.nextpcb.com/microstrip-impedance-calculator">Microstrip Impedance Calculator</a> 675 <a href="https://www.nextpcb.com/stripline-impedance-calculator">Stripline Impedance Calculator</a> 676 <a href="https://www.nextpcb.com/differential-microstrip-impedance-calculator">Differential Microstrip Impedance Calculator</a> 677 <a href="https://www.nextpcb.com/coplanar-waveguide-calculator">Coplanar Waveguide Calculator</a> 678 <a href="https://www.nextpcb.com/skin-effect-depth-calculator">Skin Effect Depth Calculator</a> 679 <a href="https://www.nextpcb.com/ic-thermal-copper-area-calculator">IC Thermal Copper Area Calculator</a> 680 </dd> 681 </dl> 682 </div> 683 <div class="yui-nav-product-menu-col"> 684 <dl> 685 <dt> 686 <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M16 2H7C6.46957 2 5.96086 2.21071 5.58579 2.58579C5.21071 2.96086 5 3.46957 5 4V24C5 24.5304 5.21071 25.0391 5.58579 25.4142C5.96086 25.7893 6.46957 26 7 26H21C21.5304 26 22.0391 25.7893 22.4142 25.4142C22.7893 25.0391 23 24.5304 23 24V9L16 2Z" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><polyline points="16,2 16,9 23,9" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/><line x1="18" y1="15" x2="10" y2="15" stroke="#333" stroke-width="1.5" stroke-linecap="round"/><line x1="18" y1="19" x2="10" y2="19" stroke="#333" stroke-width="1.5" stroke-linecap="round"/><polyline points="12,11 11,11 10,11" stroke="#333" stroke-width="1.5" stroke-linecap="round"/></svg> 687 <b class="title">Design Guides</b> 688 </dt> 689 <dd> 690 <a href="https://www.nextpcb.com/impedance-control-stackups">PCB Stackups & Impedance</a> 691 <a href="https://erc.nextpcb.com">AI Electrical Rule Check</a> 692 </dd> 693 </dl> 694 </div> 695 <div class="yui-nav-product-menu-col"> 696 <dl> 697 <dt> 698 <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><rect x="8" y="8" width="12" height="12" rx="1.5" stroke="#333" stroke-width="1.5"/><line x1="8" y1="12" x2="4" y2="12" stroke="#333" stroke-width="1.5"/><line x1="8" y1="16" x2="4" y2="16" stroke="#333" stroke-width="1.5"/><line x1="20" y1="12" x2="24" y2="12" stroke="#333" stroke-width="1.5"/><line x1="20" y1="16" x2="24" y2="16" stroke="#333" stroke-width="1.5"/><line x1="12" y1="8" x2="12" y2="4" stroke="#333" stroke-width="1.5"/><line x1="16" y1="8" x2="16" y2="4" stroke="#333" stroke-width="1.5"/><line x1="12" y1="20" x2="12" y2="24" stroke="#333" stroke-width="1.5"/><line x1="16" y1="20" x2="16" y2="24" stroke="#333" stroke-width="1.5"/></svg> 699 <b class="title">KiCad Tools</b> 700 </dt> 701 <dd> 702 <a href="https://www.nextpcb.com/kicad-hub">KiCad Resource Hub</a> 703 <a href="/kicad-version-converter">KiCad Version Converter</a> 704 </dd> 705 </dl> 706 </div> 707 <div class="yui-nav-product-menu-col"> 708 <dl> 709 <dt> 710 <svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M5 22C5 20.3431 6.34315 19 8 19H23" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
710<path d="M8 4H23V24H8C6.34315 24 5 22.6569 5 21V7C5 5.34315 6.34315 4 8 4Z" stroke="#333" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/></svg> 711 <b class="title">Learn</b> 712 </dt> 713 <dd> 714 <a href="/blog">Blog</a> 715 <a href="/news">News</a> 716 </dd> 717 </dl> 718 </div> 719 </div> 720 </div> 721</div> 722 723 </li> 724 <li class="yui-nav-item hover-box hover-main "> 725 <a href="/about-nextpcb">About Us<span class="nav_down_box"></span></a> 726 <!-- <img style="position: absolute;top: 2px; right: -6px;" src="//static.nextpcb.com/images/index-nav-3dvr.gif?v=4"> --> 727 <div class="more_select hover-sub ani-str"> 728 <a class="hover-sub-item" href="/about-nextpcb">About Us</a> 729 <div class="sponsorship-wrap"> 730 <div class="hover-sub-item sponsorship-toggle">Sponsorships</div> 731 <div class="sponsorship-sub-menu"> 732 <a class="hover-sub-item" href="https://www.nextpcb.com/creator-support" target="_blank">- Next Creator Fund</a> 733 <a class="hover-sub-item" href="/free-pcba-prototypes-nextpcb-accelerator">- NextPCB Accelerator Program</a> 734 </div> 735 </div> 736 <a class="hover-sub-item" href="/contactus">Contact Us</a> 737 <a class="hover-sub-item" href="/why-us">Why Us</a> 738 <a class="hover-sub-item" href="/feedback">Feedback</a> 739 <!-- <a class="hover-sub-item" href="/pcb-factory-VR-visiting" target="_blank" style="position: relative;">PCB Factory VR Visiting <img style="position: absolute;top: 4px; right: 6px;" src="//static.nextpcb.com/images/quote/quoteTag.png?v=4"></a> --> 740 <a class="hover-sub-item" href="/helpcenter">Help Center</a> 741 <a class="hover-sub-item" href="/payment">Payment Methods</a> 742 <!-- <a class="hover-sub-item" href="/assembly-factory-show">PCB Assembly Factory Show</a> --> 743 <a class="hover-sub-item" href="/shipment">Shipping Methods</a> 744 <!-- <a class="hover-sub-item" href="/certificate">Certificate</a> --> 745 <!-- <a href="/shipment">Certified Systems</a> --> 746 </div> 747 </li> 748 </ul> 749 <!-- <a class="yui-nav-btn fl-gt uline-hover" href="/pcb-quote">Quote Now</a> --> 750 </div> 751 </div> 752 </div> 753</div> 754 755<div class="yui-nav-fixed rightNav new-right-nav" id="getHqdomain" data-passportdomain="https://apipassport.hqonline.com" data-domain="https://www.hqonline.com"> 756 <ul> 757 <li class="goTop"> 758 <div class="icon-item go-top"></div> 759 </li> 760 <li> 761 <a href="/order/cart/type/1"> 762 <div class="icon-item cart"></div> 763 <span class="cart-num slide-cart-num">0</span> 764 </a> 765 </li> 766 <!-- <li> 767 <a class="mailto_support " href="mailto:[email protected]"> 768 <div class="icon-item email"></div> 769 </a> 770 </li> --> 771 <li class="items hover-box"> 772 <div class="icon-item help"></div> 773 <dl class="hover-sub lay-table"> 774 <dt class="lay-table-item"> 775 <img src="//mobile.nextpcb.com/static/mobile/img/icon/avast.svg?v=20220609" class="u-avast-base"> 776 </dt> 777 <dd class="lay-table-item" style="padding-left: 12px;"> 778 <p class="f-nowrap hover-sub-item"><i class="icoy vlm f-few icon-saleman"></i> <strong>Support Team</strong></p> 779 <p class="f-nowrap hover-sub-item"><i class="icoy vlm f-few icon-email"></i> <a href="mailto:[email protected]">[email protected]</a></p> 780 <p class="f-nowrap hover-sub-item"><i class="icoy vlm f-few icon-tel"></i> <a class="tel_83643663" href="tel:0086-755-83643663">0086-755-8364 3663</a></p> 781 <p class="f-nowrap hover-sub-item"><i class="icoy vlm f-few icon-whatsapp"></i> <a>+86Â 13622941920</a></p> 782 </dd> 783 </dl> 784 </li> 785 <li class="items hover-box"> 786 <a class="mailto_support" href="mailto:[email protected]"> 787 <div class="icon-item email"></div> 788 </a> 789 <div class="hover-sub"> 790 <p>Feedback:</p> 791 <a href="mailto:[email protected]" class="mailto_support f-nowrap hover-sub-item"> 792 <i class="icoy vlm f-few icon-email"></i> 793 794 <span>[email protected]</span> 795 </a> 796 </div> 797 </li> 798 </ul> 799</div> 800 801<a class="contact-us-new" target="_blank" href="/contactus"> 802 <span>Contact Us</span> 803 <img src="//static.nextpcb.com/images/common/icons/contact.svg"> 804</a>
805<script type="text/javascript" src="//static.nextpcb.com/js/js3.0/lang/en-us.min.js?ver=ffabeb"></script>
805 806 <div class="new-wrap"> 807 <div class="blog_d_content clear" style="padding-bottom: 50px;"> 808 <div class="d_content_left fl"> 809 <div id="blogDetailNav" class="tagNav" style="display: block; text-align: left;"> 810 <a href="/blog" style="color: #333;">Blog</a> 811 <span class="fc-dis"> / FREE Functional Testing for your Prototype PCBA with HQ NextPCB</span> 812 </div> 813 814 <div class="contentMsg"> 815 <h1 id="blogDetailTitle" class="contentTitle tc"> 816 FREE Functional Testing for your Prototype PCBA with HQ NextPCB </h1> 817 <div class="contentScore tc fc9"> 818 <span>Posted: July, 2024</span> 819 <span style="margin-left: 40px;">Last Updated: May, 2026</span> 820 <span class="writer">Writer: Carmen Zheng </span> 821 <span class="media-list"> 822 Share: 823 <a rel="nofollow" href="https://bit.ly/2Lfhqq9" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao1.png" loading="lazy" alt="NEXTPCB Official youtube" /></a> 824 <a rel="nofollow" href="https://bit.ly/2ZgGZAR" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao2.png" loading="lazy" alt="NEXTPCB Official Facefook" /></a> 825 <a rel="nofollow" href="https://twitter.com/HQ_NextPCB" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/icon-x.svg" width="26" height="26" loading="lazy" alt="NEXTPCB Official Twitter" /></a> 826 <a rel="nofollow" href="https://bit.ly/2ZegCeO" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao4.png" loading="lazy" alt="NEXTPCB Official Instagram" /></a> 827 <a rel="nofollow" href="https://www.linkedin.com/company/nextpcb" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao5.png" loading="lazy" alt="NEXTPCB Official Linkedin" /></a> 828 <a rel="nofollow" href="https://www.tiktok.com/@nextpcbofficial " target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tiktok.png" loading="lazy" width="26" style="border-radius: 4px;" alt="NEXTPCB Official Tiktok" /></a> 829 <a rel="nofollow" href=" https://bsky.app/profile/nextpcb.bsky.social" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/bksy.svg" loading="lazy" width="26" alt="NEXTPCB Official Bksy" /></a> 830 </span> 831 </div> 832 <div class="contentText"> 833 <p> 834<style type="text/css">/**/ 835body { 836 background: #fff; 837} 838.contentMsg p { 839 margin-bottom: 1.3rem; 840 font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 841 font-size: 1.125rem; 842 color: #000; 843 line-height: 1.8; 844} 845.contentMsg li { 846 font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 847 font-size: 1.125rem; 848 color: #000; 849 line-height: 1.8; 850 margin-bottom: 10px; 851} 852 853.contentText img { 854 margin-top: 0px !important; 855 margin-bottom: 0px !important; 856 border: 1px solid #e5e5e5; 857} 858 859 h1,h2,h3,h4 { 860 margin-bottom: 15px; 861 color: black; 862 margin-top: 15px; 863 line-height: 1.4; 864 font-family: Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; 865} 866.d_content_left .contentMsg .contentTitle { 867 font-size: 38px; 868 font-weight: 800; 869 line-height: 1.2; 870} 871 h1 { 872 font-size: 38px; 873 font-weight: 800; 874} 875 h2 { 876 font-size: 2rem; 877 font-weight: 800; 878} 879 h3 { 880 font-size: 1.55rem; 881 font-weight: 600; 882} 883 h4 { 884 font-size: 1.35rem; 885 font-weight: 500; 886} 887.contentMsg a { 888 color: #cc0000; 889} 890 891.contentMsg a:hover { 892 text-decoration: underline; 893 color: #cc0000; 894} 895 896 .contentMsg ul, ol { 897 margin-bottom: 12px; 898} 899 .contentMsg ul li:before { 900 content: "â¢"; 901 color: #ff7a18; 902 font-weight: 900; 903 margin-right: 8px; 904} 905 .contentMsg table td { 906 padding: 5px; 907 border: 1px black solid; 908}
909.btn { 910 font-family: 'Oswald', sans-serif; 911 font-size: 15px; 912 line-height: 1em; 913 font-weight: 400; 914 color: #fff !important; 915 background-color: #154396; 916 text-decoration: underline; 917 display: inline-block; 918 padding: 20px 25px; 919 text-transform: uppercase; 920 position: relative; 921 border: 2px solid #1A59A0; 922 border-radius: 100px; 923} 924.btn:hover { 925 background-color: #0a1f34; 926} 927/*éèé¢å å±*/ 928.tagNav { 929 display: none; 930} 931/*éèä½è ä¿¡æ¯æ */ 932.d_content_left .contentMsg .contentScore { 933 display: none; 934} 935.fixed-blog-title { 936 position: static; /*è§£é¤åºå®æ é¢*/ 937 width: 880px; 938 background: #FFF; 939 padding-bottom: 20px; 940 margin-left: -38px; 941 margin-top: 0; 942} 943/*H1设置ä¸è¾¹æ¡*/ 944.d_content_left .contentMsg .contentTitle { 945 border-bottom: 1px solid rgb(227, 227, 227, 0.35); 946 padding-bottom: 2rem; 947} 948/*å³ä¾§æç« æ¨èBullet Listé¢è²*/ 949.posts ul li:before { 950 background: #ff7a18; 951} 952.posts ul li a:hover { 953 color: #cc0000; 954} 955 956/*å³ä¾§æ Stickyåè¡é«*/ 957.rContent { 958 position: -webkit-sticky; 959 position: sticky; 960 top: 67px; 961} 962.posts ul li { 963 line-height: 32px; 964} 965 966/*table-of-content*/ 967.table-of-content li{ 968 margin-bottom: 0 !important; 969} 970.table-of-content ul{ 971 margin-bottom: 0 !important; 972} 973.table-of-content a { 974 color: #1a73e8; 975} 976.table-of-content a:hover { 977 text-decoration: underline; 978} 979.table-of-content li:before { 980 content: "â¢" !important; 981 color: grey !important; 982} 983/*å³ä¾§æ¥ä»·åä½é¢è²è°ä¸ºçº¢è²*/ 984.rContent .quickQuotePannel .quoteNav li.active { 985 color: #cc0000; 986 border-color: #e3e3e3; 987} 988/*åºé¨é¾æ¥åbuttonçé¢è²*/ 989.linkBox p a { 990 color: #cc0000; 991} 992.actionBox .feedbackBox .submit_feedback { 993 background: #8e1eb4; 994} 995</style> 996</p> 997 998<p>When it comes to ensuring the quality and reliability of electronic products, PCBA functional testing is an indispensable step. At HQ NextPCB, we recognize the critical role that functional testing plays in the manufacturing process, and we are committed to ensuring our clients achieve the best yield and reliability possible. In this blog, we will delve into the essentials of PCBA functional testing, why it is necessary, the types of testing services we offer, and how we can help you verify your products effectively.</p> 999 1000<h3 style="text-align: center;"><a href="https://www.nextpcb.com" target=""><img src="https://www.nextpcb.com/uploads/images/202407/23/1721732083-8166-uNyGcr.png" style="width: 800px; height: 199px;" /></a></h3> 1001 1002<p style="text-align: center;"><strong>Now you can get USD <span style="color:#c0392b;">$200 off</span> NextPCB's professional turnkey PCB assembly service. <a href="https://www.nextpcb.com/blog/200-Off-PCB-Assembly" target="_blank"><span style="color:#c0392b;">Click here to learn more</span></a></strong></p> 1003 1004<h3><br /> 1005<strong>What is PCBA Functional Testing?</strong></h3> 1006 1007<p>PCBA (Printed Circuit Board Assembly) functional testing involves subjecting assembled circuit boards to a simulated operational environment. The goal is to make the board operate under various controlled conditions and obtain feedback that verifies functionality. Simply put, it is a series of tests conducted on assembled PCBs to ensure they meet design requirements and usage needs. </p> 1008 1009<p>Functional testing may be combined with other tests such as ICT and firmware flashing to improve production efficiency.</p> 1010 1011<h3><br /> 1012<strong>Why is PCBA Functional Testing Important?</strong></h3> 1013 1014<p>Functional testing has its merits over other testing methods for several reasons.</p> 1015 1016<p><strong>Ensures Functionality and Compliance</strong>: A device may appear electrically sound, but if it does not possess the required functionality, then it is useless. Functional testing is a black-box testing method that looks for required outputs from an end-user perspective without looking at the internal structure. Functional testing can prevent defective units from reaching the market and help highlight problematic areas in the manufacturing process.</p> 1017 1018<p><strong>Verifying Production Processes</strong>: Functional testing verifies the entire turnkey process when handing PCB assembly over to a contract manufacturer, especially if they procure the components on your behalf. Major errors such as incorrect polarity or part value, fake parts, or PCB shorts can be identified instantly, which can then be c
1018orrected at the assembly facility, saving valuable time.</p> 1019 1020<p>Functional testing plans, in combination with other tests, can be designed to achieve different goals depending on the quantity and type of device to be tested:</p> 1021 1022<p><strong>  1. Functional Testing on one device</strong>: Testing one device is enough to verify PCB manufacture, procurement and placement e.g. simple power on/off test for prototypes. Further testing on a handful of devices can help debug problems.</p> 1023 1024<p><strong>  2. Mass production random sampling</strong>: To periodically monitor manufacturing processes during the entire production run.</p> 1025 1026<p><strong>  3. 100% small batch testing</strong>: Verifies all devices function as intended. Valuable for high-value devices and where failures are not acceptable.</p> 1027 1028<h3><br /> 1029<strong>Types of Functional Testing supported by HQ NextPCB</strong></h3> 1030 1031<p>HQ NextPCB has the expertise and equipment to perform various functional tests to ensure your PCB assemblies meet your high standards, including:</p> 1032 1033<ul> 1034 <li><strong>Electrical Connectivity</strong>: Verify the electrical performance, including voltage, current, and power consumption.</li> 1035 <li><strong>Communications</strong>: Confirm the reliability and correctness of communication interfaces (e.g., UART, I2C, SPI, USB, HDMI, Ethernet).</li> 1036 <li><strong>Signal Integrity</strong>: Signal integrity and timing accuracy.</li> 1037 <li><strong>Memory</strong>: Test the read and write functionality of RAM and flash memory.</li> 1038 <li><strong>Functional Module Test</strong>: Evaluate the operation of various modules like buttons, LED indicators, and sensors.</li> 1039 <li><strong>Clock Test</strong>: Check the frequency and stability of clock signals.</li> 1040 <li><strong>Fault Detection and Fault Tolerance Test</strong>: Simulate fault conditions to test the board's fault tolerance.</li> 1041 <li><strong>Software Functional Test</strong>: Assess the functionality and performance of embedded software or firmware.</li> 1042</ul> 1043 1044<h4><strong>Simple Sample Test Instructions</strong></h4> 1045 1046<p>Order Quantity: 100</p> 1047 1048<p>Test Quantity: 100</p> 1049 1050<p>Required Equipment: 5V power supply</p> 1051 1052<p><strong>Test Instructions:</strong></p> 1053 1054<p>Apply 5V power to terminals - +</p> 1055 1056<p>Pass Condition: All LEDs light up with equal brightness</p> 1057 1058<p>Fail Condition: One or more LEDs do not light up or have different brightness</p> 1059 1060<h4><strong>Industrial Meter with Firmware Programming Sample Test Instructions</strong></h4> 1061 1062<p>Order Quantity: 20</p> 1063 1064<p>Test Quantity: 20</p> 1065 1066<p>Required Files: hqsample_a_0_2.elf (firmware)</p> 1067 1068<p>Required Equipment: Computer, STM32 programmer, relay coil driver, pulse generator and power supply.</p> 1069 1070<p><b>Test Instructions:</b></p> 1071 1072<p>1. Apply 24 VDC power to the GND and + IN terminal and make sure display powers and then program unit.</p> 1073 1074<p>Pass Condition: Display powers on and device programmed successfully</p> 1075 1076<p>2. Activate the relay coil driver using the push buttons and verify that 24 VDC power is available on connections GND and +FM. </p> 1077 1078<p>Pass Condition: 24 VDC output</p> 1079 1080<p>3. Then apply approximately 209 hertz square wave on terminal TRM and verify the display shows 100.  </p> 1081 1082<p>Pass Condition: Display shows 100</p> 1083 1084<p>4. Verify that there is a square wave pulse output showing on PUL - + terminals</p> 1085 1086<p>Pass Condition: Square wave output</p> 1087 1088<p>Test report available upon request</p> 1089 1090<p>PCBA Functional Test Sampleï¼</p> 1091 1092<p><img alt="PCB Assembly functional Test sample" src="https://www.nextpcb.com/uploads/images/202605/27/1779848787-7627-TonXDb.png" style="width: 900px; height: 805px;" /></p> 1093 1094<h3><strong>How does HQ NextPCB provide Functional Testing services?</strong></h3> 1095 1096<p>To deliver effective functional testing, we follow a structured process:</p> 1097 1098<article> 1099<h2 style="text-align: center;"><img height="719" src="https://www.nextpcb.com/uploads/images/202407/23/1721729250-1149-XFmSVK.png" width="586" /></h2> 1100 1101<h3><br /> 1102<strong>Free Functional Testing for Prototypes</strong></h3> 1103 1104<p>PCBA functional testing is a vital part of the electronics manufacturing process, and HQ NextPCB is here to supp
1104ort you every step of the way. Our comprehensive testing services help you ensure the quality, reliability, and performance of your products, ultimately leading to higher customer satisfaction and reduced costs.</p> 1105 1106<p>To help our customers better verify their products during the prototype stage, HQ NextPCB offers free functional testing for prototypes for up to 10Â devices. This service verifies the turnkey process and ensures that your prototypes are functional before they leave the factory, saving you time and money on the route to final production.</p> 1107 1108<p>Contact us at <a href="mailto:[email protected]">[email protected]</a> today to learn more about our functional testing services and how we can assist you in achieving your quality goals.</p> 1109 1110<p style="text-align: center;"><span style="font-size:16px;"><a class="my-button" href="https://www.nextpcb.com/pcb-assembly-quote" style="color: #ffffff;">Quote Now</a></span> 1111<style type="text/css">.my-button { 1112 display: inline-block; 1113 padding: 10px 50px; 1114 font-size: 16px; 1115 text-align: center; 1116 text-decoration: none; 1117 background-color: #DB1A1A; 1118 color: #fffff0; 1119 border: none; 1120 border-radius: 50px; 1121 font-weight: bold; 1122 cursor: pointer; 1123 box-shadow: 0px 2px 5px rgba(0, 0, 0, 0.3); 1124 transition: background-color 0.3s ease, transform 0.3s ease; 1125} 1126 1127.my-button:hover { 1128 background-color: #990c12; 1129 transform: scale(1.05); 1130} 1131</style> 1132</p> 1133 1134<p style="text-align: center;">Â </p> 1135 1136<h3><strong>More links:</strong>Â </h3> 1137 1138<p><a href="https://www.nextpcb.com/blog/200-Off-PCB-Assembly" target="_blank"><span style="color:#c0392b;">Save $200 on Professional Turnkey PCB Assembly from HQ NextPCB</span></a>Â (Blog)<br /> 1139<a href="https://www.nextpcb.com/blog/new-automated-pcb-assembly-quote-system" target="_blank"><span style="color:#c0392b;">New Automated PCB Assembly Quotation System - Order in Just a Few Steps!</span></a>Â (Blog)<br /> 1140<a href="https://www.nextpcb.com/blog/how-to-order-pcb-and-pcba-from-nextpcb" target="_blank"><span style="color:#c0392b;"><u>How to Order PCB & PCBA from NextPCB?</u></span></a>Â (Blog)<br /> 1141<a href="https://support.nextpcb.com/portal/en/kb/articles/how-to-place-a-pcba-order-28-6-2023" target="_blank"><span style="color:#c0392b;"><u>How to place a PCBA order?</u></span></a>Â (FAQ)<br /> 1142<a href="https://support.nextpcb.com/portal/en/kb/articles/how-long-do-pcba-order-take-27-6-2023" target="_blank"><span style="color:#c0392b;"><u>How long is the lead time for PCB Assembly (PCBA) orders?</u></span></a>Â (Blog)<br /> 1143<a href="https://support.nextpcb.com/portal/en/kb/pcb-assembly-service-faq" target="_blank"><span style="color:#c0392b;"><u>PCB Assembly (PCBA) FAQ</u></span></a><span style="color:#c0392b;">Â </span></p> 1144</article> 1145 1146 <style type="text/css"> 1147 .contentMsg p, .contentMsg li, h1,h2,h3,h4, .contentMsg span, .contentMsg a { 1148 font-family: system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, Cantarell, Noto Sans, sans-serif, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol" !important; 1149 } 1150 </style> 1151 </div> 1152 <div class="linkBox"> 1153 <p>Still, need help? Contact Us: <a class="mailto_support" href="mailto:[email protected]">[email protected]</a></p> 1154 <p>Need a PCB or PCBA quote? <a href="/pcb-quote">Quote now</a></p> 1155 </div> 1156 <div class="tags"> 1157 </div> 1158 <div class="actionBtn action_box"> 1159 <span class="mr40"><i class="icon watch"></i>51604 </span> 1160 <span class="mr40" style="cursor:pointer;" onclick="add_like(1266)"><i id="like_icon_1266" class="icon praise"></i><like id="article_like_1266">9</like> </span> 1161 <span class="mr40"><i class="icon feedback"></i>0 </span> 1162 <span class="mr40 sharesBox"><i class="icon share"></i>1 1163 <span class="s_menu"> 1164 <a href="" target="_blank"> 1165 <i></i> 1166 Facebook 1167 </a> 1168 <a href="" target="_blank"> 1169 <i></i> 1170 Twitter 1171 </a> 1172 <a href="" target="_blank"> 1173 <i></i> 1174 Linked In 1175 </a> 1176 </span> 1177 </span> 1178 </div> 1179 </div> 1180 <div class="actionBox"> 1181 <!-- <form action="/Blog/comment" method="post"> --> 1182 <input type="hidden" value="1266" name="aid"> 1183 <div class="feedbackBox"> 1184 <textarea placeholder="Please enter your content" name="comments"></textarea> 1185 <button class="submit_feedback" data-id="1266">Comments</button> 1186 </div> 1187 <!-- </form> --> 1188 </div> 1189 1190 <div class="commentList"> 1191 <ul> 1192 </ul> 1193 </div> 1194 </div> 1195 <div class="rContent"> 1196 <div class="promo-box"> 1197 <a href="/pcb-quote" target="_blank"> 1198 <img src="//static.nextpcb.com/images/blog/detail-adv1.png" style="width: 100%;"> 1199 </a> 1200 1201 <a href="/blog/200-Off-PCB-Assembly" target="_blank"> 1202 <img src="//static.nextpcb.com/images/blog/detail-adv2.jpg" style="width: 100%;"> 1203 </a> 1204 </div> 1205 1206 <div class="posts"> 1207 <h6>Recommended Article:</h6> 1208 <ul> 1209 <li><a title="Lead-Free Solder Materials: Alloy Guide & How to Choose | NextPCB" href="/blog/lead-free-solder-material-guide">Lead-Free Solder Materials: Alloy Guide & How to Choose | NextPCB</a></li> 1210 <li><a title="Feedback Amplifiers and Oscillator Circuits: A Practical Guide" href="/blog/feedback-amplifiers-and-oscillator-circuits-guide">Feedback Amplifiers and Oscillator Circuits: A Practical Guide</a></li> 1211 <li><a title="Transistor Biasing and Amplifier Design: BJT & FET Explained" href="/blog/transistor-biasing-and-amplifier-design-guide">Transistor Biasing and Amplifier Design: BJT & FET Explained</a></li> 1212 <li><a title="Electronic Devices and Circuits: Complete Guide | NextPCB" href="/blog/electronic-devices-and-circuits-guide">Electronic Devices and Circuits: Complete Guide | NextPCB</a></li> 1213 <li><a title="PCB Missing Silk Screen: Causes, Risks & How to Prevent It | NextPCB" href="/blog/pcb-missing-silk-screen">PCB Missing Silk Screen: Causes, Risks & How to Prevent It | NextPCB</a></li> 1214 </ul> 1215 </div> 1216 </div> 1217 </div> 1218 <div id="blogDetail"> 1219 <login-win v-model="loginwin" @loginsuccess="loginSuccess"></login-win>
1219 1220 </div> 1221 </div> 1222 1223 <footer class="yui-foot"> 1224 <div class="wrap"> 1225 <div class="yui-foot-lay yui-foot-linklist"> 1226 <dl class="yui-foot-lay-item"> 1227 <dt>Services</dt> 1228 <dd> 1229 <a href="/pcb-quote">Standard PCB Quote</a> 1230 <a href="/pcb-capabilities">Standard PCB Capabilities</a> 1231 <a href="/advanced-pcb-quote">Advanced PCB Quote</a> 1232 <a href="https://www.nextpcb.com/advanced-pcb-manufacturing-capabilities">Advanced PCB Capabilities</a> 1233 <a href="/pcb-assembly-quote">PCB Assembly Quote</a> 1234 <a href="/pcb-assembly-capabilities">PCB Assembly Capabilities </a> 1235 <a href="/pcb-stencil-quote">PCB Stencil Quote</a> 1236 </dd> 1237 </dl> 1238 <dl class="yui-foot-lay-item"> 1239 <dt>Tools & Resources</dt> 1240 <dd> 1241 <a href="/dfm">HQDFM - DFM Tool</a> 1242 <a href="/free-online-gerber-viewer.html">Online Gerber Viewer</a> 1243 <a href="/pcb-impedance-calculator">PCB Impedance Calculator</a> 1244 <a href="https://www.nextpcb.com/impedance-control-stackups">PCB Stackups & Impedance</a> 1245 <a href="https://www.nextpcb.com/kicad-hub">KiCad Resource Hub</a> 1246 <a href="/kicad-download">KiCad Download</a> 1247 <a href="/pcb-glossary">PCB Glossary</a> 1248 <a href="/blog/">Blog</a> 1249 <a href="/free-pcba-prototypes-nextpcb-accelerator">NextPCB Accelerator Program</a> 1250 </dd> 1251 </dl> 1252 <dl class="yui-foot-lay-item"> 1253 <dt><a href="/about-nextpcb">About NextPCB</a></dt> 1254 <dd> 1255 <a href="/about-nextpcb">About Us</a> 1256 <a href="/why-us">Why Us</a> 1257 <a href="/payment">Payment Methods</a> 1258 <!-- <a href="/pcb-factory-VR-visiting">PCB Assembly Factory Show</a> --> 1259 <a href="/shipment">Shipping Methods</a> 1260 <a href="/certificate">Certificate</a> 1261 <!-- <a href="/blog">Blog</a> --> 1262 </dd> 1263 1264 <dt style="margin-top: 20px;">Distributor</dt> 1265 <dd> 1266 <a href="https://www.utsource.net/" rel="nofollow" target="_blank">UTSOURCE</a> 1267 </dd> 1268 </dl> 1269 <dl class="yui-foot-lay-item"> 1270 <dt>Support</dt> 1271 <dd> 1272 <a href="/helpcenter">Help Center</a> 1273 <a href="/terms-of-service">Terms of Service</a> 1274 <a href="/privacy-policy">Privacy Policy</a> 1275 <a href="/return-policy">Return Policy</a> 1276 </dd> 1277 </dl> 1278 </div> 1279 <div class="yui-foot-lay yui-foot-imgflags"> 1280 <dl class="yui-foot-lay-item"> 1281 <dt>Payment Methods</dt> 1282 <dd> 1283 <img src="//static.nextpcb.com/images/img30/foot-payment.png" loading="lazy"> 1284 </dd> 1285 </dl> 1286 <dl class="yui-foot-lay-item"> 1287 <dt>Shipping Methods</dt> 1288 <dd><img src="//static.nextpcb.com/images/img30/foot-flagimg2.png" loading="lazy"></dd> 1289 </dl> 1290 <dl class="yui-foot-lay-item"> 1291 <dt>Certificate</dt> 1292 <dd><a href="/certificate"><img src="//static.nextpcb.com/images/img30/foot-flagimg3.png" loading="lazy"></a></dd> 1293 </dl> 1294 <dl class="yui-foot-lay-item"> 1295 <dt>Social Media</dt> 1296 <dd class="media-list"> 1297 <a rel="nofollow" href="https://bit.ly/2Lfhqq9" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao1.png" loading="lazy" alt="NEXTPCB Official youtube" /></a> 1298 <a rel="nofollow" href="https://bit.ly/2ZgGZAR" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao2.png" loading="lazy" alt="NEXTPCB Official Facefook" /></a> 1299 <a rel="nofollow" href="https://twitter.com/HQ_NextPCB" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/icon-x.svg" width="26" height="26" loading="lazy" alt="NEXTPCB Official Twitter" /></a> 1300 <a rel="nofollow" href="https://bit.ly/2ZegCeO" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao4.png" loading="lazy" alt="NEXTPCB Official Instagram" /></a> 1301 <a rel="nofollow" href="https://www.linkedin.com/company/nextpcb" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tubiao5.png" loading="lazy" alt="NEXTPCB Official Linkedin" /></a> 1302 <a rel="nofollow" href="https://www.tiktok.com/@nextpcbofficial " target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/tiktok.png" loading="lazy" width="26" style="border-radius: 4px;" alt="NEXTPCB Official Tiktok" /></a> 1303 <a rel="nofollow" href=" https://bsky.app/profile/nextpcb.bsky.social" target="_blank"><img src="//static.nextpcb.com/images/newNavIcon/bksy.svg" loading="lazy" width="26" alt="NEXTPCB Official Bksy" /></a> 1304 </dd> 1305 </dl> 1306 </div> 1307 <ul class="yui-foot-lay yui-foot-submit"> 1308 <li class="yui-foot-lay-item" style="display: flex; justify-content: center;"> 1309 <div style="display: flex; justify-content: space-between;"> 1310 <a href="/" style="display: flex; align-items: center;"> 1311 <img src="//static.nextpcb.com/images/newNavIcon/logo2025_w.svg" loading="lazy" height="38" style="margin-right: 20px; height: 38px;"> 1312 </a> 1313 <a href="/dfm.html" target="_blank"> 1314 <img src="//static.nextpcb.com/images/img30/hqdfm-white-new.svg" loading="lazy" width="140" style="margin-top: 4px; margin-right: 20px;" > 1315 </a> 1316 <a class="hqonline-href" href="https://www.hqonline.com" target="_blank"> 1317 <img src="//static.nextpcb.com/images/img30/hqonline-white.svg" loading="lazy" width="160"> 1318 </a> 1319 </div> 1320 </li> 1321 </ul> 1322 </div> 1323 <div class="yui-foot-copyright">
1324 <p> ©2026 NEXTPCB All Rights Reserved</a></p> 1325 </div> 1326</footer> 1327<!----$Request.module-- home--$Request.controller-- Quote --$Request.action online -->
1328<script>var loginState = 'logout', accountId = '0';</script>
vendor: 1 bytes, line 1328
1328
1329<script type="text/javascript" src="//static.nextpcb.com/vendor/layui/layui.all.js?ver=11fec4"></script>
vendor: 1 bytes, line 1329
1329
1330<script type="text/javascript" src="//static.nextpcb.com/vendor/hello/hello.all.min.js?ver=bb8c35"></script>
vendor: 1 bytes, line 1330
1330
1331<script type="text/javascript" src="//static.nextpcb.com/js/jquery-1.8.3.min.js?ver=3576a6"></script>
vendor: 1 bytes, line 1331
1331
1332<script type="text/javascript" src="//static.nextpcb.com/vendor/dialog.js?ver=185454"></script>
vendor: 1 bytes, line 1332
1332
1333<script type="text/javascript" src="//static.nextpcb.com/js/plugins.min.js?ver=b26615"></script>
vendor: 1 bytes, line 1333
1333
1334<script type="text/javascript" src="//static.nextpcb.com/js/common.min.js?ver=bba603"></script>
vendor: 1 bytes, line 1334
1334
1335<script type="text/javascript" src="//static.nextpcb.com/js/js3.0/base.min.js?ver=6baa32"></script>
1335 1336
1337<script> 1338 var shareasaleSSCID=shareasaleGetParameterByName("sscid"); 1339 function shareasaleSetCookie(e,a,r,s,t){ 1340 if(e&&a){ 1341 var o,n=s?"; path="+s:"",i=t?"; domain="+t:"",l="";r&&((o=new Date).setTime(o.getTime()+r),l="; expires="+o.toUTCString()),document.cookie=e+"="+a+l+n+i 1342 } 1343 } 1344 function shareasaleGetParameterByName(e,a){ 1345 a||(a=window.location.href),e=e.replace(/[\[\]]/g,"\\$&"); 1346 var r=new RegExp("[?&]"+e+"(=([^&#]*)|&|#|$)").exec(a);return r?r[2]?decodeURIComponent(r[2].replace(/\+/g," ")):"":null 1347 } 1348 shareasaleSSCID&&shareasaleSetCookie("shareasaleSSCID",shareasaleSSCID,94670778e4,"/"); 1349</script>
1349 1350 1351<!--
1351<script type="text/javascript" src="//static.nextpcb.com/js/lazyload.js?ver=b0d895"></script>
1351 -->
1352<script> 1353// ç¡®ä¿DOMå®å ¨å è½½åååå§åæå è½½ 1354// $(document).ready(function() { 1355// // åå§åå¾çæå è½½ 1356// $('img[data-src]').lazyload({ 1357// threshold: 200, // æå200pxå è½½ 1358// onImageLoadSuccess: function() { 1359// // å¾çå è½½æåæ¶çå¤ç 1360// // console.log('Image loaded successfully'); 1361// }, 1362// onImageLoadError: function() { 1363// // å¾çå 载失败æ¶çå¤ç 1364// console.log('Image load error'); 1365// } 1366// }); 1367// }); 1368</script>
1368 1369
1369<script type="text/x-template" id='loginwin'> 1370<div class="winout-box" v-if="value"> 1371 <input style="display: none;" type="text" v-model="value"> 1372 <section class="signup vlm-wrap winout-out" style="height: auto;"> 1373 <div class="signup-box vlm" style="width: 400px; height: 450px;"> 1374 <div class="title" style="background: none; position: absolute; width: 100%; padding: 0; border: 0;margin: 0;"> 1375 <i class="icoy icon-close fc-dis" @click="close"></i> 1376 </div> 1377 <div class="signup-gt lay-lg-gt" style="width: 100%; padding-top: 30px;"> 1378 <h3 class="signup-gt-title" v-show="active===0"> 1379 <strong class="fc-main mr30 login-title">Login</strong> 1380 </h3> 1381 <p>Please log in to the account you created at HQ Online or NextPCB.</p> 1382 <div class="signup-form" v-show="active === 0" style="padding-top: 10px;"> 1383 <label class="form-input-wrap lay-table-box" 1384 :class="{inputError:loginmsg.emailempty || loginmsg.email 1385 }"> 1386 <i class="form-input-ltico lay-table-item icoy icon-email"></i> 1387 <div class="lay-table-item"> 1388 <input @input="loginInput($event,'email')" v-model="loginparam.email" class="form-input" type="email" placeholder="Email address or member ID" name="email" value="" autocomplete="off" /> 1389 </div> 1390 </label> 1391 <p class="inputErrorTips" v-if="loginmsg.emailempty">{{loginmsg.emailempty}}</p> 1392 <p class="inputErrorTips" v-if="loginmsg.email">{{loginmsg.email}}</p> 1393 <label class="form-input-wrap lay-table-box" 1394 :class="{inputError:loginmsg.passwordempty || loginmsg.password}"> 1395 <i class="form-input-ltico lay-table-item icoy icon-pass"></i> 1396 <div class="lay-table-item"> 1397 <input v-if="loginpassshow" @input="loginInput($event,'password')" v-model="loginparam.password" class="showpassword form-input" type="password" placeholder="Password" name="password" value="" /> 1398 <input v-if="!loginpassshow" @input="loginInput($event,'password')" v-model="loginparam.password" class="showpassword form-input" type="text" placeholder="Password" name="" value="" autocomplete="off"/> 1399 </div> 1400 <i class="lay-table-item form-input-gtico icoy f-baselge" 1401 :class="{'icon-hide':loginpassshow,'icon-show':!loginpassshow}" 1402 @click="loginpassshow=!loginpassshow" 1403 style="cursor: pointer;"></i> 1404 </label> 1405 <p class="inputErrorTips" v-if="loginmsg.passwordempty" v-text="loginmsg.passwordempty"></p> 1406 <p class="inputErrorTips" v-if="loginmsg.password" v-text="loginmsg.password"></p> 1407 <div class="form-input-code"> 1408 <div class="form-input-code-img fl-gt"> 1409 <img width="108" height="34" :src="codesrc" class="verifyImg" alt="captcha" @click="changeCode" /> 1410 </div> 1411 <label class="form-input-wrap lay-table-box" 1412 :class="{inputError:loginmsg.verifyCode}"> 1413 <i class="form-input-ltico lay-table-item icoy icon-safe"></i> 1414 <div class="lay-table-item"> 1415 <input @input="loginInput($event,'verifyCode')" v-model="loginparam.verifyCode" class="form-input" type="text" placeholder="Verification code" name="code" /> 1416 </div> 1417 </label> 1418 </div> 1419 <p class="inputErrorTips" v-if="loginmsg.verifyCode" v-text="loginmsg.verifyCode"></p> 1420 <div class="signup-form-submit"> 1421 <span class="signup-form-submit-lt fl-lt"> 1422 <div class="signup-form-submit-cover"></div> 1423 <button @click="loginSubmit" class="lbtn-disbold active" :class="{'lbtn-hover':!logindis}" :disabled="logindis" type="submit">Login</button> 1424 </span> 1425 <span class="signup-form-submit-gt fl-lt" style="width: 35%;"> 1426 <em>or</em> 1427 <a target="_blank" href="/member/oauth/google"><img width="36" height="36" alt="" src="//static.nextpcb.com/images/google.png" ></a> 1428 <!-- <a target="_blank" href="/member/oauth/facebook"><img width="36" height="36" alt="" src="//static.nextpcb.com/images/facebook.png" ></a> --> 1429 </span> 1430 </div> 1431 <p style="clear: both; padding-top: 20px;"><a class="fc-gnr uline-hover-main" :href="`${ssoNextpcb}/forgot-password`">Forgot password?</a></p> 1432 <p style="clear: both;t ext-align: right; text-align:right;"><a class="uline-hover-main" style="color: #C00;" :href="`${ssoNextpcb}/register`">Create Account ></a></p> 1433 </div> 1434 1435 </div> 1436 </div> 1437 </section> 1438 <div class="winout-bg ani-str"></div> 1439</div> 1440</script>
1440 1441<style type="text/css"> 1442 .winout-box .signup-form-submit-cover{ 1443 position: absolute; 1444 top: 0; 1445 left: 0; 1446 bottom: 0; 1447 right: 0; 1448 cursor: pointer; 1449 } 1450 .winout-box .signup-form-submit-lt { 1451 position: relative; 1452 } 1453 .winout-box .form-input-wrap { 1454 font-size: 14px; 1455 } 1456 .winout-box .form-input-wrap.inputFocus { 1457 border-color: #c00; 1458 } 1459 .winout-box .inputErrorTips { 1460 font-size: 12px; 1461 } 1462 input:-internal-autofill-previewed, 1463 input:-internal-autofill-selected { 1464 /* -webkit-text-fill-color: #333; */ 1465 transition: background-color 5000s ease-out 0.5s; 1466 } 1467 .login-title{ 1468 font-size: 24px; 1469 color: #c00; 1470 } 1471 .lbtn-hover{ 1472 background-color: #c00; 1473 } 1474 .lbtn-hover:hover{ 1475 background-color: #990C12; 1476 } 1477 i { 1478 font-style: normal !important; 1479 } 1480</style>
1481<script type="text/javascript"> 1482 const jsonpRequest = function (url,query,resolve) { 1483 var domain = window.location.host; 1484 if (!url) { 1485 console.error('Please input url') 1486 return; 1487 } 1488 window.jsonCallBack = (result) => { 1489 if (typeof resolve === "function") { 1490 return resolve(result) 1491 } 1492 } 1493 var JSONP = document.createElement("script"); 1494 JSONP.type = "text/javascript"; 1495 var qStr = ""; 1496 query.domain = domain; 1497 for (var k in query) { 1498 qStr += "&" + k + "=" + query[k]; 1499 } 1500 JSONP.src = url + '?callback=jsonCallBack' + qStr; 1501 document.getElementsByTagName("head")[0].appendChild(JSONP); 1502 setTimeout(() => { 1503 document.getElementsByTagName("head")[0].removeChild(JSONP) 1504 }, 500); 1505 } 1506 function LoginWin(){ 1507 function setForm(vm){ 1508 $(vm.$el).find("input").focus(function(e){ 1509 var father = $(this).closest(".form-input-wrap"); 1510 if(father.hasClass("inputError")){ 1511 father.removeClass("inputFocus"); 1512 }else{ 1513 father.addClass("inputFocus"); 1514 } 1515 }).blur(function(){ 1516 $(this).closest(".form-input-wrap").removeClass("inputFocus"); 1517 }); 1518 } 1519 var vueData = { 1520 //{"status":200,"url":"\/me_member","data":{"member_id":8305,"member_sn":"E8212A","email":"[email protected]"}} 1521 loginUrl: "/member/login/dologin", 1522 //{"status":200,"url":"\/member","data":{"member_id":"8306","member_sn":"E8213A","email":"[email protected]"}} 1523 //signupUrl: "/member/register/singup", 1524 active: 0, 1525 msg: { 1526 email: "Email format you entered is incorrect.",//é®ç®±è§å 1527 //confirmpassword: "Please enter 6 - 16 characters (A-Z/a-z, 0-9 only)",// 1528 emailempty: "Please enter your email address.", //é®ç®±ä¸ºç©º 1529 password: "Please enter 6 - 16 characters (A-Z/a-z, 0-9 only)",//å¯ç è§å 1530 passwordempty: "Please enter your password", //å¯ç 为空 1531 //confirmpasswordempty: "Please comfirm your password", //忬¡è¾å ¥å¯ç 为空 1532 //passwordsame: "The second entered password is inconsistent.",//两次å¯ç æ¯å¦ä¸è´ 1533 verifyCode: "Please enter the verification code." //éªè¯ç æ¯å¦ä¸ºç©º 1534 }, 1535 loginmsg:{}, 1536 loginok: { 1537 email: false,//é®ç®±è§å 1538 emailempty: false, //é®ç®±ä¸ºç©º 1539 password: false,//å¯ç è§å 1540 passwordempty: false, //å¯ç 为空 1541 verifyCode: false //éªè¯ç æ¯å¦ä¸ºç©º 1542 }, 1543 rule: { 1544 email: /^([a-zA-Z0-9]+[_|\_|\-|\.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9]+[_|\_|\-|\.]?)*[a-zA-Z0-9]+\.[a-zA-Z]{2,3}$/, 1545 password: /^.*(?=.{6,16})(?=.*[a-zA-Z0-9]).*$/, 1546 empty: /\S/ 1547 }, 1548 loginpassshow: true, 1549 loginparam: { 1550 dopost: "login", 1551 fmdo: "login", 1552 email: "", 1553 password: "", 1554 verifyCode: "", 1555 codeId: "" 1556 }, 1557 codesrc:'/member/register/verify', 1558 registerUrl: '/register', 1559 ssoLoginUrl: "https://apipassport.hqonline.com", 1560 ssoCodeUrl: "https://apipassport.hqonline.com/auth/code", 1561 ssoHqonline: "https://passport.hqonline.com", 1562 ssoNextpcb: "https://passport.nextpcb.com", 1563 isLogin: false 1564 } 1565 return { 1566 props:["value","dft","keepHead","dfm"], 1567 data: function(){ 1568 return vueData; 1569 }, 1570 mounted: function(){ 1571 setForm(this); 1572 if(this.dfm == 1){ 1573 this.registerUrl = "/nextdfm-signup.html" 1574 } 1575 this.changeCode() 1576 }, 1577 computed: { 1578 logindis: function(){ 1579 var isDis = false; 1580 for(var k in this.loginok){ 1581 if(!this.loginok[k]){ 1582 isDis = true; 1583 } 1584 } 1585 return isDis; 1586 } 1587 }, 1588 methods: { 1589 setHeadLogin: function(resp){ 1590 $("#ajax_Login_no").hide(); 1591 $("#ajax_loginout").show(); 1592 $("#ajax_Login_yes").show(); 1593 //设置ç»å½ 1594 $("#ajax_Login_name").text(resp.email); 1595 1596 $("#ajax_Login_cart_count").text(resp.cartCount); 1597 //设置ç»å½æ°æ® 1598 var box = $("#ajax_Login_yes"); 1599 box.find(".yui-top-login-id").text("ID:"+resp.memberSn); 1600 box.find(".yui-top-login-name em").text("Hi,"+resp.userName); 1601 box.find("dt img").attr("src",resp.avatar||"//static.nextpcb.com/images/newNavIcon/new_user.png") 1602 1603 }, 1604 changeCode: function(){ 1605 $.get(this.ssoCodeUrl, (res) => { 1606 if (res.retCode == 200) { 1607 this.codesrc = `data:image/png;base64,${res.result.image}` 1608 this.loginparam.codeId = res.result.id 1609 } 1610 }) 1611 }, 1612 countRule: function(arg){ 1613 if(arg instanceof Object){ 1614 var key = arg.key, 1615 val = arg.val, 1616 lgok = arg.type+'ok', 1617 lgmsg = arg.type+'msg', 1618 vm = this; 1619 if(arg.rule && arg.rule instanceof Array){ 1620 arg.rule.forEach(function(v){ 1621 for(var k in vm[lgok]){ 1622 if(k === v){ 1623 if(vm.rule[v].test(val)){ 1624 vm[lgok][k] = true; 1625 Vue.set(vm[lgmsg],k,false ) 1626 }else{ 1627 vm[lgok][k] = false;
1628 Vue.set(vm[lgmsg],k,vm.msg[k] ) 1629 } 1630 }else if(k === (key+v)){ 1631 if(vm.rule[v].test(val)){ 1632 vm[lgok][key+v] = true; 1633 Vue.set(vm[lgmsg],key+v,false ) 1634 }else{ 1635 vm[lgok][key+v] = false; 1636 Vue.set(vm[lgmsg],key+v,vm.msg[key+v] ) 1637 } 1638 }else{ 1639 if(vm.rule[v].test(val)){ 1640 vm[lgok][key] = true; 1641 Vue.set(vm[lgmsg],key,false ) 1642 }else{ 1643 vm[lgok][key] = false; 1644 Vue.set(vm[lgmsg],key,vm.msg[key] ) 1645 } 1646 } 1647 } 1648 1649 }); 1650 } 1651 } 1652 }, 1653 loginInput: function(e,key){ 1654 var val = e.target.value; 1655 if(key === 'verifyCode'){ 1656 this.countRule({key:key,val:val,rule:['empty'],type:'login'}); 1657 }else{ 1658 this.countRule({key:key,val:val,rule:['empty',key],type:'login'}); 1659 } 1660 }, 1661 close: function(){ 1662 this.value = false; 1663 }, 1664 loginSubmit: function(){ 1665 var vm = this; 1666 if(!this.logindis){ 1667 const sendData = { codeId: this.loginparam.codeId, password: this.loginparam.password, userName: this.loginparam.email, code: this.loginparam.verifyCode } 1668 $.ajax({ 1669 url: `${this.ssoLoginUrl}/auth/login?domain=.nextpcb.com`, 1670 type: 'POST', 1671 data: JSON.stringify(sendData), 1672 dataType: 'json', 1673 xhrFields: { 1674 withCredentials: true // å 许跨åè¯·æ±æ¶æºå¸¦cookie 1675 }, 1676 crossDomain: true, // æç¡®å¼å¯è·¨åè¯·æ± 1677 beforeSend: function(xhr) { // å¨åé请æ±å设置请æ±å¤´ 1678 xhr.setRequestHeader('Content-Type', 'application/json;charset=UTF-8'); 1679 }, 1680 success: function(res) { 1681 if(res.retCode === 200){ 1682 var resp = res.result; 1683 vm.value = false; 1684 vm.setPassportCookie(res.result.token) 1685 setTimeout(()=>{ 1686 vm.$emit("loginsuccess",resp); 1687 },500) 1688 if(!vm.keepHead){ 1689 vm.setHeadLogin(resp); 1690 } 1691 }else{ 1692 if(res.retMsg && res.retMsg.indexOf("code error")>0){ 1693 vm.loginok.verifyCode = false; 1694 vm.loginmsg.verifyCode = res.msg; 1695 } 1696 if(res.retMsg && res.retMsg.indexOf("account name")>0){ 1697 vm.loginok.email = false; 1698 vm.loginmsg.email = res.msg; 1699 vm.loginparam.verifyCode = ''; 1700 vm.loginok.verifyCode = false; 1701 } 1702 if(res.retMsg && res.retMsg.indexOf("password")>0){ 1703 vm.loginok.password = false; 1704 vm.loginmsg.password = res.msg; 1705 vm.loginparam.verifyCode = ''; 1706 vm.loginok.verifyCode = false; 1707 } 1708 layer.msg(res.retMsg); 1709 vm.changeCode(); 1710 } 1711 }, 1712 error: function(error) { 1713 console.error('error:', error); 1714 } 1715 }) 1716 } 1717 }, 1718 setPassportCookie(token,fn) { 1719 jsonpRequest(this.ssoHqonline + '/passportapi/setpassportLogin', { token }) 1720 jsonpRequest(this.ssoNextpcb + '/passportapi/setpassportLogin', { token }) 1721 } 1722 }, 1723 watch: { 1724 value: function(val){ 1725 this.$emit("input",val); 1726 var email = localStorage.getItem("loginEmail"); 1727 if(!this.dfm){ 1728 this.registerUrl = "/register"+"?email="+email; 1729 } 1730 if(val){ 1731 if(email && !this.dfm){ 1732 this.loginparam.email = email; 1733 this.loginok.email = true;//é®ç®±è§å 1734 this.loginok.emailempty = true; //é®ç®±ä¸ºç©º 1735 } 1736 } 1737 }, 1738 loginmsg:{ 1739 handler(val){ 1740 }, 1741 deep: true, 1742 immediate: true 1743 } 1744 }, 1745 template:"#loginwin" 1746 } 1747 } 1748</script>
1748 1749 1750
1750<script src="//static.nextpcb.com/js/js3.0/vue.min.js?ver=fb1923"></script>
1750 1751
1751<script type="text/javascript" src="//static.nextpcb.com/vendor/selectpick.js?ver=0d6dc0"></script>
1751 1752
1752<script type="text/javascript" src="//static.nextpcb.com/js/new-quick-quote.js?ver=cc491e"></script>
1752 1753
1753<script type="text/javascript"> 1754 var vm = new Vue({ 1755 el:"#blogDetail", 1756 data: function(){ 1757 return { 1758 isLogin: false, 1759 loginwin: false, 1760 } 1761 }, 1762 mounted(){}, 1763 components: { 1764 'login-win': LoginWin() 1765 }, 1766 methods: { 1767 loginSuccess(){ 1768 this.isLogin = true; 1769 this.loginwin = false; 1770 if(currentAction == 1){ 1771 window.reload() 1772 } 1773 else if(currentAction == 2){ 1774 gotoComment() 1775 } 1776 } 1777 } 1778 }) 1779 </script>
1779 1780
1780<script type="text/javascript"> 1781 var currentAction = 0 // 1-ç¹èµ 2-è¯è®º 1782 //头é¨å¹¿å 1783 $("#closeAd").on("click",function(){ 1784 $(".index-topad").slideUp(); 1785 }); 1786 1787 function add_like(id){ 1788 var url = "/blog/hits"; 1789 var data = { 1790 aid:id 1791 }; 1792 $.ajax({ 1793 type:"POST", 1794 url:url, 1795 data:data, 1796 success:function(resp){ 1797 if(resp.status == 0){ 1798 if(resp.error=="Please login your account!"){ 1799 currentAction = 1 1800 vm.loginwin = true 1801 // openLoginModal('login',function(){ 1802 // location.reload(); 1803 // }); 1804 }else{ 1805 layer.msg(resp.error); 1806 } 1807 }else{ 1808 var article_like_num = $('#article_like_'+id).text(); 1809 article_like_num = parseInt(article_like_num); 1810 if(resp.is_add == 1){ 1811 var new_article_like_num = article_like_num + 1; 1812 $('#like_icon_'+id).addClass('praiseOn'); 1813 }else{ 1814 var new_article_like_num = article_like_num - 1 < 0 ? 0 : article_like_num - 1; 1815 $('#like_icon_'+id).removeClass('praiseOn'); 1816 $('#like_icon_'+id).addClass('praise'); 1817 } 1818 $('#article_like_'+id).html(parseInt(new_article_like_num)); 1819 //layer.msg(resp.data); 1820 } 1821 }, 1822 error:function(resp){ 1823 layer.msg('Opreation falied'); 1824 } 1825 }); 1826 } 1827 1828 $('.contentScore .media-list a').each(function(index){ 1829 const current = encodeURIComponent(location.href); 1830 console.log($(this),current) 1831 switch(index){ 1832 case 0: 1833 break; 1834 case 1: 1835 $(this).attr('href', `https://www.facebook.com/sharer/sharer.php?u=${current}`); 1836 break; 1837 case 2: 1838 $(this).attr('href', `https://x.com/intent/post?url=${current}`); 1839 break; 1840 case 3: 1841 break; 1842 case 4: 1843 $(this).attr('href', `https://www.linkedin.com/sharing/share-offsite/?url=${current}`); 1844 case 5: 1845 break; 1846 case 6: 1847 $(this).attr('href', `https://bsky.app/intent/post?text=${current}`); 1848 break; 1849 } 1850 }) 1851 1852 $('.s_menu a').each(function(index){ 1853 if( index == 0 ){ 1854 $(this).attr('href','https://www.facebook.com/sharer.php?u='+location.href+'&t='+$('title').text()+'&src='+$('.MsgBoxstyle ul li').eq(0).find('img').attr('src')+''); 1855 }else if ( index == 1 ) { 1856 $(this).attr('href','https://twitter.com/intent/tweet?url='+location.href+'&text='+$('title').text()+''); 1857 }else if ( index == 2 ) { 1858 $(this).attr('href','https://www.linkedin.com/shareArticle?mini=true&url='+location.href+'&title='+$('title').text()+''); 1859 } 1860// $(this).click(function(){ 1861// $.ajax({
1862// type:"POST", 1863// url:'/feedback/add_share_num', 1864// data:{cid:$(this).attr('data-id')}, 1865// success:function(resp){ 1866// if(resp.status == 0){ 1867// layer.msg(resp.error); 1868// } 1869// }, 1870// error:function(resp){ 1871// layer.msg('Opreation falied'); 1872// } 1873// }); 1874// }) 1875 }); 1876 1877 //æäº¤è¯è®º 1878 $('.submit_feedback').click(function(){ 1879 console.log('submit_feedback click') 1880 layer.confirm('Whether anonymous comments are required?', { 1881 title:"", 1882 skin:"tipslayer", 1883 btn: ['Anonymous','Login'] //æé® 1884 }, function(){ 1885 var html = "<div style='padding-top:10px;'> "+ 1886 "<input id='Editguest' maxlength='30' style='border:1px solid #ddd;' placeholder='Edit guest information' type='text' class='form-input'> "+ 1887 "<p id='Editerr' class='fc-errtips pt5' style='font-size:12px;display:none;'>Please fill the guest information.</p> "+ 1888 "</div>"; 1889 //gotoComment(); 1890 layer.confirm(html,{ 1891 skin:"tipslayer", 1892 title:"", 1893 btn:["Submit"], 1894 success:function(e){ 1895 var inputs = $("#Editguest"), 1896 errtips = $("#Editerr"); 1897 1898 inputs.on("focus",function(){ 1899 if(errtips.is(":hidden")){ 1900 $(this).css("border-color","#8E1EB4") 1901 } 1902 }); 1903 inputs.on("blur",function(){ 1904 if(errtips.is(":hidden")){ 1905 $(this).css("border-color","#ddd"); 1906 } 1907 }); 1908 inputs.on("input",function(){ 1909 var val = inputs.val(); 1910 if(!$.trim(val)){ 1911 errtips.show(); 1912 $(this).css("border-color","#FF2F2F"); 1913 }else{ 1914 errtips.hide(); 1915 $(this).css("border-color","#8E1EB4"); 1916 } 1917 1918 }); 1919 } 1920 },function(idx){ 1921 var inputs = $("#Editguest"), 1922 errtips = $("#Editerr"); 1923 var val = inputs.val(); 1924 if(!$.trim(val)){ 1925 $("#Editguest").val(""); 1926 errtips.show(); 1927 inputs.css("border-color","#FF2F2F"); 1928 }else{ 1929 gotoComment(val); 1930 } 1931 }) 1932 }, function(){ 1933 currentAction = 2 1934 vm.loginwin = true 1935 // openLoginModal('login',function(){ 1936 // gotoComment(); 1937 // }); 1938 }); 1939 }) 1940 function gotoComment(val){ 1941 $.ajax({ 1942 type:"POST", 1943 url:'/blog/comment', 1944 data:{ 1945 aid: $('.submit_feedback').attr('data-id'), 1946 comments:$('.feedbackBox textarea').val(), 1947 anonymous:val 1948 }, 1949 success:function(resp){ 1950 if(resp.status == 1){ 1951 layer.msg(resp.data); 1952 $('.feedbackBox textarea').val(''); 1953 location.reload(); 1954 }else { 1955 layer.msg(resp.error); 1956 } 1957 }, 1958 error:function(resp){ 1959 layer.msg('Opreation falied'); 1960 } 1961 }); 1962 } 1963 </script>
1963 1964</body> 1965</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.