MVC架構簡介及其測試策略

?

最近在WEB端測試工作中陷入了瓶頸,單純的手動功能測試在沒有成熟的代碼規范之前還是很容易坑的,WEB自動化測試一時半會還沒有什么進展,所以決定先學習一下網站用的MVC架構,跟著教程寫了一個小網站,大概也找到了WEB測試工作的幾個突破口。

?

MVC即為按照分層解耦的思想,將網站結構分成了Model(模型)-View(視圖)-Controller(控制器)三層架構,三層架構的職責如下:

Model層:是應用程序中用于處理應用程序數據邏輯的部分,通常模型對象負責在數據庫中存取數據;簡單來說,就是在Model層進行業務邏輯的處理;

View層:是應用程序中處理數據顯示的部分,通常視圖是依據模型數據創建的;簡單來說,View層就是顯示數據以及發送請求;

Controller層:應用程序中處理用戶交互的部分。通常控制器負責從視圖讀取數據,控制用戶輸入,并向模型發送數據;簡單來說,Controller層用于接收View層發送的請求,收到請求后調用對應Model層進行業務處理,然后將處理后的結果返回給View層。

M-V-C三層的關系大概可以如下圖所示:

?

?

根據簽下來的網站代碼調試了之后,發現MVC的實現原理還是很有意思的:

我們以訪問http://localhost:1000/EvectionExpensesManage/EvectionExpensesApply這個為例,來理解MVC的實現原理,調試程序后的結論如下:

View層接到用戶請求,調用EvectionExpensesManageController類下的EvectionExpensesApply方法,根據業務立即得到結果,最后調用對應視圖來顯示結果。

?

那么我們仔細對比一下URL的后綴和控制器還有方法的區別,會發現很有意思的一個現象:

/EvectionExpensesManage/EvectionExpensesApply

調用EvectionExpensesManageController控制器下的EvectionExpensesApply方法

也就是說,MVC架構下URL的構成即為對應的控制器類名去掉Controller/調用的方法。

那么,如果方法有入參怎么辦?我們再來看另一個URL:

http://localhost:10344/AbnormalPunch/ApplySubmit?ID=13244&EmployeeID=1D2DE5AD8BC74E2A9CA70DE3567472EB

顯然,這個URL即為調用的AbnormalPunchController控制器下的ApplySubmit方法,定位到該方法的代碼為:

public int ApplySubmit(string id, string EmployeeID)
{return _AbnormalPunchBLL.ApplySubmit(Convert.ToInt32(id), EmployeeID, Session["UserID"].ToString());
}

再對比一下URL的構成方式,我們很容易就能得到結論:

IDEmployeeID為參數,控制器調用的方法和參數之間用?分隔,多個參數之間用&分隔

即調用AbnormalPunchController類中的ApplySubmit方法,入參為IDEmployeeID

當然,/home/index 表示網站首頁,可以省略。

?

在了解了MVC的基本架構以后,回過頭來反思以前的WEB測試工作,一般就是通過UI/控件/業務功能/跳轉/導航/數據交互幾個方面進行的,在了解了MVC架構以后,發現可以從以下幾個方面突破:

M-V-C三層架構的交互,引入接口測試驗證交互過程中的數據傳輸,保證版本質量:

FireFox瀏覽器下的FireBug插件、Chrome瀏覽器自帶的開發者工具都可以很輕松的看到控制器返回給視圖的數據,可以發現一些只在頁面上測試很容易漏掉的問題。

我之前就遇到過,改了一句sql引發了其他頁面的bug,或者改了一個查詢條件影響到其他查詢條件的情況,現在回想起來,回歸測試沒有做好是一方面,但是如果當時測試的時候關注了返回信息和影響的頁面,這個問題就很容易避免了。

根據URL的構成方式,出現問題時可以快速定位到出現問題的部分,提高定位效率:

自己一直有在嘗試說盡可能的將bug準確定到代碼上,API或WEBSERVICE端的代碼自己也能定位了,但是在真正學習MVC架構之前都是像無頭蒼蠅一樣,在VS如此強大的IDE下勉強行得通,換個IDE怕是早就砸鍵盤了。

初步考慮安全性,比如URL中是否有用戶的重要信息,是否需要加密處理

比如部分參數,可以在URL中屏蔽掉或者進行加密處理展示在URL上,如果明文進行處理,很有可能會造成信息泄露。

既然自己了解了MVC的架構,下一步或許可能會考慮玩一下單元測試吧23333333

?

轉載于:https://www.cnblogs.com/rd-ddddd/p/6959232.html

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

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

相關文章

prototype與_proto_

1、prototype與_proto_ ①prototype:是函數才有的屬性,這個屬性是一個指針。當一個構造函數被創建時,該構造函數會自動生成一個prototype指針,該指針指向構造函數的原型。這個原型會有其他實例共享的一些屬性和方法。 ②_proto_&a…

Halcon求取矩形頂點坐標

文章目錄簡介Halcon源碼博主寫作不容易,孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 簡介 我們在使用Halcon畫矩形時,并不能得到矩形四角頂點坐標。但是我們可以通過數學計算得到矩形定點坐標的位置。 我們在計算過程中需要知道矩形的長軸與短…

kafka常用的shell命令

kafka常用shell命令: ------------------------------------ 1、創建topic bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic test 2、查看創建的topic bin/kafka-topics.sh --list --zookeeper localhost:…

python+pycharm+Django報錯

報錯&#xff1a; Unhandled exception in thread started by <function wrapper at 0x2d7e410>Traceback (most recent call last):File "/root/virtual_dir/wxwebapp_court_nositepkg/lib/python2.7/site-packages/django/utils/autoreload.py", line 226, i…

C++多線程實例(_beginThreadex創建多線程)

C多線程&#xff08;二&#xff09;(_beginThreadex創建多線程) C/C Runtime 多線程函數一 簡單實例&#xff08;來自codeprojct&#xff1a;http://www.codeproject.com/useritems/MultithreadingTutorial.asp&#xff09; 主線程創建2個線程t1和t2&#xff0c;創建時2個線程…

halcon求取區域頂點

文章目錄簡介Halcon源代碼處理效果博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 簡介 使用halcon求取頂點的方法。 Halcon源代碼 read_image (Image1, 1.png)points_foerstner (Image1, 1, 2, 3, 200, 0.3, gauss, false, RowJunctions, …

從excel表中生成批量SQL,將數據錄入到數據庫中

excel表格中有許多數據&#xff0c;需要將數據導入數據庫中&#xff0c;又不能一個一個手工錄入&#xff0c;可以生成SQL&#xff0c;來批量操作。1.首先在第二行的H列&#xff0c;插入函數&#xff1a;CONCATENATE("INSERT INTO book (bookid, title, volume, author, u…

HDU-5895 Mathematician QSC

題目大意&#xff1a; 已知f[0] 0, f[1] 1, f[i] f[i-1] * 2 f[i-2]&#xff0c;且g[n] g[n-1] f[n] * f[n]&#xff0c;現在給出n&#xff0c;y&#xff0c;x&#xff0c;s&#xff0c;問你x^(g[n*y]) mod (s 1)的值為多少。 解題思路&#xff1a; 首先可以得到的是g[n…

C#的兩種類據類型:值類型和引用類型

目錄什么是值類型&#xff0c;什么是引用類型概念&#xff1a;值類型和引用類型區別什么是值類型&#xff0c;什么是引用類型 概念&#xff1a; 值類型直接存儲其值&#xff0c;而引用類型存儲對其值的引用。部署&#xff1a;托管堆上部署了所有引用類型。 引用類型&#xf…

ring0 ring3 kernel driver

intel cpu的權限訪問控制&#xff1a;ring0 ~ ring5. window、linux操作系統都只用了ring0&#xff0c;ring3&#xff0c;對應內核態和用戶態. 驅動程序工作在內核態&#xff0c;沒有main函數入口&#xff0c;而應用程序工作在用戶態。轉載于:https://www.cnblogs.com/yiii/p/6…

Linux 的多線程編程的高效開發經驗

轉自&#xff1a;http://www.chineselinuxuniversity.net/articles/22615.shtml 本文中我們針對 Linux 上多線程編程的主要特性總結出 5 條經驗&#xff0c;用以改善 Linux 多線程編程的習慣和避免其中的開發陷阱。在本文中&#xff0c;我們穿插一些 Windows 的編程用例用以對…

Visual C++中error spawning cl.exe解決辦法

| 版權聲明&#xff1a;本文為博主原創文章&#xff0c;未經博主允許不得轉載。 今天安裝Vc6.0的時候出現了一個error spawning cl.exe的錯誤&#xff0c;在網上找了一些資料&#xff0c;才知道這是因為路徑設置的問題引起的&#xff0c; “cl.exe”是VC真正的程序編譯器&…

C#整數數據類型

文章目錄博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 數據類型含義取值范圍sbyte有符號8位整數-128 ~ 127&#xff08;-2^7 ~ 2^7-1&#xff09;byte無符號8位整數0 ~ 255&#xff08;0 ~ 2^8-1&#xff09;short有符號16位整數-32768 ~ 3…

HEXA機器人榮獲CES Asia2018 創新獎

2019獨角獸企業重金招聘Python工程師標準>>> 6月13日至15日&#xff0c;亞洲消費電子展CES Asia 2018將在上海新國際博覽中心如期舉行。在活動到來前&#xff0c;美國消費技術協會&#xff08;CTA&#xff09;于5月24日&#xff0c;提前揭曉了“2018亞洲消費電子展創…

【bzoj3994】[SDOI2015]約數個數和 莫比烏斯反演

題目描述 設d(x)為x的約數個數&#xff0c;給定N、M&#xff0c;求 輸入 輸入文件包含多組測試數據。 第一行&#xff0c;一個整數T&#xff0c;表示測試數據的組數。接下來的T行&#xff0c;每行兩個整數N、M。輸出 T行&#xff0c;每行一個整數&#xff0c;表示你所求的答案…

Linux根文件系統結構再認識

Linux根文件系統結構再認識劉建文&#xff08;http://blog.csdn.net/keminlau &#xff09; INTRO 盡管Linux的根文件系統在形式表現上是一體的&#xff08;所有數據目錄均為根目錄下的子目錄&#xff09;&#xff0c;但實際它們是多個不同的【邏輯主體】&#xff08;為了實現…

C#浮點數據類型

文章目錄博主寫作不容易&#xff0c;孩子需要您鼓勵 萬水千山總是情 , 先點個贊行不行 數據類型含義取值范圍有效數字位數float32位浮點數1.5X10^-45 ~ 3.4X10^387double64位浮點數5.0X10^-324 ~ 1.7X10^30815 ~ 16 注意&#xff1a; 浮點數有一定的取值范圍和有效數字限制…

在Window10上使用Ubuntu終端

在Windows10上使用Ubuntu終端 習慣了ubuntu的開發&#xff0c;回到windows的command可以說是很絕望了。之前偶爾用windows時一直用git-bash來代替。但是發現windows已經添加了對ubuntu子系統的支持&#xff0c;那直接用不是更爽。 1.安裝 進入控制面板&#xff0c;開啟適用于Li…

httpClient實現微信公眾號消息群發

1、實現功能  向關注了微信公眾號的微信用戶群發消息。&#xff08;可以是所有的用戶&#xff0c;也可以是提供了微信openid的微信用戶集合&#xff09; 2、基本步驟 前提&#xff1a; 已經有認證的公眾號或者測試公眾賬號 發送消息步驟&#xff1a; 發送一個請求微信去獲取ac…

為靜態博客生成器WDTP移植了一款美美噠主題

前言 關于這個主題的移植后公布&#xff0c;我已經聯系了主題作者并取得同意&#xff0c;這個主題是一夜涕所寫的Sgreen&#xff0c;預覽圖見下 關于WDTP 就是一個很方便很便攜很快速的cpp編寫的帶gui跨平臺的開源的靜態博客生成器&#xff0c;軟件作者更新記錄在V站可以找到,軟…