CodeGym/Java Course/Module 3 a ɛto so abien/程序員生活中的測試

程序員生活中的測試

開放

為什麼程序員需要測試?

接下來的幾個級別將致力於以程序員需要的方式進行測試。但首先,讓我們找出什麼是測試以及為什麼需要測試。

關於軟件,我們可以說測試的任務是檢查程序:

  • 做她必須做的事
  • 不做不該做的事

順便說一句,第二點與第一點一樣重要,但稍後會更重要。

讓我們從第一點開始。“程序做它應該做的事”是什麼意思?

首先,需要有人列出該程序的所有用例。 其次,他們需要描述程序應該如何工作,用戶應該如何表現,以及期望得到什麼結果。你不能繼續下去。

一旦我們寫下“用戶應該如何表現”,編寫好的文檔的整個想法就土崩瓦解了。人不是機器,而且,人們經常隨心所欲地使用軟件。沒有人是通過研究說明書開始熟悉技術的。這是事實。

因此,我們得到一個新的事實:該軟件的特殊性在於它有很多不同的工作場景。其中一些是顯而易見的,其他的可以記錄下來,其他的可以假設,其他的可以猜測,而另外的 50% 甚至你都不會想到。

從程序員的角度來看,大多數錯誤根本不是錯誤。錯誤是指程序沒有按預期運行。並且有很多情況不清楚程序應該如何工作,或者相互矛盾的場景......

場景有無數種,產品中總會有程序不按預期運行的情況(程序員只為幾十種場景編寫代碼)。因此,可以說任何程序總是存在錯誤任何產品都可以無休止地改進

在那之後,一切都歸結為權宜之計。首先,程序員修復最大的錯誤,然後是較小的錯誤,依此類推。最後,當產品所有者認為繼續開發它在經濟上不可行時,會出現一個階段。

但是回到大家公認的錯誤:程序明顯做錯了,摔了,摔了東西等等。這種錯誤可以有條件地分為3類:大、中、小。

並且經常發生這樣的情況,即程序員正在修復中等甚至小的錯誤,儘管項目中仍然存在許多更嚴重的問題。他只是沒有找到它們,所以他正在研究他所知道的最大的那些。

因此,在任何項目中都應該有測試人員。這些人專門學習從不同角度看產品。所以你可以看到程序的更多場景。他們的任務是找出錯誤並記下來(以免多次發現相同的錯誤)。

測試是一個旨在發現錯誤的過程。應該發現、描述這些錯誤並確定其優先級。只有在對錯誤進行優先排序之後,我們才能談論有效的軟件改進過程。

請記住,解決問題的第一步是承認存在問題。你無法糾正你不知道的錯誤。

測試自動化

我想我們都同意測試很重要,所以讓我們像程序員一樣看一下測試。程序員如何看待測試?程序員使其他人的工作自動化。最後消失的職業將是編程職業。

我們將遇到的任何流程自動化。所以測試需要自動化。以及如何自動搜索錯誤?簡短的回答:沒有。但在這裡,我們是程序員的事實再次幫了我們的忙。

軟件開發過程包括對它的不斷更改。就在不斷進行更改的過程中,程序員經常會破壞直到最近才正常工作的東西。

而測試人員,不是尋找新的錯誤,而是被迫不斷地檢查我們是否破壞了已經運行了很長時間的東西。所謂回歸測試。正是這種類型的測試可以而且應該自動化。

這裡所有的軟件可以分為兩部分:

  • 程序與人互動
  • 程序與另一個程序交互

第一個選項更難自動化,它需要特殊的自動化測試人員,他們也稱為 QA 自動化或軟件測試工程師。

但第二個選項可以而且應該獨立自動化。如果您有一款軟件:

  • 效果很好
  • 已經測試過
  • 作為單獨的模塊或邏輯塊實現
  • 不打算改變
  • 其他模塊或程序依賴於它
  • 功能性故障代價高昂

我建議花時間為它編寫測試,以捕獲其當前功能的關鍵方面。為此分配 5% 的工作時間或每月 1 天是合理的。

無需為了測試而編寫測試。

沒有人會支持你的測試。不是其他程序員,不是你自己。沒有人這樣做。99% 的書面測試被放棄和/或禁用。如果你不能寫測試 - 不要寫。只有當你絕對不能沒有它們時才寫。

測試類型

每個程序員,如果沒有經過特殊培訓,都能夠用自己的話來說出什麼是測試:檢查程序是否做了它應該做的事情。然而,該領域的專業人員區分了整個測試領域(類型)。

所有的測試實際上都圍繞著軟件的可靠性和可用性展開,但是為了更好地理解測試的方向,讓我們看幾個例子。

假設您正在測試一家典型的在線商店。那麼測試的領域又可以分為以下幾種類型:性能測試、功能測試、集成測試和單元測試。

如果網站所有者決定發起一場嚴肅的廣告活動,那麼很多用戶將同時訪問該網站。很可能該站點不會倒下,但它的某些部分可能會變慢甚至停止工作。

為了防止這種情況發生,您需要提前識別此類問題並採取措施消除它們。這是使用負載測試完成的,或者也稱為性能測試。

您可能還想測試您的後端 API 如何工作並測試它的每個功能:註冊、登錄、添加到購物車、支付處理、數據庫寫入等。一切都應該根據 TOR 工作。在這種情況下,您需要執行功能測試

您的在線商店很可能與第三方服務集成:發送信件和短信、支付系統、在線支持聊天、收集用戶反饋、廣告系統等。為確保所有這些都按預期工作,您需要集成測試.

最後,複雜的產品通常被分解成獨立的模塊。從這些模塊中,您可以像從構造函數中一樣組裝最終產品。如果你正在開發這樣的模塊或與這樣的模塊交互,那麼你將需要進行單元測試

總而言之,我們可以說需要功能測試來測試站點的每個單獨功能。集成 - 用於測試產品的大型模塊和系統的交互。模塊化 - 測試一個單獨的模塊,嗯,性能測試 - 檢查您的站點在負載下的運行情況。

可以有更多類型的測試:產品越複雜,需要控制其開發的更多方面。

留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言