做产品与做项目的区别

  • 驱动因素:
    • 做项目:侧重于在最短的时间内,按照客户的需求开发出操作敏捷,用户体验良好的软件。
    • 做产品:侧重于市场驱动,时间相对充足,但要开发出有竞争力,有自身特色,且受客户欢迎的产品,要求功能响应速度快,操作简单,界面美观。
  • 质量要求:
    • 做项目:根据客户的要求进行定制开发,一定要满足与客户在合同中协定的质量要求。
    • 做产品:需要适应或囊括当前行业可能涉及的需求,其产品必须具有竞争力,操作敏捷,不断的升级换代
  • 时间投入:
    • 做项目:在客户规定的时间内完成软件开发,并要求质量达标。
    • 做产品:没有具体时间限制,但要求不断的升级换代。

什么是软件测试(英语:Software Testing)

描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。

  • 软件测试的目的:发现软件错误

  • 调试(Debug):确保程序做了程序员想它做的事情

  • 测试(Testing):确保程序解决了它该解决的问题

    • 软件测试与软件调试的区别
      • 软件测试:是软件测试人员和程序员都参与的一项工作,是贯穿整个生命周期的,只需要发现软件的错误
      • 软件调试:主要是程序员自己参与,对程序(设计、编码)进行修改、排除错误,主要是在开发阶段
  • 一个好的测试用例能够发现至今尚未发现的错误

  • 一个成功的测试是发现了一个至今尚未发现的错误

软件生命周期

项目的周期:

  • 项目的启动
  • 需求的调研分析(可行性研究报告,需求规格说明书)
  • 功能设计(概要设计,详细设计)
  • 编码
  • 测试
  • 项目验收交付
  • 后期维护

软件产品的周期:

  • 产品构思
  • 投资开发
  • 初级版本
  • 客户使用
  • 根据客户反馈与技术的进步
  • 对产品进行不断的升级

项目组成员及相关工作

  • 产品经理:收集需求反馈、建立产品、整理需求
  • 项目经理:立项、计划、关联产品、关联需求等
  • 设计人员:设计系统架构、概设、详设
  • 开发:编码
  • 测试人员:设计用例、执行测试、提交bug
  • 配置管理员:部署系统
  • QA:贯穿全过程,制定规范、辅助、审计

软件测试的对象

  • 文档:需求分析、概要设计、详细设计等各阶段文档。
  • 程序:单元测试、集成测试、确认测试、系统测试等。
  • 数据:输入与输出

测试的基本原则

  1. 测试应基于用户需求

  2. 做好软件测试计划是做好软件测试工作的关键

    • 测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试

      工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等以及评价标准。另外,回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。

  3. 应尽早的开始软件测试并不断的进行软件测试

  4. 测试前必须明确定义好产品的质量标准

  5. 避免测试自己的软件

  6. 应充分注意测试中的集群现象:

    一般来说,一段程序中已发现的错误数越多,其中存在的错误概率也就越大。

  7. 必须检查每个实际输出结果

  8. 穷举测试是不可能的: 由于时间和资源有限,应避免冗余测试

  9. 测试设计决定了测试的有效性和效率

  10. 注意保留测试设计和说明文档,并注意测试设计的可重用性 为维护等提供方便

软件开发模型

研发模型 —瀑布模型

瀑布模型

瀑布模型强调文档的作用,并要求每个阶段都要仔细验证。但是,这种模型的线性过程太理想化,已不再适合现代的软件开发模式,几乎被业界抛弃,其主要问题在于:

  1. 各个阶段的划分完全固定,阶段之间产生大量的文档,极大地增加了工作量;

  2. 由于开发模型是线性的,用户只有等到整个过程的末期才能见到开发成果,从

    而增加了开发的风险;

  3. 早期的错误可能要等到开发后期的测试阶段才能发现,进而带来严重的后果。

研发模型—快速原型

快速原型

快速原型方法可以克服瀑布模型的缺点,减少由于软件需求不明确带来的开发风险,具有显著的效果。

快速原型的关键在于尽可能快速地建造出软件原型,一旦确定了客户的真正需求,所建造的原型将被丢弃。因此,原型系统的内部结构并不重要,重要的是必须迅速建立原型,随之迅速修改原型,以反映客户的需求。

研发模型— 敏捷模型

敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。Scrum是一个增量的、迭代的开发过程

敏捷模型

在迭代过程中,Scrum团队从产品功能列表中挑选最高优先级的需求进行开发。

在每个迭代结束时,Scrum团队将递交潜在可交付的产品增量。

软件测试模型

测试模型— V模型

V模型

  • 优点:既包括低层测试又包括了高层测试,低层测试是为了源代码的正确性,高层测试是为了使整个系统满足用户的需求。

  • 局限性:把测试过程作为在需求分析、概要设计、详细设计及编码之后的一个阶段,不能体现“尽早地和不断地进行软件测试”的原则

测试模型— W模型

W模型

  1. 优点:

    • 如果测试文档能尽早提交,那么就有了更多的检查和检阅的时间,这些文档还可用于评估开发文档。

    • 测试者可以在项目中尽可能早地面的规格说明书中的挑战。

    • 测试还可以尽可能早地找出缺陷所在,从而帮助改进项目内部的质量。

    • 标注了生产周期中开发与测试之间的对应关系

  2. 局限性:需求,设计,编码等活动被视为串行的,测试和开发活动保持着一种线性的前后关系,无法支持迭代的开发模型

测试模型— H模型

H模型

  1. 优点:H模型下的测试是一个独立的流程,贯穿产品整个生命周期,与其他流程并发地进行,不同的测试活动可以是按照某个次序先后进行的,只要某个测试达到准备就绪点,执行测试就开始进行,具有很强的灵活性