`
ruby_windy
  • 浏览: 62530 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

测试与开发的未来

阅读更多
今天与何老大的一些交流,引发一些心中很久的感想表达一下,主要是针对我们开发过程一些幻想,最后给出实现的规化方式.

1. 云开发平台
   我们开发人员整天忙忙碌碌,重复最多的就是编写代码->编译->简单测试->改代码->编译...

   云开发平台正是为解决这个问题而来,它是什么呢?
   所谓云,就是对使用者透明,所谓云开发平台,是指对我们开发人员(测试人员)几乎透明的编译调试环境.
   你要做什么?
      告诉它你的项目地址,告诉它你的编译方式.
   它帮你做什么?
      1. 监控你的项目,有提交时帮你编译,返回编译结果.
      2. 准备环境,提供一个云端返回的编译完成的主机(我们的测试机),可以登录ssh进行测试.


2. 开发过程自动化测试
  我们现在正在测试前移,甚至在需求阶段介入,我这里不关注需求的测试方法,只说测试前移怎么去做? 我们现在在强调前期的代码审查测试,前期的逻辑检查,这些属于白盒但是静态检视,我以为这些可以去做好,但仅仅对前期测试来说能暴露的问题有限,更多的时候需要靠更多的编码经验.
  而开发人员在编码时更多的时间花费在调试(大约80%不为过),这部分工作实际上可以减少很多,而且大家也知道,如果更多的时间用来设计与编写高质量代码,测试的工作量也会更少,能够有效提高整个研发效率,而现在的问题是,开发不知道如何利用工具改进开发过程.
  开发过程自动化测试是指,提供一种易用性框架,利用自动化测试优势,将过程的重复工作实施自动化测试,将每次都需要验证的测试点实现自动化验证.
  效果是:
     开发设计完成,开发编码.
     测试前移,准备测试点,编写自动化用例.
     利用某一个统一的平台进行交付自动运行.
  难点一: 对测试人员要求较高,但我们可以培养.
  难点二: 对开发有一定惯例限制,但每一次的限制用的好可以带来更大的自由(好处). 像如今满大街的智能机不是对键盘的限制使用吗?

最后一点,也是最宏大的:

3. 研发管理平台:
  越来越多的流程,越来越繁琐的文档,越来越混乱的IT系统,经常这个账号记不清另一个账号无法登录的.
  申请序列号这种小事都需要助理来处理,试想我们如果有一套完善的认证系统不可以自动下发序列号吗? 系统会记录的更清楚.使用的人也会得到最快速的响应.
  开发改了需求没有通知我!!!
  忘了xx文档的svn地址了!!! 找其他人问还十分不好意思,有时候还得不到立刻答复,又影响他人.
  SQA累死累活的跑路收集各种信息,但却依然可能受到大家的数据置疑.
  一项流程更新,通报了全研发体系却大部分的人在真正执行时仍然遗忘.
  ...

  问题已经比较突出了.我们应该怎么做?
  研发管理平台,正是我们的需要.
  它的核心功能:
  1. 统一接入认证体系.保证内网安全可靠,并提供完善的日志.
  2. 集成研发流程,提供从需求到发布的过程跟踪. 可强制限定开发经理与测试经理的活动. 并做到智能提醒.( 试想,每天我作为开发经理只需要登录一下系统就知道接下来该干什么, 每天只需要一次提交每日进展即可,并可随时查询项目成员的代码提交质量; 而项目责任人无需过多信息,通过研发管理平台即可收集到项目的信息)
     例如,需求过程可以简化, 只需要一次录入需求, 以后每次需求变更,所有相关人员自动接受邮件,任何需求过程均被记录,系统发布前提供需求完成情况,自动形成可发布文档.
  3. 集成自动化测试, 提供统一的静态扫描并与ATM做接口.提供数据仓库可以随机构建有效数据,提供虚拟化硬件平台,任何人在需要的时候一键获取测试主机进行快速接入验证.
  4. 具备数据分析甚至挖掘能力,提供一定的SQA职责,供决策使用.

我们来初步分析一下,

1. 云开发平台
   实现难度: 中(监控svn应该不成问题, 提供调试编译环境,这点可通过部门虚拟设备解决,我们自动化已经基本解决虚拟设备实现克隆,开启,关闭,甚至修改ip,执行任何命令的操作,剩下的就是工作量与需求问题, 其他难度在于解决不同环境部署的约束)
   实现工作量: 低
   实现效果: 能够节省每个开发人员的重复操作并易出错的问题.
   限制: 需要开发人员配合实现代码文件存放和命名约束,以及相关需求细化.

2. 开发过程自动化测试
   实现效果: 大规模提高发包与测试回归速度
   实现难度: 中
   实现工作量: 中( 在于如何设计一个简单易用的框架来快速编写和执行自动化,这里与ATM平台不同的在于它是轻量级,更易于完成非关键字级的验证.并支持更多的语言. )

3. 研发管理平台
   实现效果最佳.
   这个就不分析了,可以通过分步去做.

为什么想到这些?
首先,测试与开发是分不开的. 我们测试的目的,保证版本质量,另一个也十分重要的在于提高测试效率.
开发的目的,快速高质量发布新版本,高可维护. 细致一想,提高测试效率不简单在于测试过程,而是整个开发过程; 而高开发快速发布一部分依赖于测试的快速测试,除了高可用的架构以外,依赖于快速有效的自动化,依赖于高效率的工具.
不然,开发每次迭代10%开发,测试验证110%的功能局面无法得到任何改变,我们又苦又累却得不到结果.
为什么单元测试在我们项目中实施失败?
1. 没有好用的工具, 如果有一个只需要写业务测试代码的单元测试框架被牛人整合出来,何担心没人去用?
2. 没有明确的目标,或对目标效果要求太紧. 我们缺乏十分有效的数据度量,缺乏有经验的人,仅仅靠人的自觉基本上很难推行这些项目走向成功.

关于开发语言,
大多数人就像大多数人一样倾向于选择大多数人使用的语言, 而谓之于"最佳实施"...
而如果我说,学一门脚本语言吧,你可能会说, 没听说过图灵等价吗?( 意指 任何计算机语言的表达能力是等价的,一门语言可以完成的事件,理论说另一门语言肯定可以完成) 脚本语言啊,太弱了吧? 不能开发大项目吧?
实际上,目前是Lisp类的语言的天下,从perl开始, python, ruby已经不只是开发小型项目了.大家都在使用vCenter的时候,知道它是什么写的吗? 实际上,它的web页到启动脚本均用的python. javascript已经火了N久了,最近的Node.js把它从前端发展到后端.
是什么原因? 高效的开发效率, 强大的表达能力, 越少的代码往往意味越少的维护成本.有兴趣的同学可以关注下<<黑客与画家>> 作者是硅谷的投资之父,揭秘了viaweb快速开发的秘密.

我们可以尝试部分内部项目采用它.


关于开发效率, 最近关注:
github.com(一个git托管平台) 开发语言rails,python,ruby 开发周期,3个人3个月上线(2008年), 目前管理项目5000万
zhihu.org(一个知乎类似的问答) 开发语言rails, 开发周期1周2个人.
淘宝运维平台(内部)(一键发布平台,目标:关闭运维部门,说笑了,这个正是运维部门在做:) ) 开发语言rails, 开发周期6个月1个人,目前基本上线.

如何充分利用动态语言的开发效率可以在这些内部项目更快的发布与维护.

说这样好像与上面没关系啊, 就像老大说的,没有人限制你要做什么. 能够达到目标的一切措施都可以试试.

以上一点想法,吐吐为快.
分享到:
评论

相关推荐

    测试与开发约定

    ### 测试与开发约定知识点详解 #### 一、引言 在软件开发过程中,测试团队与开发团队的有效协作是确保产品质量的关键。为了更好地规范双方的工作流程,提高沟通效率,特制定了《测试与开发约定》这一指导性文件。...

    Testing Training 测试开发教程

    此外,测试开发还涉及缺陷管理,如何记录、跟踪和优先级排序问题,以及与开发团队的有效沟通。良好的文档和报告习惯可以帮助团队更好地理解测试结果,从而做出明智的决策。 总的来说,“Testing Training 测试开发...

    测试驱动开发的艺术测试代码

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际功能代码之前先编写测试代码。这种做法有助于确保软件的质量,减少bug,并提高代码的可维护性。在“测试驱动开发的艺术”中,...

    敏捷软件开发与测试过程

    ### 敏捷软件开发与测试过程 #### 一、引言 随着信息技术的快速发展,软件开发领域面临着越来越多的挑战,包括需求变化频繁、项目周期缩短等。为了应对这些挑战,敏捷开发方法应运而生。敏捷开发强调的是快速响应...

    测试驱动的面向对象软件开发

    将面向对象的设计原则与测试驱动开发相结合,可以在保持代码结构清晰的同时确保高质量的实现。 ### 结合TDD和OOP 在面向对象的上下文中实施测试驱动开发可以带来多重好处: 1. **易于理解和维护**:通过使用类和...

    测试驱动开发 by example.rar

    测试驱动开发(Test-Driven Development,简称TDD)是一种软件开发方法,强调在编写实际代码之前,先编写单元测试。这种做法旨在提高代码质量、减少缺陷,并促进更好的设计。"测试驱动开发 by example"这个资源可能...

    软件开发测试流程整理

    在这个阶段中,测试人员会执行测试计划中的各个测试用例,并将实际结果与预期结果进行比较,记录软件在哪些方面与需求不符或存在问题。 4. 测试总结:测试总结阶段是对整个测试活动进行回顾和评估,输出测试报告和...

    中北大学软件开发与测试实验报告

    **中北大学软件开发与测试实验报告** 在中北大学的软件开发与测试课程中,学生将深入学习软件生命周期中的各个关键环节,包括需求分析、设计、编码、测试以及维护。这个实验报告是评估学生对这些概念理解和实践能力...

    fpga验证与测试 fpga开发.pdf

    FPGA(Field-Programmable Gate Array)验证与测试是FPGA开发过程中的关键步骤。作为一名FPGA开发工程师,掌握FPGA验证与测试的技术是非常重要的。本文将从FPGA验证与测试的重要性、性能测试、CDC和状态机的安全性、...

    各种开发测试以及报告文档

    在软件开发过程中,测试、概要说明、月报和用户手册是至关重要的组成部分。这些文档不仅确保项目的顺利进行,还提供了清晰的沟通渠道,保证团队成员、管理者和最终用户对项目有深入的理解。 首先,测试是软件开发的...

    行业文档-设计装置-云测试开发平台及云测试开发方法.zip

    在当前的IT行业中,云测试开发平台和云测试开发方法是至关重要的技术领域,它们极大地推动了软件开发的效率和质量。...随着技术的不断进步,我们可以期待云测试开发在未来的软件开发中发挥更大的作用。

    测试人员应对开发人员的几个要点

    9. **持续学习与改进**:测试人员应该不断学习和适应新的测试方法,提高测试效率,同时也帮助开发人员改进他们的编码实践,以减少未来的问题。 总的来说,测试人员与开发人员的关系不应是冲突的,而应是互补的。...

    基于微信小程序的在线测试开发.docx

    ### 基于微信小程序的在线测试开发 #### 核心知识点概述 本文将围绕“基于微信小程序的在线测试开发”这一主题展开讨论,重点分析微信小程序作为一种新兴的应用开发平台,在线测试系统的实现方法和技术要点,并...

    基于国产CPU及OS的装备软件测试设备开发平台(ETestDev).docx

    ETestDev是一款专为装备软件测试设备开发设计的平台,其核心优势在于它基于国产CPU和操作系统,确保了系统的自主可控性。这一平台广泛适用于航空航天、军事装备、工业控制、汽车电子以及仪器仪表等多个领域,提供了...

    自动化测试工具开发的关键性技术简述

    本文档详细介绍了自动化测试工具开发中的关键性技术,涵盖总体架构、分析器开发、主要功能模块的开发以及未来的技术创新方向。 ### 3.1 自动化测试工具开发的总体架构 #### 3.1.1 自动化测试工具的总体框架 自动...

    20220基础测试开发视频教程大厂版

    通过系统学习,学员不仅能够胜任当前市场上的测试开发职位,还能为未来职业生涯的进一步发展打下坚实的基础。随着技术的不断进步,测试开发工程师的角色将会变得更加重要,掌握自动化测试技能将是迈向成功的关键一步...

Global site tag (gtag.js) - Google Analytics