`
hideto
  • 浏览: 2649346 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

回复关于测试以及自动化的理解

阅读更多
jack 写道
不是工具的问题,是测试粒度大小的问题,还有怎么测试。

model的函数,要测试吗,controller用到了这个model的这个函数,要测试吗,view中呢,都要一层一层测试吗。 测试那一层才是最有必要的?

结合自己的一些体会有感而发:
在freewheel的UI(UI指Web界面,不是单纯的指html、css)组工作1年多,一个较大的体会是流程化、自动化的控制做的比较好。我们有程序员level的单元测试,有ci服务器,有专门的QA team(QA team vs DEV team接近1 : 1的人数)

为什么我们这么重视测试?
因为商业软件特别是ASP product很注重SLA,一个在线商业服务软件,即使是一个月出现5分钟的down time(在maintenance window外)也是不可容忍的,因为带给客户的损失可能是非常巨大的。

测试的目的?
测试的目的就是为了保证软件服务质量,没有经过严谨的测试的软件谁敢用?没有经过24小时摇晃实验的机械手表你敢买?没有经过C-NCAP碰撞测试的汽车你敢开?

测试的种类?
测试有很多形成体系的分类,从程序员的角度来看最关注的就是单元测试。从QA的角度来看最关注的则是集成测试、验收测试、黑盒测试

为什么程序员要关注单元测试?
因为QA在集成测试时发现软件有bug,这时就会过来找程序员的麻烦。所以,为了减少一来一回的改bug和沟通的成本,程序员有必要站在开发人员的角度保证软件的基本单元的质量,即单元测试。好比汽车零件生产商要保证每个汽车零件的质量,电脑零件生产商要保证电脑零件的质量,这样组装起来的汽车、电脑的整体质量才能过关。

有哪些单元测试?
具体化到Web UI的开发结合流行的MVC框架来看,程序员最需要保证的就是业务逻辑的正确性,而业务逻辑都在Model层面,所以Model层是最重要的也是最需要测试的地方。在这里一个Model方法的测试就是一个单元测试。Controller层也需要隔离测试,因为Controller层是Web程序的Work Flow,Controller不测试的话怎能保证一个URL的访问能得到预期的结果?View层也是需要测试的,因为View层包含了一些动态网页的页面逻辑,如果不测试怎能保证页面渲染正确?

MVC三层的测试是最基本的单元测试需要覆盖的地方,一旦程序员保证了这三部分,则QA在做集成测试、验收测试时会大大减少出现bug的几率,从而也让程序员的生活更舒适。

为何需要自动化?
我们有自己的ci服务器做持续集成,每批次svn commit都会触发ci跑集成测试,自动化的目的就是及时发现bug的回归、减少手工跑测试浪费的时间、清楚的了解项目目前的质量水平。
ci可以设计的比较灵活,针对不同的层面来跑不同的测试,比如集成测试和单元测试可以分为两个项目来跑。ci上报错可以给开发人员发email通知来及时fix bug/test,以免bug扩散。

一句话,有了良好的测试才能保证软件质量,所以我们要认真对待测试,提高对测试的认识。
分享到:
评论

相关推荐

    Java开发基于知识图谱的航天数据可视化系统源码+项目使用说明.zip

    2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。...

    计算机毕业设计:Python实现的自动聊天机器人(源码+详细说明),源码+详细说明),保证可靠运行,附赠计算机答辩PPT模板

    《计算机毕业设计:Python实现的自动聊天机器人(源码+详细说明)》是一项极具创意和实用价值的计算机资源,它专为本科课程设计、毕业设计以及Python学习而设计。该资源通过Python编程语言构建了一个功能强大、交互...

    【保姆级教程】ChatGPT搭建AI网站实战

    ChatGPT是一款基于GPT-...通过选择合适的Web开发框架、集成ChatGPT、创建用户界面、训练ChatGPT、测试和优化、部署到生产环境以及进行维护和升级等步骤,您可以构建一个功能强大的AI网站,并提供更好的用户体验和服务。

    PHP和MySQL Web开发第4版pdf以及源码

    1.5.1 简短、中等以及长风格的表单变量 1.5.2 字符串的连接 1.5.3 变量和文本 1.6 理解标识符 1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 ...

    iuhyiuhkjh908u0980

    仿照Appfuse 提供一个完全自动化的ant构建脚本.在线SHOP的数据库建模图例已经 在博客中贴出.感兴趣的和我一起搭建,嘻嘻 文档博客地址: http://forum.sinomagazine.com 开发环境: Jcreator-4.5 JDK-1.5 Ant-1.6.1 ...

    PHP和MySQL WEB开发(第4版)

    1.5.1 简短、中等以及长风格的表单变量 1.5.2 字符串的连接 1.5.3 变量和文本 1.6 理解标识符 1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 理解...

    PHP和MySQL Web开发第4版

    1.5.1 简短、中等以及长风格的表单变量 1.5.2 字符串的连接 1.5.3 变量和文本 1.6 理解标识符 1.7 检查变量类型 1.7.1 PHP的数据类型 1.7.2 类型强度 1.7.3 类型转换 1.7.4 可变变量 1.8 声明和使用常量 1.9 ...

    Visual C++ 2010入门经典(第5版)--源代码及课后练习答案

     作者ivor horton采用了容易理解的讲授方法,并提供了详尽的示例,帮助读者迅速地成为一名优秀的c++编程人员。《visual c++ 2010入门经典(第5版)》针对visual c++ 2010版本进行了全面更新,介绍了最新的开发环境和...

    Visual C++ 2005入门经典--源代码及课后练习答案

    10.5 测试扩展的类 555 10.6 调试动态内存 558 10.6.1 检查自由存储器的函数 558 10.6.2 控制自由存储器的调试操作 559 10.6.3 自由存储器的调试输出 561 10.7 调试C++/CLI程序 566 10.8 小结 575 第...

    基于SIP开发软件电话的一些资源(转自YOUTOO)

    (最近工作重心不在SIP开发,SO本文档也没有机会更新,有技术问题也请尽量咨询他人,本人不一定能及时回复。) 一直没空仔细研究下oSIP,最近看到其版本已经到了3.x版本,看到网上的许多帮助说明手册都过于陈旧,且...

    员工管理系统C数据结构课程设计报告报告.doc

    四、测试过程 1、进入系统如下图: 2、根据提示信息输入1、增加员工信息: 3、根据提示信息输入3查询员工信息,选择第一种对进展查询做演示: 4,根据提示信息修改员工信息: 5、根据提示信息输入5,选择按编号进展...

    易孚网站系统(EIFR) 2012.1

    我们已在软件中 针对上述操作系统做了大量的测试和实地检验,保证 EIFR 可以在上述系统中安全稳定的运行,但您仍然需要做好服务器操作系统 级的安全防备措施,例如 Windows 用户需更改 MySQL for Windows 的初始 ...

    50用户在线考试系统

    因为客观题(判断题、单选题、多选题、阅读理解题)是自动批改,所以课程管理员只要批改主观题(名词解释、填空题、简答题、论述题)就可以了。主观题批改完成后,请务必点击“试卷批改完”。否则,考生将查询不到...

    经典全面的SQL语句大全

     5、说明:显示文章、提交人和最后回复时间 select a.title,a.username,b.adddate from table a,(select max(adddate) adddate from table where table.title=a.title) b 6、说明:外连接查询(表名1:a 表名2:b) ...

    php网络开发完全手册

    4.3 关于引用的解释 67 4.3.1 对变量的引用 67 4.3.2 对函数的引用 68 4.3.3 引用的释放 68 4.4 小结 69 第5章 PHP中类的应用 70 5.1 PHP中OOP的应用 70 5.1.1 类简介 70 5.1.2 类的信息封装 71 5.1.3 静态类 71 5.2...

Global site tag (gtag.js) - Google Analytics