`

测试驱动开发

阅读更多

测试驱动开发(Test-Driven Development)是一种不同于传统软件开发流程的新型开发方法,它将具体实现的功能进行模块划分,实现不同模块之间的零交集,并且各个模块实现的功能先编写测试代码,然后编写使测试通过的功能代码,实现测试驱动功能的开发。使用测试驱动开发(简称TDD)有助于编写简洁可用和高质量的代码,有很高的灵活性和健壮性,能快速响应变化,查找错误源,并加速开发过程。

下面我主要就我做的一个猜数字的小游戏来分析如何进行测试驱动开发。

首先获得测试驱动开发的脚手架,网址:http://jasmine.github.io/2.0/introduction.html

一、测试的基本模块介绍

测试的工程项目主要有两个文件夹要注意spec、src,spec文件夹里的js文件里编写测试用例,一般命名规则...Spec.js,文件主要内容:

describe("Contrast_number", function () {

    beforeEach(function () {

    });
    afterEach(function () {

    });

    it("should be able to match none and there is no  same word in the different location", function () {
        var contrast_result=contrast([1,2,3,4],[5,6,7,8]);
        expect(contrast_result).toBe("0A0B");
    });

});

describe里定义了的测试的描述Contrast_number,也就是这个js的中心是Contrast_number,参数里定义了要执行的方法。

beforEach是在执行测试代码之前先执行的,一般函数里写数据的初始化函数。

afterEach是在执行完测试后执行的,一般写数据清空的方法调用函数。

每个it代表一个测试,第一个参数写该测试的描述,第二个参数执行测试方法,一般是执行了功能函数后返回可用于测试的结果,使用expect来写自己期望执行功能函数获得的返回值能够得到什么。

这样一个测试就完成了,然后在相应的src文件的js文件里写功能方法,这个步骤就体现了先写测试后写功能实现方法这个特点。

二、猜数字游戏为例

1、整个测试驱动开发与项目结合的步骤如下

1)分析功能,划分模块

这里猜数字游戏主要有三大块:

电脑随机数与竞猜者输入数的对比,返回对比结果(以 *A*B的形式返回,A代表位置、值都相同,B代表值相同,位置不同);

获得电脑随机数;

竞猜次数不能超过6次的判断;

这三个模块在进行测试时方法要没有交集,这点非常重要,因为我当时就将模块方法之间进行了交叉使用,使得逻辑出现交叠,这样对于测试是非常不好的,因为它没有办法精确定位错误方法。

2)分别编写三个模块的测试

这里要尽可能把测试可能出现的情况想全了,比如数字对比可能出现的集中结果;猜数字游戏如果次数用完了没猜对,或次数不大于6次且猜数字成功,或次数不大于6次,而且还没成功。还有就是随机数的重复判断等。分别编写it里的函数

3)具体功能方法的编写

由于是分模块的所以不同模块的功能实现要写到不同的js文件里面,而各个模块方法的调用,以及模块之间的调用要建一个专门的js文件放这些逻辑方法。

这样就可以通过测试不断地改功能方法直到测试通过。

测试通过后,要进行代码的重构,简化,写功能方法时,边重构边写也可以。

4)实际开发项目前台设计

功能方法测试通过后,只需将建的这几个测试方法、功能方法及其相关文件复制到自己的工程项目下,然后编写界面,编写controller,controller里就可以直接调用已通过测试的功能方法。

这样一个测试驱动开发的项目就基本完成了。

2、功能代码实现

在整个项目中,一个重难点是获得随机数并判断重复,还有就是对比结果

1)获得随机数

 

var no = parseInt(10*Math.random());

 我这里使用Math.random()获得[0,1)的随机数,然后乘以10,换算到[0,10)之间的随机数,使用parseInt取整,得到[0,10)之间的整数。

2)随机数重复判断

我将每个随机数存到一个数组里,再获得的遍历数组进行判断是否重复,如果重复,就再重新获得一个no,如果不重复,然后存进数组里接着获取下一个。这里使用_.filter来判断

 

var is_repeat=_.filter(random,function(num){
        return num==no;
    });

3)猜数字比较函数

 

function contrast(Random_number,input_number){
    var a=0;
    var b=0;
    for(var i=0;i<Random_number.length;i++){
        if(Random_number[i]==input_number[i]){
            a++;
        }
    }
    c =_.difference(Random_number,input_number.length;
    b=4-a-c;
    var result= a.toString()+"A"+ b.toString()+"B";
    return result;
}

 使用测试驱动开发,使得逻辑思维从传统开发方法中转换过来,先测试后实现功能,模块划分清晰明了,逻辑明确,易于纠错,灵活调用。总的感觉就是测试驱动开发,让我的开发逻辑变得更加清晰!

0
0
分享到:
评论

相关推荐

    测试驱动开发及开发实践.pdf

    测试驱动开发及开发实践.pdf 测试驱动开发及开发实践.pdf

    测试驱动开发实践介绍ppt.ppt

    测试驱动开发实践介绍 测试驱动开发(Test-Driven Development,TDD)是一种软件开发过程,它强调在编写实际代码之前先编写自动化测试。这种方法可以帮助开发者编写更好的代码,提高代码质量和可维护性。 在测试...

    测试驱动开发.pdf测试驱动开发.pdf

    测试驱动开发.pdf测试驱动开发.pdf

    测试驱动开发.pdf

    测试驱动开发(TDD)以测试作为开发过程的中心,它要求在编写任何产晶代码之前, 首先编写用于定义产品代码行为的测试,而编写的产品代码又要以使测试通过为目标。测试驱 动开发要求测试可以完全自动化地运行,在对...

    java测试驱动开发教程+代码实例

    《Java测试驱动开发》介绍如何将各种TDDzui佳实践应用于Java开发,主要内容包括:用Java语言进行TDD会用到的各种工具和框架,所需环境搭建;通过实际应用程序,展示TDD优点及开发中应注意的主要问题;TDD是如何通过...

    C#测试驱动开发

    要使测试驱动开发在软件行业中得以繁荣兴盛,需要一些条件,《C#测试驱动开发》从讨论这些条件开始。软件开发发展到今天,有其历史和特定的条件,理解这些很重要。避免重复过去的错误也很重要。在自己当前的开发实践...

    C#测试驱动开发(中文清晰版)

    C#测试驱动开发(中文清晰版) 第Ⅰ部分 入门 第 1 章 通向测试驱动开发之路 第 2 章 单元测试简介 第 3 章 重构速览 第 4 章 测试驱动开发:以测试为指南 第 5 章 模拟外部资源 第Ⅱ部分 将基础知识...

    测试驱动开发的艺术 epub电子书

    极限编程反其道而行之,主张采用测试驱动开发(TDD)的方法,即通过测试定义所要开发的功能的接口,然后实现功能的开发过程。TDD通过不断地测试推动代码的开发,既简化了代码,又保证了软件质量。本书采用“手把手”...

    测试驱动开发Kent Beck

    《测试驱动开发》是Kent Beck的经典著作,这本书深入探讨了测试驱动开发(TDD)这一软件开发实践。TDD是一种编程方法论,它强调在编写实际功能代码之前,先编写测试用例,以此来指导软件设计和编码过程。通过这种...

    TDD 测试驱动开发 文档 详细

    测试驱动开发(Test-Driven Development, 简称TDD)是一种软件开发实践,强调在编写实际代码之前先编写测试用例。这种方法的核心理念是通过编写能够失败的测试来定义需求,然后编写足够的代码使测试通过,最后重构...

    测试驱动开发_中文

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,由Kent Beck在其同名著作《测试驱动开发》中提出。这种方法主张先编写测试用例,再编写实现功能的代码,以此来驱动开发过程,确保代码的质量...

    《java测试驱动开发》 源码

    《java测试驱动开发》 源码 本书介绍如何将各种TDD最佳实践应用于Java开发,主要内容包括:用Java语言进行TDD会用到的各种工具和框架,所需环境搭建;通过实际应用程序,展示TDD优点及开发中应注意的主要问题;TDD是...

    测试驱动开发(TDD)入门讲解及代码实例

    测试驱动开发(TDD)是极限编程的重要特点,它以不断的测试推动代码的开发,既简化了代码,又保证了软件质量。本文从开发人员使用的角度,介绍了 TDD 优势、原理、过程、原则、测试技术、Tips 等方面。 背景 一个...

    TDD测试驱动开发.pptx

    "TDD测试驱动开发.pptx" TDD 测试驱动开发是一种软件开发方法,它强调通过编写自动化测试来驱动整个开发过程。TDD 是敏捷开发中的一个核心实践和技术,也是一种设计方法论。其主要包括两方面:测试先行和代码重构。...

    java 测试驱动开发

    java 测试驱动开发,

    测试驱动开发-实例1

    测试驱动开发-实例1 Test-Driven+Development+By+Example-测试驱动开发

    Python测试驱动开发:使用Django、Selenium和JavaScript进行Web编程(第2版)》高清文字版,带书签。中英文都有哦!

    《Python测试驱动开发:使用Django、Selenium和JavaScript进行Web编程(第2版)》是一本详尽探讨如何在Web开发中应用测试驱动开发(TDD)技术的专业书籍。这本书不仅涵盖了Python语言的基础,还深入讲解了Django框架...

    测试驱动开发的艺术

    TDD的概念与模式第二部分 针对特定技术应用TDD第5章 测试驱动Web组件第6章 测试驱动数据访问第7章 测试驱动不可预测功能第8章 测试驱动Swing代码第三部分 基于ATDD构建产品第9章 解析验收测试驱动开发第10章 ...

Global site tag (gtag.js) - Google Analytics