美文网首页Android札记待读程序员
是否使用TDD(测试驱动开发)进行UI开发

是否使用TDD(测试驱动开发)进行UI开发

作者: 江欲行 | 来源:发表于2015-02-12 13:36 被阅读184次

    问题

    StackOverflow上有一则是否使用TDD(测试驱动开发)进行UI开发 的提问。

    JacobE问:

    对于是否使用TDD进行开发UI这件事,我想了很久,但难以决定。我想听听你们的意见。

    回答

    kdgregory的回答(23票赞同)

    试图测试UI组件的放置是没有意义的,首先因为UI布局是主观的,所以应该由人来测试。其次,随着UI改动,你要不断地重写测试。
    同样,没必要测试你所使用GUI库的组件,它们已经被非常多的人测试过了。如果你写了新的UI组件,倒是可以测一测。
    你应该测试的是GUI下面的程序行为:控制器和模型部分。朝这个方向努力,你就会开始关心组件分离。为了方便测试,你会让你的模型部分和控制器和你的UI尽量解耦。

    bangroot的回答(8票赞同)

    当我使用自动化测试去测试UI的外观风格时,我发现这是最大的“过度工程”。我的建议是:不要!把你的测试重心转移到程序的行为上吧,至于程序的UI,留给测试团队去做吧。关键是把你的精力用在高收益的行为上,自动化的UI测试不仅不会增加价值,还会让你负债!

    Brian Rasmussen的回答(5票赞同)

    TDD的作用就是让你的逻辑代码和你的GUI代码分离。如果你这样做了,你会发现很容易用TDD建立逻辑代码。如果你的逻辑代码分离得好,在它之上你完全可以建立另一套UI。

    Harald Scheirich(4票赞同)

    我从来不用TDD做任何UI布局的事情,因为花的时间太不值。

    后面的解答不一一列举。

    结论

    关于这个问题的回答基本是一边倒的结论:没必要把精力放在UI的自动化测试上。原因可归结为以下两点:

    1. 不合理。“因为UI布局是主观的,所以应该由人来测试。”
    2. 不划算。对于UI的自动化测试,要花费很大的努力和很多的时间,随着UI改动,测试也要改动。工作量太大。明显不如由人来测试UI划算。

    根据以上的讨论,我的结论是:

    1. TDD是辅助设计的一种方法,但不是唯一的方法。当我做UI布局时,写CSS时,没必要TDD。
    2. TDD应该针对程序的行为,而不是程序的外观。TDD的目标写出依赖尽量少的,方便测试的功能模块。

    2015-02-12 周四


    如果你喜欢我的文章,可以点 这里 给我打赏,五分一毛也是对我的认同。

    相关文章

      网友评论

        本文标题:是否使用TDD(测试驱动开发)进行UI开发

        本文链接:https://www.haomeiwen.com/subject/fafsxttx.html