golang性能優化及測試用例編寫

2022-01-26 程式設計師khaos
前言

在日常開發中,我們有時候會寫到測試用例,但是對於新手來說,並不知道測試用例該如何編寫,也不知道測試用例的用途。

在本文中,我們將講解如何編寫一個性能高效的golang函數。

如何編寫測試用例

編寫測試用例時,我們最主要用到golang的testing內置包。假設,我們想測試package main下的calc.go中的函數,只需新建calc_test.go文件,在calc_test.go中新建測試用例即可。

// calc.go
package main

func add (n1, n2 int) int {
return n1 + n2
}

calc_test.go文件:
// calc_test.go
package main

import "testing"

func TestAdd(t *testing.T){
    if ans := add(1, 2); ans != 3 {
    t.Error("add(1, 2) should be equal to 3")
    }
}

上面就是一個簡單的小測試。

並且我們只需在控制臺運行go test,將會自動運行當前package下的所有測試用例,也可通過添加-v參數進行查看詳細信息。

性能優化

性能優化其實是一個籠統的說話,可以簡單地理解為通過該過程可以使你的代碼變得更加的優雅,程序運行速度更快速。

性能優化的前提

性能優化的前提就是把所有的一切都建立在好的基礎上,先使代碼穩固運行再去做優化,這就是it界常說的————能跑就行

只要代碼不能運行,任何優化都是毫無意義的手段。

性能優化的限制

對於任何一種語言來說,硬體資源都是硬傷,你軟體優化做的再好,硬體跟不上還是不行。

還有就是對於軟體架構的設計,一個良好的架構能夠使軟體的性能提升至少15%!並且,一個軟體的架構也不是一成不變的,這就是我們經常看到的,一個軟體隨著用戶的增多,後天架構不斷改變的原因。

在編程領域中,每年都有新的技術產生,也會有新的架構出來,誰也無法保證一個具有多年歷史的架構設計能打得過一個新出的結構設計。

做優化的時機

一般來說,一個軟體是否進行優化並不是開發者一個人說的算的,而是無數的用戶+程序反饋。我總結出以下幾點:

該如何對程序進行優化

往事開頭難,當需求讓我們對一個程序進行優化時,我們可能會一臉懵逼,該如何進行優化?該優化些什麼?到底如何做優化?

接下來我們就慢慢的從哪裡開始優化說起。

優化應該從業務層開始。
舉一個經典的案例,GTA online的遊戲啟動進程中那個要跑1.9億次的if判斷。將該過程優化後,至少能減少60%的時間啟動遊戲!
有了開頭我們就可以慢慢的根據業務場景進行優化。不同業務場景的優化側重也是不同的。
對於大多數業務來說,內存一般不是瓶頸,所以業務API的優化主要集中於延遲和吞吐量。儘量使用事務去操作資料庫。
現代資料庫雖然說支持高並發,但是當超過一定的並發量後,就會使資料庫壓力莫名增大n倍,可能會在短時間內使資料庫重啟。使用事務時,可通過事務隔離及事務鎖來進行優化查詢。當服務到達一定量時,應採取分布式進行優化。
日常開發中,我們一般都是在一個測試伺服器中進行調試及優化,但是,當我們需要的服務過多時,伺服器性能被壓榨到了極致,會出現服務莫名掛掉的現象,這是因為linux的進程保護規則,所以我們呢應該將消耗系統資源較大的服務轉移到其他伺服器上,供給足夠的系統資源使之能更加高效的運行。後記

優化和測試用例的編寫,其實並不是在開發後才去進行的,在開發過程中,也可以對代碼進行優化,嚴格要求自己遵循開發規範,並在工作過程中通過吸取教訓來完善自己。

關注我的公眾號

             

相關焦點

  • golang 基準測試和性能測試總結
    執行所有 Benchmark,也可以通過用例函數名來指定部分測試用例-benchtime 指定測試執行時長-cpuprofile 輸出 cpu 的 pprof 信息文件-memprofile 輸出 heap 的 pprof 信息文件。
  • Golang 性能測試 (1)
    編寫完代碼除了跑必要的單元測試外,還需要考慮代碼跑起來的性能如何。Golang 語言在提供了功能測試的基礎上,提供了豐富的性能測試功能。SHOW CODE首先,從一個例子來講起。寫一個簡單的快速排序,然後和系統自帶的排序做性能比較。
  • Android之編寫測試用例
    測試用例其實就是一段普通的程序代碼,通常是帶有期望的運行結果的,測試者可以根據最終的運行結果來判斷程序是否能正常工作。  我相信大多數的程式設計師都是不喜歡編寫測試用例的,因為這是一件很繁瑣的事情。明明運行一下程序,觀察運行結果就能知道對與錯了,為什麼還要通過代碼來進行判斷呢?
  • 關於測試用例編寫你不得不了解的那些事兒!
    對於一個軟體測試人員來說,編寫測試用例是不可或缺的一項技能,但怎麼寫好一個需求的測試用例卻不是很容易,特別對於新手來說,更是不容易,我也是從新手一步步走過來的,下面我就把我的經驗總結出來供大家參考吧。測試用例是什麼這個問題很簡單但卻不能不知道,剛入行,我們會很懵,弄清楚這個問題,對我們接下來寫測試用例非常有幫助。
  • 如何使用Postman編寫Testlink測試用例
    本文共520字  閱讀約需1分鐘(後臺回復「破解補丁」可獲取一份最新IDEA破解補丁)Postman2Testlink通過Postman快速操作testlink測試用例、測試套件、測試計劃、添加關鍵詞、添加自定義欄位等等。
  • Golang後臺單元測試實踐
    Why單元測試新功能的增加,代碼複雜性的提高,優化代碼的需要,或新技術的出現都會導致重構代碼的需求。在沒有寫單元測試的情況下,對代碼進行大規模修改,是一件不敢想像的事情,因為寫錯的概率實在太大了。而如果原代碼有單元測試,即使修改了代碼單測依然通過,說明沒有破壞程序正確性,一點都不慌!
  • 完整的性能測試流程
    測試場景設計根據被測系統的業務特性,並通過和業務部門溝通以及以往用戶操作習慣,確定用戶操作習慣模式,以及不同的場景用戶數量,操作次數,確定測試指標,以及性能監控等。3. 測試用例設計根據設計的測試場景,編寫測試用例。
  • 測試用例編寫(功能測試框架)
    測試用例的編寫需要按照一定的思路進行,而不是想到哪寫到哪,一般測試機製成熟的公司都會有公司自己自定義的測試用例模板,以及一整套的測試流程關注點,當然我們自己在測試生涯中也應當積累一套自己的測試框架,所有功能性的測試都可以依據框架的思路來進行,達到事半功倍的效果。
  • 測試用例設計總結
    2、 跟蹤測試進度進展  通過編寫測試用例,執行測試用例,我們可以很清楚的知道我們的測試進度,方便跟蹤我們的測試進度。  三、如何編寫用例  1、測試需求分析,得到測試點  在測試需求分析階段,我們只有需求文檔,所以編寫測試用例的唯一依據就是需求文檔,因此在進行用例編寫之前一定要進行需求分析,需求分析的主要工作就是:了解需求的整個實現背景;分析需求的合理性;明確需求的範圍,挖掘需求文檔中隱藏的需求;在通過需求交底的過程
  • Web 自動化神器 TestCafe—用例編寫篇
    使用 TestCafe 編寫測試用例,必須要先使用 fixture 聲明一個測試夾具,然後在這個測試夾具下編寫測試用例,在一個編寫測試用例的 js 或 ts 文件中,可以聲明多個測試夾具import 'testcafe'fixture `登錄功能測試`上面是官方文檔中的
  • 測試用例的管理
    隨著軟體系統規模的持續增大,業務複雜度的持續增加,軟體測試的複雜度也隨之越來越大。而軟體測試工作複雜度的直接體現,就是測試用例編寫、維護、執行和管理,所以編寫易讀、易維護和易管理的測試用例可以有效的降低測試工作的複雜度。本文主要系統的介紹了測試用例的幾種管理方法,包括每種的特點,適用場景以及實例。
  • 你不知道的用例編寫方法
    作為一名測試人員,總會有需要進行用例編寫的時候,在進行用例編寫時都遇到過什麼問題呢?  小編詢問了一些測試人員,結合自己遇到的問題,總結了一些,一般會有以下幾個方面的問題:  1) 不知如何著手進行,千頭萬緒,不知如何理  2) 用例覆蓋度不高,不知該如何提高  3) 培訓機構學來的知識不知道如何使用  4) 用例結構不清晰,容易遺漏,且維護麻煩  這些問題都是作為一名測試人員
  • 測試用例的作用
    測試用例是測試設計的主要內容,測試人員按照測試用例執行測試,沒有測試用例測試就無法開展。
  • 測試用例的設計原則
    要做好測試用例的設計,需要注意以下7個設計原則:利用成熟的測試用例設計方法來指導設計
  • 初學者如何使用golang編寫go-gui小工具
    起因因為初學golang語言,所以嘗試編寫一個小工具,鞏固一下以前學習過的知識。
  • Android 測試用例的使用
    測試用例其實就是一段普通的程序代碼,通常是帶有期望的運行結果的,測試者可以根據最終的運行結果來判斷程序是否能正常工作。  我相信大多數的程式設計師都是不喜歡編寫測試用例的,因為這是一件很繁瑣的事情。明明運行一下程序,觀察運行結果就能知道對與錯了,為什麼還要通過代碼來進行判斷呢?
  • Golang 大殺器之性能剖析 PProf
    功能測試也通過了,終於成功的部署上線了結果,性能不佳,什麼鬼?😭想做性能分析PProf想要進行性能優化,首先矚目在 Go 自身提供的工具鏈來作為分析依據,本文將帶你學習、使用 Go 後花園,涉及如下:是什麼pprof 是用於可視化和分析性能分析數據的工具pprof 以 profile.proto 讀取分析樣本的集合,並生成報告以可視化並幫助分析數據(支持文本和圖形報告)profile.proto 是一個
  • 你還在問:安全測試要寫測試用例麼?黑客都在用測試用例找漏洞了
    眾所周知,系統測試是需要編寫測試用例的,它是保證測試執行正確性、有效性的基礎。但是,大家可能很難想像神秘的黑客在挖掘漏洞的時候會提前編寫測試用例,然後按照用例去執行。因為他的漏洞挖掘思路是存在腦海中,並且不斷地根據實際情況進行調整的。
  • Golang 單元測試詳盡指引
    有了單元測試,只要在改完代碼後運行一下單測就知道改動對整個系統的影響了,從而可以讓我們放心的重構代碼。簡化調試過程。單元測試讓我們可以輕鬆地知道是哪一部分代碼出了問題。簡化集成過程。由於各個單元已經被測試,在集成過程中進行的後續測試會更加容易。優化代碼設計。
  • 【用例設計】如何寫一份漂亮的測試用例?
    ,它直接體現測試設計的思想,一份漂亮的測試用例不僅僅是設計思路的優,更是便於流轉和執行,具有可讀性、傳遞性。  首先,一份漂亮的測試用例-需有一個用例模板  模板的作用:將測試用例的結構形式固定化、標準化,對編寫者啟引導作用,保證一份測試用例數據完整。