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

时间: 2024-12-29 06:10:34

MVC架构简介及其测试策略的相关文章

Spring 框架基础(06):Mvc架构模式简介,执行流程详解

本文源码:GitHub·点这里 || GitEE·点这里 一.SpringMvc框架简介 1.Mvc设计理念 MVC是一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个组件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑,MVC分层有助于管理和架构复杂的应用程序 M:代表模型Model 模型就是数据,应用程序的核心. V:代表视图View 回显数据的界面,例如JSP就是用来展示模型中的数据. C:代表控制器Controller 控制器的作

【JAVA】基于MVC架构Java技术荟萃案例演练

基于JAVA-MVC技术的顾客管理项目案例总结 作者 白宁超 2016年6月9日22:47:08 阅读前瞻:本文源于对javaweb相关技术和资料汇总,涉及大量javaweb基础技术诸如:Servlet运行原理.Get/Post请求的区别.jsp的基本原理和运行框架.jsp的9大隐含对象的使用.MVC开发模式的使用.构建封装自己dao代码库.以及基于MVC的增删改查操作等:小结最后还有面向接口编程的多数据源配置与存储,以及工厂模式的使用.除此之外,后续文章会对cookie.session.Jav

MVC架构模式

MVC架构模式 参考: MVC框架_百度百科https://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6/9241230?fr=aladdin MVC框架 MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑.MVC被

运用 Ext JS 4 的 MVC 架构

http://www.open-open.com/lib/view/open1350386395227.html http://www.ibm.com/developerworks/cn/web/1210_wangzh_extjsmvc/index.html Ext JS 4 简介 Ext JS 4 目前是 Sencha 的产品,4.x 的正式版本号是 4.0.7.Ext JS 4 提供商业版本,但如果您的项目是开源的,则可以免费使用 Ext JS 4.Ext JS 的论坛目前非常活跃:Ext

【MVC架构】——怎样利用Json在View和Controller之间传递数据

在MVC架构中,尽管非常多东西和三层非常相似,可是也有非常大的差别.就比方传递数据.在三层架构中,传递数据就仅仅要一层返回,另外一层用同样类型的变量来接收即可了.在MVC中,事实上原理是一样的,Controller中的方法返回Json字符串.然后View来接收.或者反过来,不同的就是这之间须要一个序列化和反序列化的过程. 本文就简介利用Json在View和Controller之间传递数据的一个方面,大致从双方面介绍,一是什么是Json,二是怎样实现. 什么是Json 一.概念 百度百科说:JSO

ASP.NET MVC 模式简介

为什么要学习ASP.Net MVC? MVC架构模式诞生30年后,因为其提供的良好的松耦合.易于扩展.高可维护性等优点,重新在开发社区火起来.作为微软全新的Web网站开发框架,ASP.NET MVC提供了全新的开发模式,完美支持经典的MVC架构模式.为.NET工程师提供了完全不同的开发体验. 越来越多的公司和开发者开始加入到MVC开发模式中来,使他进入了一个高速发展的状态,而现在MVC已经变成了ASP.NET下的一种常见的开发模式,它能让你学习一种完全不同的架构,所以这是我们有理由也有必要掌握的

MVC架构之二

1.简介 MVC是一种架构设计模式,是一种设计理念.是为了达到分层设计的目的,从而使代码解耦,便于维护和代码的复用.MVC是3个单词的缩写,全称:Model-View-Controller(模型-视图-控制器). Model: Model在MVC中扮演着功能掌控者的角色,属于底层,它处理业务逻辑和数据模型,例如User   selectUser():这个方法和它调用之后返回的Bean都是属于Model的.至于以何种方式把User传递到前台(例如以Bean的方式传递,使用JSP标签进行处理:或者使

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验. 1.说一说Servlet生命周期(非常重要) Servlet生命周期包括三部分: 初始化:Web容器加载servlet,调用init()方法 只执行一次 处理请求:当请求到达时,运行其service()方法.service()自动调用与请求相对应的doXXX

Java的MVC模式简介

Java的MVC模式简介 MVC(Model View Control)模型-视图-控制器 首先我们需要知道MVC模式并不是javaweb项目中独有的,MVC是一种软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controller),即为MVC.它是一种软件设计的典范, 一.MVC与模板概念的理解 MVC本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个