<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          程序員看過來!面向?qū)I(yè)程序員的Neo區(qū)塊鏈工具包更新啦|Neo專欄

          共 2987字,需瀏覽 6分鐘

           ·

          2021-01-20 22:41

          想要讓一個失敗的測試用例通過而編寫生產(chǎn)代碼,

          最后卻不得不先編寫該測試用例?


          現(xiàn)在,有了Neo區(qū)塊鏈工具包,

          開發(fā)人員就可以充分利用測試驅(qū)動開發(fā)技術(shù)

          來構(gòu)建應(yīng)用程序了。


          本篇將帶你深入了解面向?qū)I(yè)程序員的工具包:

          Neo區(qū)塊鏈工具包??

          對于熟悉密碼學(xué)的人來說,有一個不對稱的現(xiàn)象十分有趣。開發(fā)人員在有測試用例的情況下可以(創(chuàng))重建生產(chǎn)代碼(Production Code),卻不能輕易地從生產(chǎn)代碼中創(chuàng)建測試。因此,測試是一種單項(xiàng)功能的集合 – 活板門功能;這意味著生產(chǎn)代碼的測試可能比生產(chǎn)代碼本身更重要。

          對于需要調(diào)試代碼的人(也就是世界上每一個程序員)而言,還有另一個不對稱現(xiàn)象:在新項(xiàng)目上使用測試驅(qū)動開發(fā)的開發(fā)人員通常會發(fā)現(xiàn),與沒有調(diào)試程序的項(xiàng)目相比,他們調(diào)用調(diào)試器的次數(shù)更少。測試驅(qū)動的開發(fā)具有強(qiáng)大的版本掌控,使開發(fā)人員可以還原到通過所有測試的最后一個版本,并且有時可以比低質(zhì)量的調(diào)試代碼更有生產(chǎn)力。

          下面讓我們深入研究測試驅(qū)動開發(fā)(Test-Driven Development),以及為什么我們在Neo區(qū)塊鏈工具包中建立了對測試驅(qū)動開發(fā)的支持。

          測試優(yōu)先


          在部署之后進(jìn)行測試是徒勞的;使用測試驅(qū)動開發(fā)時,首先進(jìn)行測試,即逆轉(zhuǎn)開發(fā)軟件以進(jìn)行測試(通常為部分測試)。

          編寫測試以驗(yàn)證預(yù)期功能的行為,然后編寫實(shí)現(xiàn)該功能的代碼具有兩個關(guān)鍵含義:

          測試將作為開發(fā)指南針以指導(dǎo)開發(fā)人員專注于預(yù)期的結(jié)果

          將測試用作跟蹤器,以指示完成代碼的程度

          此外,使用這種方法,開發(fā)人員將擁有可以重復(fù)運(yùn)行的測試或測試套件,以確保即使對代碼進(jìn)行了其他不相關(guān)的更改并逐步添加了其他新功能,其原本的功能,行為以及結(jié)果也可以按照預(yù)期工作。

          對于企業(yè)主的好處在于,測試驅(qū)動開發(fā)鼓勵并推動了開發(fā)人員一次將應(yīng)用程序開發(fā)成一個“小”功能,從一個穩(wěn)定且功能強(qiáng)大的版本到另一個版本間采取“小”步驟。測試用例的頻繁應(yīng)用有助于在早期識別,解決錯誤,從而防止它們在以后造成代價(jià)昂貴的業(yè)務(wù)問題。

          測試驅(qū)動開發(fā)實(shí)踐


          測試驅(qū)動開發(fā)強(qiáng)調(diào)便捷性,即開發(fā)人員編寫最簡單的代碼以通過單元測試。編寫單元測試,觀察它是否失敗,然后更改代碼,直到通過為止。

          Q?什么是單元測試??

          單元測試通常是一個“小”測試,即低級別的測試,側(cè)重于整個應(yīng)用程序的“小”部分(代碼)。進(jìn)行單元測試的結(jié)果是二進(jìn)制的:如果代碼的性能與記錄的預(yù)期一致,則“通過”,否則 “失敗”。此外,單元測試應(yīng)該是“確定性的”,即它不應(yīng)具有副作用。

          測試驅(qū)動開發(fā)通常有以下五個步驟:

          1?對功能(或程序錯誤)的要求:了解初始要求,但在此步驟中不需要過多的文檔,因?yàn)闇y試驅(qū)動開發(fā)將有助于在周期的后段完善細(xì)節(jié)。

          2?單元測試:如前所述,通常是由應(yīng)用程序開發(fā)人員編寫的簡短代碼,目的是運(yùn)行目標(biāo)應(yīng)用程序代碼庫的有限部分。

          3?實(shí)際運(yùn)用的過程中,嘗試編寫滿足要求的代碼,然后運(yùn)行單元測試。重復(fù)此步驟,直到代碼通過單元測試。

          4?實(shí)現(xiàn)的重構(gòu):在不修改外部代碼行為的情況下“改進(jìn)”現(xiàn)有代碼的內(nèi)部特性,以簡化內(nèi)部設(shè)計(jì)并提高代碼理解度。

          5?隨著需求的增加,重復(fù)上述步驟:每個周期很短,循環(huán)效率很高,從而可以更安全地完成重構(gòu),以交付最高質(zhì)量的生產(chǎn)代碼。

          為了使這個周期有效,單元測試應(yīng)該能夠執(zhí)行被測試代碼的行為,而不必依賴于其他代碼或受無關(guān)代碼的影響;“模擬”對象通常用于在現(xiàn)實(shí)世界中簡化此操作(參考去中心化預(yù)言機(jī))。模擬對象是強(qiáng)大的進(jìn)程;在實(shí)踐中,模擬的使用在重要的架構(gòu)(architectural boundaries)上最有效。

          驅(qū)動測試開發(fā)+區(qū)塊鏈:

          全新的Neo3區(qū)塊鏈工具包助力開發(fā)


          區(qū)塊鏈應(yīng)用程序開發(fā)在測試驅(qū)動開發(fā)方面提出了獨(dú)特的挑戰(zhàn),因?yàn)槿ブ行幕瘧?yīng)用程序平臺不同的一點(diǎn)在于它們默認(rèn)情況下不適合測試驅(qū)動開發(fā)。Neo區(qū)塊鏈工具包完美解決了這些問題,并提高了解決程序員專業(yè)需求的能力。下面列舉了一些范例。

          開發(fā)內(nèi)循環(huán)

          ?微軟使用術(shù)語“內(nèi)循環(huán)”來描述開發(fā)人員在編寫,構(gòu)建和調(diào)試代碼時執(zhí)行的迭代過程。每個開發(fā)人員和開發(fā)團(tuán)隊(duì)的內(nèi)在循環(huán)都將根據(jù)他們使用的工具,使用的堆棧(the stack that they work on)以及各個開發(fā)人員的偏好而有所不同。

          借助Neo Express對Neo3的新脫機(jī)模式支持,Neo區(qū)塊鏈工具包可優(yōu)化開發(fā)人員的“內(nèi)循環(huán)”,并使開發(fā)人員能夠在幾秒鐘內(nèi)快速重置其私有網(wǎng)(PrivateNet),重新部署其智能合約并重建檢查點(diǎn)。用時快到足以包含在自動構(gòu)建過程中。

          3A原則(The?Arrange-Act-Assert Pattern)

          3A原則是一種為正在測試的函數(shù)編寫單元測試的方法。

          單元測試方法的「部署」部分會進(jìn)行初始化;部署傳遞到被測函數(shù)的初始前提條件和輸入值

          執(zhí)行」部分使用已部署的輸入值來調(diào)用被測函數(shù)。

          驗(yàn)證部分「斷言」(驗(yàn)證)該功能是否按預(yù)期執(zhí)行且結(jié)果與預(yù)期相符。

          對于區(qū)塊鏈應(yīng)用程序開發(fā),此模式的“部署”部分并非無關(guān)緊要;因?yàn)槿ブ行幕蕉褩5奶攸c(diǎn)使得測試設(shè)置復(fù)雜化。Neo區(qū)塊鏈工具包通過在私有網(wǎng)(PrivateNet)中檢查點(diǎn)功能的創(chuàng)新應(yīng)用,使這組任務(wù)變得相當(dāng)簡單直接。

          多語言開發(fā)和測試優(yōu)先


          Neo協(xié)議以其多語言開發(fā)方案引領(lǐng)行業(yè)。程序員首次可以使用多種語言(C#,Python,Go等)進(jìn)行編程。Neo區(qū)塊鏈工具包以此為基礎(chǔ)進(jìn)行設(shè)計(jì),并且該工具包附帶的測試框架可以在測試者選擇的編譯語言下編寫合約測試。

          這再次掃清了障礙,使更多開發(fā)人員能夠在構(gòu)建測試套件上做出貢獻(xiàn)。

          通過測試驅(qū)動開發(fā)來優(yōu)化體系結(jié)構(gòu)


          測試驅(qū)動開發(fā)在很大程度上塑造并影響了應(yīng)用程序的架構(gòu)。

          1?對測試用例的關(guān)注需要開發(fā)人員去理解客戶,從客戶角度出發(fā)。也有一些測試用例需要開發(fā)人員與其他開發(fā)者相互理解。他們需要精確地編寫好文檔,使其與服務(wù)和組件接口相匹配。測試驅(qū)動開發(fā)使開發(fā)人員以契約式設(shè)計(jì)方法使用“斷言”的類似原則來處理代碼。

          2?測試優(yōu)先通常會使代碼的模塊化和可擴(kuò)展性增強(qiáng)。因?yàn)闇y試驅(qū)動開發(fā)要求開發(fā)人員從“小單元”的角度來思考,這些單元可以獨(dú)立實(shí)現(xiàn)和測試,然后集成部署在一起。這造就了更高的內(nèi)聚性——即在一個用戶模塊或組件中,所有的行為與功能同屬一個整體且聚焦。

          3?模擬對象設(shè)計(jì)模式需要通過服務(wù)和組件的松散耦合來進(jìn)行測試,并促使開發(fā)人員使用接口來強(qiáng)化架構(gòu)邊界。這促進(jìn)了代碼和組件的模塊化,因?yàn)榻M件需要能夠在測試網(wǎng),私有網(wǎng)和主網(wǎng)之間靈活切換來進(jìn)行部署。

          模塊化」、松耦合」和關(guān)注點(diǎn)分離」等概念背后的思想長期以來一直是好的架構(gòu)的基礎(chǔ);測試驅(qū)動開發(fā)對這些概念的強(qiáng)調(diào)或許正好印證了好的體系結(jié)構(gòu)是易于測試的,反之亦然。

          總結(jié)


          在實(shí)踐中,十分常見的情況是,為了讓一個失敗的測試用例通過而編寫生產(chǎn)代碼,最后開發(fā)人員卻不得不先編寫該測試用例。然而,應(yīng)用程序的體系結(jié)構(gòu)、服務(wù)和組件的設(shè)計(jì)、模式重構(gòu)以及產(chǎn)品代碼的質(zhì)量對于開發(fā)的結(jié)果而言,都是非常重要的。

          現(xiàn)在,有了Neo區(qū)塊鏈工具包,開發(fā)人員就可以充分利用測試驅(qū)動開發(fā)技術(shù)來構(gòu)建應(yīng)用程序了。

          關(guān)于 Flamingo 的更多信息,

          歡迎添加客服微信號:flmoon2020。


          瀏覽 48
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产探花视频网站 | 黄片免费观看永久免费 | 美女黄片视频 | 高清无码一区在线 | 九九黄片|