SlideShare a Scribd company logo
JavaScript Testing之
       JSUnit UT


CBU-技术部-商业产品开发部-
       前端组
Agenda:
•   什么是UT
•   前端为什么需要UT
•   UT的基础
•   UT的框架选型
•   怎么写UT
•   我们遇到的问题及如何解决的
•   QA
                    30mins+
什么是UT?


             A




         B
                 C
3步
     •   Set Up
     •   Prepare an input
     •   Call a method
     •   Check an output
     •   Tear down

     t.test_methodA=function(){
        var input={some input value};
        var output=A(input);
       jsunit.assertEquals(output,expectValue);
     }
A unit test is a piece of a code (usually a method)
that invokes another piece of code and checks
the correctness of some assumptions afterward.
If the assumptions turn out to be wrong, the unit
test has failed.

A “unit” is a method or function.
UT should be : Automated, trustworthy, readable,
and maintainable.
前端为什么需要UT?

 前端逻辑复杂化
 设备多样化/前端环境复杂化
 前端开发模块化
 前端组件重用化



  减少Bug数目,提高前端的代码质量,
        规范前端编码
单元测试元素的组成
✦ Test Suite
  ✦ Tests
     ✦ Assertions
  ✦ Async Tests
✦ Test Runner
Assertions


✦assert([comment], booleanValue)
✦ assertTrue([comment], booleanValue)
✦ assertFalse([comment], booleanValue)
✦ assertEquals([comment], value1, value2)
✦ assertNotEquals([comment], value1, value2)
✦ assertNull([comment], value)
✦ assertNotNull([comment], value)
  …
• More http://www.jsunit.net/documentation/
Tests
 t.testEval3 =function(){
       jsunit.assertEquals(4, eval("2 + 3"));
  };
  t.testEval4 = function() {
       var a=function(){};
       jsunit.assertTypeOf(a, "function");
  };
TestRunner
UT框架的选择

   JSUnit   QUnit   …
JSunit VS QUnit
              JSUnit            QUnit
运行是否方便        不太方便,需要运行         很方便,写完,刷新,即
              testRunner        可运行

语法风格          还是2000年时候的,有点 比较语义化,有module的
              过时            概念
是否支持异步        不支持,需要使用          支持,使用start ,stop等
              setTimeOut等来解决
是否支持Ant       支持                不支持
是否可以CI        可以,Hudson有现成的插 不支持,输出的结果带
              件              html标签,john设计时就
                             没考虑这个

是否适合大型或多个项目   比较适合,有testsuit和   多个项目,有点混乱
              testpage概念

远程控制          支持                不支持
为什么选择JSUnit
• JSUnit设计理念源于Junit,后端的开发同学容
  易接受
• Ant, CI,多项目的支持
语法改造
• Ali.test.jsunit.defineTests("ali.ux.logging", function(t, js
  unit) {
    jsunit.require("logger/js/logging.js");
    t._setUp = function() {
       //todo
   };
   t._tearDown = function() {
       //todo
   };

• });
异步支持
t.testAsyncCall=function(){
   jQuery.ajax({
         url:
         jsunit.TEST_BASE+"wxb/data/data.json",       success:t.asy
         ncCallback(function(obj){
          jsunit.assertEquals(1,obj.data.userType);
           }),
         dataType: "json"
   });
};
t.testAsyncCall._async=true;
怎样写?
Demo
问题列表
前端单元测试能带给我们什么?
 1: 产品的功能性描述
 2: API的浏览器兼容性测试
 3: 重要bug的fix测试
 4: 添加新功能,是否影响老功能的测试
 5: 产品的可维护性更好
在编写代码过程过,对于可测性,有个很重
要的问题,就是有的私有函数,为了安全
性,用闭包来封装,断绝其和外界的访问,
但这就给可测性带来了问题。

方案: 在编写代码时,需要测试的方法,
我们可以使用_testName来定义其为私有函
数,然后使用@aliobf-clobber等这些meta-
data来描述,类似于Google guice的方式。
使用ant和Java方式来解决。
什么样的项目适合做单元测试?
 ✦需要JS处理业务逻辑 (Heavy JavaScript
 APP )
 ✦后台拿到数据后,需要对数据进行处理的
 ✦前端面向对象编程,而且最好logic和view
 是分开的。
什么样的项目不适合做单元测试?
单纯的从后端拿到数据,然后显示的项目
QA

More Related Content

More from fangdeng (20)

PDF
jQuery底层架构
fangdeng
 
PDF
Building an event driven web
fangdeng
 
PPTX
浅尝jQuery
fangdeng
 
PPTX
Html基础培训
fangdeng
 
PPT
前端开发之Js
fangdeng
 
PPTX
Javascript代码注释及文档生成
fangdeng
 
PPTX
J engine -构建高性能、可监控的前端应用框架
fangdeng
 
PPT
前端单元测试初体验
fangdeng
 
PDF
2011年方凳年度总结及颁奖
fangdeng
 
PDF
产品线中的思考
fangdeng
 
PPTX
产品线中的思考
fangdeng
 
PPTX
Postoffer前端架构设计
fangdeng
 
PPTX
Varnish简介
fangdeng
 
PDF
Websocket
fangdeng
 
PPT
Let's talk about date in javascript
fangdeng
 
PDF
Test driven-frontend-develop
fangdeng
 
PDF
方凳良品1期
fangdeng
 
PDF
方凳良品2期
fangdeng
 
PPT
魏琪君-重构-关于可读性、原则和模式
fangdeng
 
PPTX
Datalazyload
fangdeng
 
jQuery底层架构
fangdeng
 
Building an event driven web
fangdeng
 
浅尝jQuery
fangdeng
 
Html基础培训
fangdeng
 
前端开发之Js
fangdeng
 
Javascript代码注释及文档生成
fangdeng
 
J engine -构建高性能、可监控的前端应用框架
fangdeng
 
前端单元测试初体验
fangdeng
 
2011年方凳年度总结及颁奖
fangdeng
 
产品线中的思考
fangdeng
 
产品线中的思考
fangdeng
 
Postoffer前端架构设计
fangdeng
 
Varnish简介
fangdeng
 
Websocket
fangdeng
 
Let's talk about date in javascript
fangdeng
 
Test driven-frontend-develop
fangdeng
 
方凳良品1期
fangdeng
 
方凳良品2期
fangdeng
 
魏琪君-重构-关于可读性、原则和模式
fangdeng
 
Datalazyload
fangdeng
 

Recently uploaded (20)

PDF
114分科測驗歷史試卷114分科測驗歷史試卷114分科測驗歷史試卷114分科測驗歷史試卷.pdf
ssuserd66db11
 
PPTX
3分钟读懂查尔斯达尔文大学毕业证CDU毕业证最佳获取方法
guwztugnu
 
PPTX
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
mbcom2
 
PDF
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
PPTX
原版定制美国范德比尔特大学Vanderbilt University毕业证书)如何办理
gbydfzjjv
 
PPTX
美国毕业证(PITT毕业证书)匹兹堡大学毕业证毕业文凭证书
xyqutdu
 
PPTX
加拿大毕业证(UW毕业证书)温莎大学毕业证假学位证
yfuuk
 
PPTX
美国毕业证(UM毕业证书)迈阿密大学毕业证学位认证
oxyvaoq
 
PPTX
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证外国毕业证
oxyvaoq
 
PPTX
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
PPTX
3分钟读懂莫纳什大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
PPTX
澳洲毕业证(GU毕业证书)格里菲斯大学毕业证学位学历证书
uezohzu
 
PPTX
3分钟读懂卧龙岗大学毕业证UOW毕业证【微信:BYZS866】
7l6mta5fe
 
PPTX
美国毕业证(UVM毕业证书)佛蒙特大学毕业证电子版
xyqutdu
 
PDF
114分科測驗地理試卷114分科測驗地理試卷114分科測驗地理試卷114分科測驗地理試卷.pdf
ssuserd66db11
 
PPTX
英国毕业证(IC毕业证书)帝国理工大学毕业证仿冒文凭毕业证
xyqutdu
 
PPTX
澳洲毕业证(DU毕业证书)迪肯大学毕业证电子版
xavta
 
PPTX
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
PPTX
3分钟读懂加拿大昆特兰理工大学毕业证(Kwantlen Polytechnic University毕业证书)最佳获取方法
tyz1s06ji
 
PPTX
3分钟读懂美国加利福尼亚大学戴维斯分校毕业证(University of California,Davis毕业证书)最佳获取方法
iqmiusm9n
 
114分科測驗歷史試卷114分科測驗歷史試卷114分科測驗歷史試卷114分科測驗歷史試卷.pdf
ssuserd66db11
 
3分钟读懂查尔斯达尔文大学毕业证CDU毕业证最佳获取方法
guwztugnu
 
澳洲毕业证(WSU毕业证书)西悉尼大学毕业证学历学位认证
mbcom2
 
114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf114分科測驗化學試卷.pdf
中 央社
 
原版定制美国范德比尔特大学Vanderbilt University毕业证书)如何办理
gbydfzjjv
 
美国毕业证(PITT毕业证书)匹兹堡大学毕业证毕业文凭证书
xyqutdu
 
加拿大毕业证(UW毕业证书)温莎大学毕业证假学位证
yfuuk
 
美国毕业证(UM毕业证书)迈阿密大学毕业证学位认证
oxyvaoq
 
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证外国毕业证
oxyvaoq
 
美国毕业证(Caltech毕业证书)加州理工学院毕业证国外大学毕业证
ayveco
 
3分钟读懂莫纳什大学毕业证Monash毕业证【微信:BYZS866】
btsqpfmy
 
澳洲毕业证(GU毕业证书)格里菲斯大学毕业证学位学历证书
uezohzu
 
3分钟读懂卧龙岗大学毕业证UOW毕业证【微信:BYZS866】
7l6mta5fe
 
美国毕业证(UVM毕业证书)佛蒙特大学毕业证电子版
xyqutdu
 
114分科測驗地理試卷114分科測驗地理試卷114分科測驗地理試卷114分科測驗地理試卷.pdf
ssuserd66db11
 
英国毕业证(IC毕业证书)帝国理工大学毕业证仿冒文凭毕业证
xyqutdu
 
澳洲毕业证(DU毕业证书)迪肯大学毕业证电子版
xavta
 
美国毕业证(GWU,GW毕业证书)乔治华盛顿大学毕业证国外本科学位证
ysaab1
 
3分钟读懂加拿大昆特兰理工大学毕业证(Kwantlen Polytechnic University毕业证书)最佳获取方法
tyz1s06ji
 
3分钟读懂美国加利福尼亚大学戴维斯分校毕业证(University of California,Davis毕业证书)最佳获取方法
iqmiusm9n
 
Ad

Java script测试之js unit ut