一個網站自動化測試程序的設計與實現

CSDN博客不再經常更新,更多優質文章請來 粉絲聯盟網 FansUnion.cn! (FansUnion)


代碼

下載地址:http://download.csdn.net/detail/fansunion/5018357(免積分)
???
代碼亮點:可讀性很好,注釋詳盡

背景

?????? 工作中,在維護一個項目。幾個月前開始了 后臺Java網站的重構。
??
重構的過程 需要不斷去 運行網站,然后不斷去測試。其中,最常見的

問題是 服務器內部錯誤 即 500錯誤。只要不出現500,一般來說,程序的業務不會出錯。

????? 此外,期間還要不斷地去 完成新的功能,修復出現的Bug,而后臺Java網站具體開發人員幾乎就我一個。

無限制的測試工作,重復且無聊。是可忍,孰不可忍?

目標
??
????? ?寫一個 自動化測試的程序。自動發送相關請求到網站,把請求的結果和執行時間等信息,作為報表展現出來。
?通過報表就可以發現,服務器內部錯誤(500),頁面未找到錯誤(404),哪些請求相對比較耗時。
???
?????? 重復的事情自動化,減輕工作“壓力”,提高工作效率。
???
流程
???? ?1.把項目中需要訪問的URL 記錄在配置文件中。
????? 2.讀取配置文件。
????? 3.訪問每個URL。
????? 4.生成報表并查看測試結果。

設計
??
?? 1.配置文件的設計
????? conf文件下是所有的配置信息。
????? 每一個文件夾代表一個獨立的網站,比如conf目錄下 有 user和fans2個文件夾,就代表有2個網站需要分別訪問測試。
?
???? ?一個網站的配置信息,分為 website_core.properties和 website_url_*.properties。
??
?website_url_*.properties專門放置一個模塊的url。
??
?? 2.讀取配置文件
???? 自定義一個 配置文件讀取器,讀取并解析配置信息。
??
?? 3.發送請求并保存結果
???? 使用Apache HttpClient執行請求,然后保存每個請求的執行結果到 集合中。
??
?? 4.生成報表?
???? ApachePOI 生成Excel2007(.xlsx)報表,每個sheet對應一個網站或者子系統。
實現
?? 語言:Java
?? 工具:Apache HttpClient,Apache POI

截圖

??? 項目結構??

?
??

遇到的問題

1. 200 OK 不一定就 請求成功。

?? 服務器內部對每個請求都進行了Session檢查,未登錄或登錄失敗或未保持會話,都會跳轉到“登錄頁面”,此時也是200 OK。
?
?? 因此,需要 先登錄,并保存當前會話。

2. 保持會話的方法。
?? 登錄成功后,獲取Cookie信息,之后的請求每次都帶上Cookie。
?
3. 根據執行的操作,一個鏈接可以分為2大類:

?? 查詢與非查詢(增加-刪除-修改)。
??
?? 查詢請求大多有默認參數,大多可以不帶參數,而非查詢請求一般需要帶參數。
??
?? 因此,非查詢請求并不能很好地進行測試。
????
V1.0不足與V1.1改進

1.需要手動配置 URL。當URL過多時,顯得比較麻煩。
? 改進:可以合并類似的或者有規律的URL。

2.不能很好地支持帶參數的請求。
? 改進:可以將請求參數和URL分開配置,一個URL對應多個參數配置。
?
3.請求方法使用POST方法。
? 改進:增加請求方法的配置。

4.單線程順序執行每個請求,效率不夠高。
? 開發過程中,可能需要盡快地執行請求,看到報表。
?
? 改進:增加配置,實現2種模式。
? 第1種,盡快執行,適合開發過程中。
? 第2種,按照一定的周期執行,適合診斷和發現線上的問題。
?
5.報表信息不夠詳盡,還存在不準確的地方。
? 改進:增加字段,改進不準確的地方。
??????? 增加統計功能。

6.會話的保持。一個網站只有1個賬號登錄,之后的請求都在同一個會話中。
? 改進:增加多個會話,作用域小的可以覆蓋大的。
?
7.配置信息的驗證不足。
? 改進:待細化。

結束語
?? 代碼重復是軟件開發的大敵!
?? 測試重復又何嘗不是呢?
???

致謝
?? 第1版問題多多,望海涵!
??
?? 謝謝閱讀!歡迎交流!

?

轉載于:https://www.cnblogs.com/qitian1/archive/2013/01/21/6463790.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/274379.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/274379.shtml
英文地址,請注明出處:http://en.pswp.cn/news/274379.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何編寫數據庫可視化界面_編寫用于數據可視化的替代文本

如何編寫數據庫可視化界面什么是替代文字 (What is Alt Text) Alt text (sometimes called Alt tags or alternative text) are written descriptions added to images that convey the meaning of the visual. Good alt text helps more people understand the content. Assis…

(轉)swc與swf的區別

在Flash Builder中用Actionscript寫的類可以打包成swc或swf, 在Flash CS中制作的元件也可以打包成swc或swf文件, 一個swc或swf文件中可以包含多個類或元件, 每個元件會映射成一個類, 因此,在Flash Builder中的類和在Fl…

js 驗證各種格式類型的正則表達式

<script src"scripts/jquery-1.4.1.js" type"text/javascript"></script> <script language"javascript" type"text/javascript"> /** * 定義驗證各種格式類型的正則表達式對象 */ var Regexs { email: …

reloaddata 跳動_紙跳動像素

reloaddata 跳動I would like to open with a problem.我想開一個問題。 Why are so many designer going straight to pixels?為什么這么多設計師直接使用像素&#xff1f; Over the past few years i’ve witnessed this in my team, my clients and others throughout th…

使用自定義RadioButton和ViewPager實現TabHost效果和帶滑動的頁卡效果。

參考自http://www.apkbus.com/android-86125-1-1.html 這篇文章技術含量一般&#xff0c;大家別見笑。源碼我以測試&#xff0c;在底部可下載。 好了先上效果圖&#xff1a; 以下是實現步驟&#xff1a; 1、準備自定義RadioButton控件的樣式圖片等&#xff0c;就是準…

利益相關者軟件工程_改善開發人員團隊與非技術利益相關者之間交流的方法

利益相關者軟件工程Whether you’re working on a startup or a big company, keeping your stakeholders and non-technical partners engaged and up to date on what the tech team has been building can be hard.無論您是在初創公司還是大公司中工作&#xff0c;都要讓您的…

Hibernate的檢索策略

Hibernate的Session在加載一個Java對象時&#xff0c;可以將與這個對象相關聯的其他Java對象都加載到緩存中&#xff0c;以便程序及時調用。但有些情況下&#xff0c;我們不需要加載太多無用的對象到緩存中&#xff0c;一來這樣會撐爆內存&#xff0c;二來增加了訪問數據庫的次…

響應式網格項目動畫布局_響應式網格及其實際使用方式:常見的UI布局

響應式網格項目動畫布局重點 (Top highlight)第二部分 (Part II) Now that you have a basic understanding of how to use grids, you might be wondering how to apply them to layouts you see on the web. Responsive grids are a method to systematically align your des…

SQL函數大全

SQL函數大全 --聚合函數use pubsgoselect avg(distinct price) --算平均數from titleswhere typebusinessgo use pubsgoselect max(ytd_sales) --最大數from titlesgo use pubsgoselect min(ytd_sales) --最小數from titlesgo use pubsgoselect type,sum(price),sum(advanc…

時間軸ui設計_我應該在UI設計上花更多時間嗎?

時間軸ui設計Let’s start with an example of communication skills: they are important for any profession, and you expect any professional to have a decent level. However, excellent communication skills won’t make up for the lack of core expertise. Imagine …

一、Oracle介紹

Oracle學習筆記 一、 Oracle介紹 選擇數據庫的標準 項目的規模 負載量多大&#xff0c;用戶量多少 成本 安全性 Oracle 認證 初級&#xff1a;OCA&#xff1a;Oracle Certificated Associate 中級&#xff1a;OCP&#xff1a;Oracle Certificated Professional 高級&#xff…

移動端分步注冊_移動應用程序的可用性測試:分步指南

移動端分步注冊Written by Justin Mifsud由賈斯汀米夫蘇德 ( Justin Mifsud)撰寫 The mobile market is huge and growing at a very fast rate. With an estimated 4.5 billion subscribers worldwide, it is forecasted that the number of mobile phones will surpass the …

ldd隨筆(1)-linux設備模型

一下只是個人學習后的理解&#xff0c;可能有很多不對的地方。 要學習linux的設備驅動模型&#xff0c;首先必須要知道kobject和kset的概念&#xff0c;下面是kobject在2.6.38的源碼中的實現。 struct kobject {const char *name; //名稱&#xff0c;可能在sysfs中創…

插圖 引用 同一行兩個插圖_提出食物主題中的插圖

插圖 引用 同一行兩個插圖I have a page in my portfolio, which is about search functionality. I wanted that page to feel fun and engaging, to convey a positive vibe, so I decided to add illustrations to it.我的投資組合中有一個頁面與搜索功能有關。 我希望該頁面…

Hadoop的SequenceFile讀寫實例

1 SequenceFile可以處理hdfs上大量小文件&#xff0c;它可以作為大量小文件的容器。HDFS和MapReduce是針對大文件優化的&#xff0c;所以通過SequenceFile類型將小文件包裝起來可以獲得更高效的存儲和處理。存儲2 在SequenceFile中的鍵和值并不一定是Writable類型&#xff…

臉部細微表情識別_您可以僅使用面部表情來控制字體嗎?

臉部細微表情識別原型 (The prototype) Facetype is the name of Adam’s interactive project, in which the emotions detected from a person’s facial gestures control a variable font. To each detected emotion corresponds a specific typeface, which keeps transfo…

ssky-keygen + ssh-copy-id 無密碼登陸遠程LINUX主機

使用下例中ssky-keygen和ssh-copy-id&#xff0c;僅需通過3個步驟的簡單設置而無需輸入密碼就能登錄遠程Linux主機。 ssh-keygen 創建公鑰和密鑰。 ssh-copy-id 把本地主機的公鑰復制到遠程主機的authorized_keys文件上。ssh-copy-id 也會給遠程主機的用戶主目錄&#xff08;ho…

uva10891Game of sum

題意:經典的取石子游戲是這樣的:有一堆石子&#xff0c;A、B兩個人輪流取&#xff0c;每次取一顆&#xff0c;只能從邊上取&#xff0c;每個石子有相應的價值&#xff0c;A、B兩人都想使得自己的價值最多&#xff0c;兩個人足夠聰明&#xff0c;問最后價值分別是多少 本題則是可…

用戶體驗設計師能為seo做_用戶體驗設計師可以從產品設計歷史中學到什么

用戶體驗設計師能為seo做Many things have changed from tool design in the prehistoric era to today’s digital product design. However, we can see surprisingly many similarities. Especially when it comes down to one particular aspect: usability.從史前時代的工…

函數指針

顧名思義&#xff0c;指針函數即返回指針的函數。其一般定義形式如下&#xff1a; 類型名 *函數名(函數參數表列); 其中&#xff0c;后綴運算符括號“()”表示這是一個函數&#xff0c;其前綴運算符星號“*”表示此函數為指針型函數&#xff0c;其函數值為指針&#xff0c;即它…