`
ball_cao
  • 浏览: 13012 次
  • 性别: Icon_minigender_1
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

单元测试的投入和产出

阅读更多
    Jerry在晚上10点打电话过来,把即将进入梦乡的我召唤回现实。除了唠唠家常外,我们自然的又谈到敏捷开发的话题上来。这次谈话终于在单元测试的问题上让他了解并认同了我的看法。对于大多数的中国的软件开发团队来说,难以实现敏捷的最重要问题是人的素质问题。一个敏捷团队要求每个成员都有较好的OOP和OOD的能力。试想你正在努力的重构有坏味道代码的同时,你的team中却有另一个新手在不断的写出新的充满坏味道的代码会是什么样的后果?这是一个难以完结的循环,不是么?单元测试能带给敏捷什么帮助是我和Jerry一直最有分歧的地方。我承认,单元测试只是软件众多测试方式中的一种。静态的看,单元测试包括其他的测试方法需要付出的成本和雇用低廉的人力进行测试的成本相比可能还高一些。但单元测试能带给我们的帮助不仅仅是在重构过程中,保证对复用代码的修改不会波及其他的调用那么简单。通过编写测试,我们可以发现代码中结构的问题并优化之。当然这建立在团队成员对OO的认识基础上,OO能力不足的程序员遇到难以测试的代码时,往往不会想着或者没有能力去将它重构为方便测试的代码。这就给我们带来一个新的管理任务,也是敏捷过程强调的一个任务,那就是培训。我们需要不断的训练我们的程序员们,使得他们能够构造出敏捷的代码。而这正是一个团队能否实现敏捷的技术关键。
    在谈话的最后,我们形成的共识是,实现敏捷是一个渐进的过程。构造一个在技术上有敏捷能力的团队有两种方法,一是用足够的钱去招聘有足够能力的程序员(大部分企业没有那么多钱)。二是将现有不符合敏捷技术要求的程序员培养为合格的敏捷工作者。而在培养的路上,单元测试正是一个很好的驱动方式和实践平台。
    最后,希望看到这篇文章的人们,在衡量单元测试成本的时候,将他可能需要投入的培训成本考虑进去并切实的实施这些培训,也将单元测试能对团队技术水平的提高这部分产出考虑进去。
分享到:
评论
13 楼 rubynroll 2008-05-16  
引用
构造一个在技术上有敏捷能力的团队有两种方法,一是用足够的钱去招聘有足够能力的程序员(大部分企业没有那么多钱)。二是将现有不符合敏捷技术要求的程序员培养为合格的敏捷工作者...


不去花钱雇佣高水平的程序员,期望将现有的程序员培养成高水平的再用...我有过这样的经历,2年内把一批刚毕业的学生培养了成了一批高手,结果由于公司没有提高待遇到相应的市场水平(经营状况所决定没办法),结果几乎全跑光...
12 楼 photon 2008-05-10  
结对编程可以起到一定的培训效果,不过几乎没有企业承担得起。

我想到一个办法,论坛里的大牛们不妨都学robbin,出来单干,重新按照自己的理想打造一个这样的工作环境,既能赚到钱又能改善当今企业的环境,不知道是不是一个馊主意。

但我又想到,目前的创业环境也是问题多多,难道也要这些大牛们去参政议政,改善创业环境?
11 楼 ball_cao 2008-01-21  
stevenwang 写道

为了实现你的伟大理想可能要害了人家仕途。
第一个菜鸟基本软件素养都没有,有些朽木真的不适合这一行的。
我建议第二种方法,选择合适的人才。
不要在这种菜菜浪费时间了。


团队里存在有不适合软件工作的人说明招聘的环节就出了问题
在很多情况下新人们是有一定潜力也有学习欲望的
只不过团队没有给他们应有的学习资源和环境,这是很多开发团队在管理上的严重缺失!
10 楼 stevenwang 2008-01-21  
ball_cao 写道
sg552 写道
ball_cao 写道
   一个敏捷团队要求每个成员都有较好的OOP和OOD的能力。试想你正在努力的重构有坏味道代码的同时,你的team中却有另一个新手在不断的写出新的充满坏味道的代码会是什么样的后果?这是一个难以完结的循环,不是么?



说的非常好。我就经历过这样的项目。
参与的一个项目,里面有个菜鸟写的那代码,一个方法好几百行,for循环嵌套了N层,
变量名叫 a, aaa, aaaaa ,我靠,最离谱的是author注了别人的名字。后来一问才
知道COPY别人的代码时没有修改author。汗。

两个办法解决你的问题
一个是教育这个菜鸟成为一个老手
还有一个办法是开掉他 多花点钱找个老手
我个人倾向于前者,教育本身也是企业应该担负的社会责任,遗憾的是中国大多数的企业没有切实承担起这个责任。很多单位一边感叹找个牛人不容易,一边不知道培养自己企业内部有潜力的人成为牛人。

---------------------------
为了实现你的伟大理想可能要害了人家仕途。
第一个菜鸟基本软件素养都没有,有些朽木真的不适合这一行的。
我建议第二种方法,选择合适的人才。
不要在这种菜菜浪费时间了。

9 楼 抛出异常的爱 2008-01-17  
hlxiong 写道
会写并善写单元测试并不容易
如果能有老手指导就完美了
每次看到自己写得单元测试代码,感觉惨不忍睹。。。

重构  
8 楼 hlxiong 2008-01-17  
会写并善写单元测试并不容易
如果能有老手指导就完美了
每次看到自己写得单元测试代码,感觉惨不忍睹。。。
7 楼 ball_cao 2008-01-15  
抛出异常的爱 写道
hyhongyong 写道
教育菜鸟成为老手,是企业应该做也必须做的事情。问题是如何培训呢?我有以下建议:公司内部成立一个新人培训的项目,菜鸟必须经过培训,在这个项目中试用并经考核合格后方可到正式的项目中工作。类似与其它行业的入职培训,没有这一关,很难保证新人的质量。

培训期间,谁出工资?谁给讲师出工资?


培训应该随时随地的进行。不是说到会议室就着ppt讲课或者在白板上写画才叫培训。应该在发现程序员犯错的每一时间教育他们正确的做法。

taowen 写道
OO和单元测试一点关系都没有。写的测试再多也不能说明你的代码是OO的。据我观察,好的OO代码,单元测试很简单,注重集成测试。相反过程式的代码,单元测试的代码会比较壮观。


怎么看你的说法自相矛盾呢?前面说OO和单元测试没哟关系,后面又说好的OO单元测试很简单?
6 楼 taowen 2008-01-15  
OO和单元测试一点关系都没有。写的测试再多也不能说明你的代码是OO的。据我观察,好的OO代码,单元测试很简单,注重集成测试。相反过程式的代码,单元测试的代码会比较壮观。
5 楼 tuti 2008-01-15  
摘自 《质量.软件.管理--协调行动》
第19章 成长的团队 中文版P254

下面是Jensen的研究:
研究1.
当前有5个任务需要执行,这些任务的目的是建立一个30000行的军队标准的实时
执行系统。系统有一个领导者率领10个程序员创建。在这个项目之前,这些人的
平均效率是大约75行每人月。项目领导把他们分成5组,每组2个人并象征性地
发了一支铅笔。意思是让这些团队开发每一行代码并且和他的伙伴做文档记录。
结果是以每人175行每人月的速度完成了这个系统,并且错误数不到从前每人产
生的错误数量的1%。


注:根据书中提及,这项研究应该不晚于1980年。
4 楼 抛出异常的爱 2008-01-15  
hyhongyong 写道
教育菜鸟成为老手,是企业应该做也必须做的事情。问题是如何培训呢?我有以下建议:公司内部成立一个新人培训的项目,菜鸟必须经过培训,在这个项目中试用并经考核合格后方可到正式的项目中工作。类似与其它行业的入职培训,没有这一关,很难保证新人的质量。

培训期间,谁出工资?谁给讲师出工资?
3 楼 hyhongyong 2008-01-15  
教育菜鸟成为老手,是企业应该做也必须做的事情。问题是如何培训呢?我有以下建议:公司内部成立一个新人培训的项目,菜鸟必须经过培训,在这个项目中试用并经考核合格后方可到正式的项目中工作。类似与其它行业的入职培训,没有这一关,很难保证新人的质量。
2 楼 ball_cao 2008-01-13  
sg552 写道
ball_cao 写道
   一个敏捷团队要求每个成员都有较好的OOP和OOD的能力。试想你正在努力的重构有坏味道代码的同时,你的team中却有另一个新手在不断的写出新的充满坏味道的代码会是什么样的后果?这是一个难以完结的循环,不是么?



说的非常好。我就经历过这样的项目。
参与的一个项目,里面有个菜鸟写的那代码,一个方法好几百行,for循环嵌套了N层,
变量名叫 a, aaa, aaaaa ,我靠,最离谱的是author注了别人的名字。后来一问才
知道COPY别人的代码时没有修改author。汗。

两个办法解决你的问题
一个是教育这个菜鸟成为一个老手
还有一个办法是开掉他 多花点钱找个老手
我个人倾向于前者,教育本身也是企业应该担负的社会责任,遗憾的是中国大多数的企业没有切实承担起这个责任。很多单位一边感叹找个牛人不容易,一边不知道培养自己企业内部有潜力的人成为牛人。
1 楼 sg552 2008-01-12  
ball_cao 写道
   一个敏捷团队要求每个成员都有较好的OOP和OOD的能力。试想你正在努力的重构有坏味道代码的同时,你的team中却有另一个新手在不断的写出新的充满坏味道的代码会是什么样的后果?这是一个难以完结的循环,不是么?



说的非常好。我就经历过这样的项目。
参与的一个项目,里面有个菜鸟写的那代码,一个方法好几百行,for循环嵌套了N层,
变量名叫 a, aaa, aaaaa ,我靠,最离谱的是author注了别人的名字。后来一问才
知道COPY别人的代码时没有修改author。汗。

相关推荐

    从菜鸟到测试架构师——一个测试工程师的成长日记

    因此,测试团队会运用风险分析和测试优先级来确定测试的关注点,以替代全面测试,并努力实现高产出投入比。 在软件测试的众多类型中,单元测试和功能测试是最基础也是最普遍的。单元测试是与开发最为接近的一种测试...

    自动化测试技术--TCL脚本做自动化测试

    TCL是一种简明、高效、可移植性好的脚本编程语言,广泛应用于单元测试、集成测试和自动化、桌面 GUI 应用程序、数据库、嵌入式开发、网络等领域。TCL自动化脚本示例包括Linux版本和Windows版本。 自动化测试技术...

    软件自动化测试技术教案

    自动化测试的价值在于提高效率和准确性,但其投入产出比(ROI)是需要考虑的关键因素。根据不同的观点,自动化测试的效益通常在多次重复使用后显现。例如,自动化测试在单元测试和集成测试中的应用尤为有效,特别是...

    软件测试基础资料

    白盒测试则深入代码层面,检查程序内部结构,常用于单元测试和集成测试,常用方法包括判断覆盖、条件覆盖和路径覆盖。 软件生存周期涵盖了从计划到运行和维护的全过程,测试应在软件具备可测性时开始,直到项目结束...

    03测试与验收阶段03测试与验收阶段XXX-系统测试报告共

    这一阶段包括单元测试、集成测试、系统测试和验收测试等多个层次。 1. **单元测试**:是由程序员或测试人员对软件的最小可测试单元,如函数、模块或类进行检查,确保它们能按照预期运行。 2. **集成测试**:在所有...

    全国计算机等级考试四级软件测试工程师考试新大纲.pdf

    软件测试心理学涉及到测试者如何理解和解决软件问题,而软件测试的经济学则关注如何优化测试投入与产出的比例。 2. **测试类型及其在软件开发中的角色**:从规划到验收和维护,每个阶段都需要不同的测试策略。考生...

    管理系统中计算机应用阶段测试阶段.doc

    6. **费用/效益分析**:在信息系统项目中,费用/效益分析通常用于经济效益评价,比较项目的投入和预期产出,以判断项目的经济可行性。 7. **信息资源安全性**:信息安全关注可用性、XX性、认证性和一致性。可用性...

    《软件测试训练营》学习笔记-软件测试员面试问题

    2. **白盒测试**:深入了解软件的内部结构和逻辑,通常用于单元测试和集成测试。 3. **灰盒测试**:介于黑盒和白盒测试之间,测试者拥有部分内部信息,以便更好地定位问题。 通过以上知识点的学习,可以为准备软件...

    [详细完整版]软件工程测试.doc

    长期项目适合积累和复用测试用例,进行单元测试和自动化测试;而变更频繁的小规模项目可能更适合手动功能测试,因为自动化测试的投入产出比可能较低。无论哪种类型,引入测试管理平台以支持测试需求、设计、缺陷管理...

    软件测试笔试试题

    2. **集成测试**:在所有模块通过单元测试后进行,主要关注模块间的接口问题,确保各模块组合起来能够协同工作。 3. **系统测试**:测试整个系统的功能和非功能性需求,确保系统作为一个整体能够满足预定的目标和...

    Chapter-8-Software-Testing.rar_software testing

    然而,选择合适的自动化工具,设计可维护的测试脚本,以及平衡自动化与手动测试的投入产出比,都是测试自动化过程中的挑战。 8. 缺陷管理:发现缺陷后,需要通过缺陷跟踪系统记录、分类、优先级排序并跟踪直至解决...

Global site tag (gtag.js) - Google Analytics