转型你准备好了吗—京东质量团队转型实践(1)

发表于:2018-11-16 13:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:京东研发虚拟平台    来源:51Testing软件测试网原创

  第1章   转型你准备好了吗
  1.1、软件测试
  首先要明确一个概念,"质量"是整个团队的责任而不是仅仅靠团队中测试人员就能够明显改善的。测试的目的是什么?测试不是要证明系统或者软件没有问题,恰恰相反,而是要证明其存在问题。进行测试可以发现缺陷,但不能保证软件或者系统的缺陷全部被找到,继续深入测试可能还会找到缺陷。在有限的时间和资源条件下,想要进行完全的测试,找出软件或者系统所有的缺陷,使之达到完美,是不可能的。此外,测试也是有成本的,越是测试后期,为发现缺陷所付出的代价就会越大,因此也要根据测试错误的概率以及软件的可靠性要求,确定最佳停止测试时间,我们不能无限地测试下去。除此之外,所有的测试都应追溯到用户需求,这是因为软件或者系统的最终目的是满足用户需求。
  1.1.1、什么是软件测试
  1983年,Bill Hetzel 在《软件测试完全指南》(Complete Guide of Software Testing)一书中指出:"测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量"。Hetzel的定义至今仍被引用。1991年,软件产品质量评价国际标准ISO 9126中定义的"软件质量"是:软件满足规定或潜在用户需求特性的总和。1999年,软件"产品评价"国际标准ISO 14598经典的"软件质量"定义是:软件特性的总和,软件满足规定或潜在用户需求的能力。2001年,软件"产品质量"国际标准ISO 9126定义的软件质量包括"内部质量""外部质量"和"使用质量"3个部分,也就是说,"软件满足规定或潜在用户需求的能力"要从软件在内部、外部和使用中的表现来衡量。
  在《软件评测师教程》这本教科书式的考试辅导书中,对软件测试和质量保证做了详细的区分和描述:测试工程师的一项重要任务是提高软件质量,但不等于说测试工程师就是软件质量保证人员,因为测试只是质量保证工作中的一个环节。测试工程师并不生产质量,质量的生产者还是开发工程师。质量保证和软件测试是软件质量工程中的两个不同层面的工作。
  质量保证(QA):质量保证的主要工作是通过预防、检查与改进来保证软件质量。QA采用"全面质量管理"和"过程改进"的原理开展质量保证工作。虽然在QA的活动中也有一些测试活动,但所关注的是软件质量的检查与测量。QA的工作是对软件生命周期的管理,以及验证软件是否满足规定质量和用户需求的过程,因此主要着眼于软件开发活动中的过程、步骤和产物,而不是对软件进行剖析以找出问题或评估。
  软件测试:虽然测试也与开发过程紧密相关,但关心的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。测试人员要"执行"软件,对过程中的产物--开发文档和源代码进行走查,运行软件,以找出问题,报告质量。测试人员必须假设软件存在潜在的问题,测试中所进行的操作是为了找出更多的问题,而不仅仅是为了验证每一件事是正确的。对测试中发现的问题的分析、追踪与回归测试也是软件测试中的重要工作,因此软件测试是保证软件质量的一个重要环节。
  在20世纪90年代,,随着测试工具的盛行,测试工程师逐渐地意识到通过强化工具来解决问题的重要性,工具思维在测试工程师的心里已经变成了重要的思考问题的形式,但是这里的工具思维是指使用工具的思维,还没有出现创造工具的思维。
  软件测试的存在是为了保障软件的质量而存在的一项服务,软件测试只能证明一个软件存在缺陷,却不能证明一个软件没有缺陷。随着生命周期的成熟度的提升,持续集成乃至开发运维的变迁,软件测试不仅仅停留在保证软件质量的目的之上了,保证软件质量、提高交付频率变成了相辅相成的目标。保证软件质量是基础目的,提高交付频率是根本目的。
  软件测试是为了寻找软件的缺陷和错误,提高软件的质量和交付频率,因此所有软件测试都应该可以溯源到用户需求,无论是用户明确的显性需求,还是一些系统安全、系统兼容、性能等的隐性需求。
  1.1.2、业务测试
  人们如今在网络上可以方便地购买各种各样的物品,不仅限于实物,还有各种虚拟物品,也可以很方便在网络上进行购买,如飞机票、火车票和电影票等。与此同时,人们还可以很方便在网络上缴纳各种生活中所需要的费用,如手机充值,缴纳电费和水费等。
  从物品的查找,再到用户支付成功,最后用户收到物品或者充值面值的筛选,充值成功,这一系列的流程都属于电子商务的一个具体的业务,那么如何进行业务测试呢?笔者所在团队主要是从事电商网站的虚拟业务的功能测试,下面就笔者所在团队的工作内容展开详细介绍。
  业务测试,侧重点放在业务流程上,在基本的功能点都已合格的基础上,准备并组合多种测试数据,驱动或辅助在各种约束条件下的业务流程测试,确定最终输出的结果是否符合预期。业务测试多数要结合实际业务逻辑,黑盒、白盒、灰盒这些测试方法都可以用来辅助测试。业务测试并不能单单满足于功能实现,更要站在真实用户使用的角度提出问题、给出建议,从而优化程序。
  如何开展业务测试呢?测试前置在行业内越来越多地被提及,在功能测试中,测试也应做到前置,不能等到系统全部提测了再介入测试。
  1.需求测试
  越早发现缺陷,其修复的成本就越低,那么缺陷最早能在什么时候被发现呢?毫无疑问,是在需求最早提出的时候,当一个需求被提出,作为测试人员不能认为提出的需求是完全正确没有问题的,需要对需求设计的正确性、合理性及实施性进行测试,尽早发现需求中的问题并跟进解决。在需求阶段发现的问题修复成本很低,也是在源头保证质量的有效手段。需求测试图如图1-1所示。
  
图1-1 需求测试图
  2.设计测试
  当需求测试结束,问题得到解决,需求被确定下来后,就进入了设计阶段,此阶段分成两部分,一是开发人员进入设计阶段,二是测试人员进入设计阶段。开发人员的设计阶段不在此处讨论,测试人员的设计除包含常规的测试计划、测试用例和测试准备等工作外,应同时包含对系统的设计。介绍到这里,肯定有读者会有疑问:开发人员已经在进行系统设计,测试人员再进行系统设计是不是多此一举?测试人员的设计会不会得到认同?测试人员在此处的设计的要求不同于开发人员的设计,不对具体形式做要求,此处测试人员进行系统设计的意义在于让测试人员对即将被测的系统有一个自己独立的思考过程,只有测试人员自己也对需求进行相应的独立的系统设计,才能找到开发人员设计的问题,将测试工作前置,降低缺陷修复的成本。
  设计测试应注重检查系统设计的3个特性,如图1-2所示。
  1)必要性:每处设计要有目的,要为满足需求而设计,不能存在无谓的设计。
  2)正确性:检查每处设计是否正确、合理,是否能够实现想要实现的功能。
  3)最优性:检查每处设计是否为相对简单、高效的设计。
 
 图1-2 设计测试图
  3.过程测试
  过程测试是功能测试中的重点,也是缺陷集中发现的阶段。在系统测试开始之前,测试人员需要完成测试数据的准备,以及测试计划、测试用例的设计,并经过项目组成员评审通过。评审过程有两个目的,一是为了弥补测试设计中遗漏的地方,二是项目组成员达成共识,认可测试设计以避免后期不必要的麻烦。
  在过程测试的实施过程中,笔者所在团队采用了分层测试、外部解耦、流程仿真等手段保证系统质量,如图1-3所示。
  
图1-3 过程测试图

版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号