著Internet和Intranet的快速發展,Web技術已經對工商業、醫療業、教育、政府、娛樂以及我們的生活產生了深遠的影響。Web平臺能支持幾乎所有媒體類型的信息發布,容易為最終用戶存取,更多傳統的信息和數據系統正在逐漸遷移到互聯網上:電子商務正迅速增長,范圍廣泛、復雜的云應用和云計算也正在Web環境中出現?;赪eb的系統在變得越來越復雜和強大的同時,Web應用軟件的缺陷危機也越來越嚴重。早在1998年Yogesh Deshpande和Steve Hansen就提出了Web工程的概念。Web工程提倡使用一個過程和系統的方法來開發高質量的基于Web的系統。在Web工程中,基于Web系統的測試、確認和驗收是一項重要而富有挑戰性的工作。
Web環境具有瀏覽器平臺不兼容、網絡環境多樣化、應用復雜化等諸多特性,所以,傳統測試方法的某些方面不適用于網絡測試。Web的自動化測試方法包含幾個方面,比如,測試腳本技術、人工測試過程自動化、驗證自動化等等。在測試驅動開發模式中,測試已成為迭代開發過程中起推動作用的環節,但與此同時,大量的重復性的測試代碼卻造成了大量資源的浪費。
隨著自動化測試技術的成熟和自動化測試工具的廣泛應用,人們重新認識到了測試的價值:最優的質量成本,最高的質量保證。自動化測試的優勢在軟件領域很明顯的:減少了測試時間,使測試程序統一化,便于管理,節約了質量保證的成本,提高了測試運行的效率,改善了軟件產品的質量。
現在一般人都有使用瀏覽器瀏覽網頁的經歷,用戶雖然不是專業人員但是對界面效果的印象是很重要的。如果開發人員注重這方面的測試,那么驗證應用程序是否易于使用就非常重要了。很多人認為這是測試中最不重要的部分,但是恰恰相反,界面對不懂技術的客戶來說都是相當關鍵,特別是在簡潔、美觀、易用等方面。
方法上可以根據設計文檔,如果夠專業的話可以由專業美工人員,來確定整體風格,特別是頁面風格。然后根據這個設計好的頁面,生成靜態的HTML、CSS等甚至生成幾套不同的方案來討論,或者交給客戶評審,最后形成統一風格的頁面/框架。
頁面測試的主要頁面元素有:
● 頁面元素的容錯性列表(如輸入框、時間列表或日歷)。
● 頁面元素清單(為實現功能,是否將所需要的元素全部都列出來了,如按鈕、單選按鈕、復選框、列表框、超鏈接、輸入框等等)。
● 頁面元素的容錯性是否存在。 第IV部分 圖形用戶界面測試篇
● 頁面元素的容錯性是否正確。
● 頁面元素的基本功能是否實現(如文字特效、動畫特效、按鈕、超鏈接)。
● 頁面元素的外形、擺放位置(如按鈕、列表框、復選框、輸入框、超鏈接等)。
● 頁面元素是否顯示正確(主要針對文字、圖形、簽章)。
● 元素是否顯示(元素是否存在)。
頁面測試主要包括以下幾個方面的內容:
● 站點地圖和導航條位置是否合理,是否可以導航等。
● 頁面內容布局是否合理,文字是否準確、簡潔,字體和字號是否符合多數讀者習慣。
● 背景/色調是否合理、美觀,是否符合多數用戶審美要求。
● 頁面在窗口中的顯示是否正確、美觀(在調整瀏覽器窗口大小時,屏幕刷新是否正確),表單樣式 大小、格式是否適宜。
● 是否對提交數據進行驗證(如果在頁面部分進行驗證的話)等。
● 鏈接的形式、位置、是否易于理解等。
對Web應用的測試可以分為頁內測試(IntraPageTest)和跨頁測試(InterPageTest)兩種。頁內測試相當于單元測試,著重于測試單個頁面的行為是否正確。根據模塊化思想,在進行頁面劃分時,一般使每個頁面具有單一、具體的功能,可以直接表達用戶的一個目標。
本章我們主要考慮Web頁內測試的主要方法。
● 人工走查:
①通過頁面走查,瀏覽確定使用的頁面是否符合需求??梢越Y合兼容性測試不同分辨率下的頁面顯示效果,如果有影響,則應該交給設計人員由他們提出解決方案。
②可以結合數據定義文檔查看表單項的內容、長度等信息。
③對于動態生成的頁面最好也能瀏覽查看。如Servelet部分可以結合編碼規范,進行代碼走查。是否支持中文,如果數據用XML封裝,要做的工作可能會多一點。
● 使用Web頁面測試工具:
工具可以提供很多測試方法,可以用來模擬許多手工操作,如單擊按鈕、給文本框輸入字符或數字、鼠標雙擊事件等,從而實現了測試的自動化。這對于需要輸入大量信息的界面測試來說是十分重要的。
Web頁面測試的基本準則:
符合頁面/界面設計的標準和規范,滿足靈活性、正確性、直觀性、舒適性、實用性、一致性等要求。
直觀性:
①用戶界面是否潔凈、不唐突、不擁擠,界面不應該為用戶制造障礙,所需功能或者期待的響應應該明顯,并在預期的地方出現。
②界面組織和布局合理嗎?是否允許用戶輕松地從一個功能轉到另一個功能?下一步做什么明顯嗎?任何時刻都可以決定放棄或者退回、退出嗎?輸入得到承認了嗎?菜單或者窗口是否深藏不露?
③有多余功能嗎?軟件整體抑或局部是否做得太多?是否因有太多特性而把工作復雜化了?是否感到信息太龐雜?
④如果其他所有努力失敗,幫助系統真能幫忙嗎?
一致性:
①快捷鍵和菜單選項,在Windows中按F1鍵總是得到幫助信息。
②術語和命令,整個軟件使用同樣的術語嗎?特性命名一致嗎?例如,Find是否一直叫Find,而不是有時叫Search?
③軟件是否一直面向同一級別用戶?帶有花哨用戶界面的趣味賀卡程序不應該顯示泄露技術機密的錯誤提示信息。
④按鈕位置和等價的按鍵。大家是否注意到對話框有OK按鈕和Cancel按鈕時,OK按鈕總是在上方或者左方,而Cancel按鈕總是在下方或右方?同樣原因,Cancel按鈕的等價按鍵通常是Esc,而OK按鈕的等價按鈕通常是Enter,要保持一致。
靈活性:
①狀態跳轉,靈活的軟件實現同一任務時通常會有多種選擇方式。
②狀態終止和跳過,具有容錯處理能力。
③數據輸入和輸出,用戶希望有多種方法輸入數據和查看結果。例如,要在寫字板中插入文字,可用鍵盤輸入、粘貼、從6種文件格式讀入、作為對象插入,或者用鼠標從其他程序拖動。
舒適性:
①恰當,軟件外觀和感覺應該與所做的工作和使用者相符。
②錯誤處理,程序應該在用戶執行嚴重錯誤的操作之前提出警告,并允許用戶恢復由于錯誤操作導致丟失的數據。正如大家認為undo /redo功能是理所當然應有的。
③性能,快不見得是好事,要讓用戶看清程序在做什么,它是有反應的。
web網頁測試中的功能測試,主要測試網頁中的所有鏈接、數據庫連接、用于在網頁中提交或獲取用戶信息的表單、Cookie 測試等。
(1)查看所有鏈接:
? 300G軟件測試自學教程 [全套完整版]分享一波學習資料:測試猿課堂為大家準備了一份總量達300G左右的【軟件測試全套自學教程】
包含完整的課件+PPT+實戰項目源碼+千套測試模板,內容極其珍貴,千萬不要錯過:
https://pan.baidu.com/s/10nqKV0Vp23BSgCiCt9EqNA
提取碼:3mkj
(2)測試所有頁面上的表單:
表單是任何網站都不可或缺的一部分。表單用于接收來自用戶的信息并與他們進行交互。那么在這些表格中應該檢查什么?
以搜索引擎項目的測試為例。在這個項目中,我們有廣告商和會員注冊步驟。每個注冊步驟和流程都不同。我們需要測試注冊流程是否能夠正確執行。注冊表單有不同的字段驗證,如電子郵件、ID、用戶財務信息驗證等。所有這些驗證都應在手動或自動 Web 測試中進行檢查。
(3)Cookie測試:
Cookie是存儲在用戶計算機設備上的小文件。Cookie基本上用于維護登錄狀態的驗證。通過在瀏覽器選項中啟用或禁用 cookie 來測試應用程序。
在寫入用戶計算機之前測試 cookie 是否已加密。如果當下正在測試會話 cookie(即會話結束后過期的 cookie),需要在會話結束后檢查登錄會話和用戶統計信息。通過刪除 cookie 檢查對應用程序安全性的影響。
(4)檢查頁面HTML/CSS:
如果我們的網站正在針對搜索引擎做相關的SEO類優化工作,那么 HTML/CSS 驗證是最重要的一項。這一塊兒主要驗證站點是否存在HTML語法錯誤。檢查網站是否可以被不同的搜索引擎抓取。
(5)數據庫測試:
數據一致性在 Web 應用程序中也非常重要。我們在編輯、刪除、修改表單或執行任何與數據庫相關的功能時,都應檢查數據的完整性和錯誤。
檢查所有數據庫的查詢是否正確執行、數據是否被檢索以及是否正確更新。另外一項關于數據庫的測試則是數據庫的負載,這一塊兒會在下方的Web負載和性能測試這一塊講到。
所以總結下來,對Web頁面的測試,大致為以下幾項:
可用性測試是測量系統的人機交互特性并識別弱點以進行糾正的過程。
(1)導航測試:
導航是指用戶如何瀏覽網頁、不同的控件(如按鈕、框)或用戶如何使用頁面上的鏈接來瀏覽不同的頁面。
可用性測試包括以下內容:
(2)內容檢查:
內容應該合乎邏輯且易于理解。檢查是否有文字錯誤。網站配色的使用,是否符合用戶體驗。
您可以遵循一些用于網頁和內容構建的標準顏色。這些是普遍接受的標準,就像我上面提到的關于惱人的顏色、字體、框架等的標準。
內容應該是有意義的。所有錨文本鏈接都應該正常工作。圖像應以適當的尺寸正確放置。這些是 Web 開發中應該遵循的一些基本的重要標準。您的任務是驗證 UI 測試的所有內容。
(3)網站地圖:
與搜索選項一樣,站點地圖也有助于處理文件等。站點地圖應與網站上的所有鏈接一起提供,并具有適當的導航樹視圖。檢查網站網站地圖上的所有鏈接。
“站內搜索”選項將幫助用戶輕松快速地找到他們正在尋找的內容頁面。這些都是可選項目,如果存在,則應進行驗證。
在 web 測試中,應該測試服務器端接口。這可以通過驗證通信是否正確完成來完成。應測試服務器與軟件、硬件、網絡和數據庫的兼容性。
主要接口有:
檢查是否執行了這些服務器之間的所有交互并正確處理了錯誤。如果數據庫或 Web 服務器針對應用程序服務器的任何查詢返回錯誤消息,則應用程序服務器應捕獲這些錯誤消息并將其適當地顯示給用戶。
檢查如果用戶在中間中斷任何事務會發生什么?檢查如果在兩者之間重置與網絡服務器的連接會發生什么?
網站的兼容性是一個非常重要的測試。
兼容性測試具體測試以下幾項:
(1)瀏覽器兼容性:
瀏覽器的兼容性測試,可以說是網站測試中最具影響力的部分。 一些應用程序非常依賴瀏覽器。不同的瀏覽器有不同的配置和設置,我們需要測試網頁在各系統、各瀏覽器品牌和版本下展示效果是否一致。
首先,網站編碼應該是跨瀏覽器平臺兼容的。如果我們使用 java 腳本或 AJAX 調用來實現 UI 功能、執行安全檢查或驗證,那么會對我們的 Web 應用程序的瀏覽器兼容性測試帶來更多的壓力。
在 Internet Explorer、Firefox、Netscape Navigator、AOL、Safari 和 Opera 瀏覽器等不同版本的瀏覽器上測試 Web 應用程序。
(2)操作系統兼容性:
Web 應用程序中的一些功能是它可能不與所有操作系統兼容。Web 開發中使用的所有新技術(如圖形設計和不同 API 等接口調用)可能并非在所有操作系統中都可用。
因此,在具有不同操作系統風格的不同操作系統(如 Windows、MAC、Linux)上測試您的 Web 應用程序。
(3)移動瀏覽:
我們正處于新技術時代。目前移動端的用戶訪問量已經遠超PC端用戶使用量。所以測試網頁在移動端各個設備和瀏覽器上的展示體驗顯得尤為重要。
Web 應用程序應該承受很大的負載。Web 性能測試應包括:
在不同的互聯網連接速度下測試應用程序性能。
(1)Web 負載測試
我們需要測試是否有許多用戶正在訪問或請求同一頁面。系統能夠承受峰值負載的持續時間?該站點應處理多并發的用戶請求、來自用戶的大量輸入數據、同時連接到數據庫的請求、特定頁面上的負載等。
(2)網絡壓力測試
通常壓力意味著將系統拉伸到超出其指定限制。執行 Web 壓力測試以通過施加壓力來破壞站點,并檢查系統如何對壓力做出反應以及如何從崩潰中恢復。通常強調輸入字段、登錄和注冊區域。
在 Web 性能測試中,不同操作系統和不同硬件平臺上測試網站功能,檢查軟件和硬件內存泄漏相關的錯誤。
性能測試可用于了解網站的可擴展性或對第三方產品(如服務器和中間件)環境中的性能進行基準測試。
以下是 Web 安全測試的一些測試用例:
測試 Web 安全性的主要原因是識別潛在漏洞并隨后修復它們。
載地址HTMLTestRunner.py文件:
http://tungwaiyip.info/software/HTMLTestRunner.html
下載的適合python2,如果python3要修改一些內容
首先吧HTMLTestRunner文件添加到環境變量里,可以直接放到python的Lib目錄下
HTMLTestRunner是python標準庫unittest單元測試框架的一個擴展,用于生成HTML測試報告
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
f=open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果(測試報告詳情):
--stream :存放報告寫入文件的存入區域
--title :測試報告的主題
--description :測試報告的描述
為了生成帶有中文描述的測試用例類和測試用例
在用例類和用例方法下,通過’’’ ‘’’或””” “””來添加備注
#coding:utf-8
import unittest, HTMLTestRunner
class Testcase(unittest.TestCase): # 測試用例類
u'''類名后加備注'''
def test1(self):
u'''用例后面加備注1'''
self.assertEqual(1, 1)
def test2(self):
u'''用例后面加備注2'''
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(unittest.makeSuite(Testcase))
# 定義報告的存放路徑,以二進制寫的形式打開文件
f=open('test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
#coding:utf-8
import unittest, HTMLTestRunner, time
from unittest.loader import makeSuite
class Testcase(unittest.TestCase): # 測試用例類
# 具體的測試用例,一定要以test開頭
def test1(self):
self.assertEqual(1, 1)
def test2(self):
self.assertEqual(2, 2)
if __name__=="__main__":
# 構造測試集
suite=unittest.TestSuite()
suite.addTest(makeSuite(Testcase)) # 執行該測試類所有用例
# 定義報告的存放路徑,以二進制寫的形式打開文件
now=time.strftime("%y-%m-%d %H_%M_%S")
f=open('./' + now + 'test.html', 'wb')
# 定義測試報告,stream:報告存放路徑,title:報告標題,description:描述
runner=HTMLTestRunner.HTMLTestRunner(stream=f, title=u'測試用例標題', description=u'描述')
runner.run(suite) # 運行測試用例
f.close() # 關閉文件
返回結果:
將紅框里的內容注釋掉改成uo=o.decode('utf-8')
*請認真填寫需求信息,我們會在24小時內與您取得聯系。