将面向对象的思想带入TC

写TC貌似是很简单的工作,但当动手写的时候往往会出现,不知道写什么,又感觉有一堆的东西需要写,即使一个简单的日常也会觉得里面的逻辑非常复杂,然后就是晕得不知所向。
  个人认为,写TC没有固定的模式,也没有唯一的答案,每个人的方式不同,习惯不同,TC中的如何分类归纳也就自然不相同。但目标是一致的,基本目标是覆盖需求、无盲区;加强目标是加深测试点,完善用户友好性等。

  下面分享下我写TC的几种思路。

  第一种思路——先对象,后流程

  面向对象是在平常入门学习中 首先接触到的概念,它不仅仅存在于代码的编写中,更存在于我们的工作方式和方法中。首先分析需求中涉及到哪些对象,比如页面是一个对象,对它加以细化,页 面大对象可能又分为新增页面,修改页面,删除页面和查询页面等,或者从功能上划分为卖家页面、小二页面等。分析完后再层层细化,比如新增页面包含的哪些文 本的输入框,单选/多选项、日历控件,以及它们之间操作的优先级,错误提示的优先级等等,再洗化到各个控件本身的限制检查,如单行文本最长和最短的校验长 度是多少,非法字符校验等。

  当所有对象类信息完成后,再考虑这些对象之间的流程关系,比如对用户身份审核的操作必须建立在用户身份信息 已创建之后,或者信息被修改后。不光是需要校验正常的操作流程,还需要花大精力放在异常流程的操作上,比如用户在填写信息时,突然中断了操作,这样的情况 通过什么样的流程去处理。因此这里的流程,应该是包括正常流、异常流及扩展流(需求中未涉及,但测试人员基于用户友好或者性能方面考虑需要加入的流程)。

  回过头想一想,我们说,把面向对象的思想带入TC,那面向对象又体现在什么地方呢,难道仅仅是分类么?NO!

   我们是不是经常会在写TC中碰到这样的问题,比如某些项目中,进行查看和修改时,发现自己看到的是相同的页面,也就是可能在做不同操作流程的时候发现到 达了相同的一个出口,那对于这N个流程是否需要写N个平行的TC,是否可以把某部分写成公共模块以提高效率,避免冗余呢。

  第一种思路可 能会有同学觉得很麻烦,很容易复杂化,确实是的,因为大家平常做项目或日常时,至少是有页面或者页面大概的原形,如果需求是很模糊的,又或者客户也不知道 具体是要做成什么样的,同时客户又希望能快速立项的情况下,可以使用这种方式,其实在这样的过程中,测试人员无形中担当了架构的角色,并且能帮助开发完善 产品。

  第二种思路——先流程,再对象

  这种思路,要求是页面设计到位,至少是大概的原形具有,然后对着原形写TC。

   从打开的第一个页面开始层层深入写,比如首先是用户登陆,然后是主展示页面,再可能是搜索宝贝等,先把流程正常流程建立好,然后将这些流程细化,如用户 登陆是否采用弹出窗口,窗口的位置、大小,窗口中的表单项是否完整,如是不是缺少验证码项,再考虑某一项的校验,如用户名是否为单行文本,长度限制多少, 非法字符限制,是否为必填项(不填是否有提示)等。

  使用这种思路的时候,切记至少要包含几类信息:页面总体展示、表单项完整性、表单项正确性、表单项可操作性(独立操作和组合操作)、表单项非法校验、及当前页面的其他跳转出口(如点击“登陆”,在用户输入的信息正确的情况下,应跳转到主展示页面)。

  这种思路可能使用的同学比较多,至少我是经常用的。这里实际上还是把页面当成了大对象,当出现多类页面跳转到相同页面上去的时候,这个相同页面就可以作为公共部分来使用了。

  记得在学校里学习这些原理的时候,对它的用法感悟不深刻,出来工作以后发现,其实很多思想就穿插在平时的应用中,所以有一句话很欣赏:解决问题,思路很重要,技术在其次。

  以上是对于写TC思路的一些个人看法,有不足之处还请大家指正。

本文出自seven的测试人生公众号最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-09-24 12:48:21

将面向对象的思想带入TC的相关文章

Silverlight游戏设计:(五)面向对象的思想塑造游戏对象

传说,面向对象的开发模式最初是因为程序员偷懒而不小心诞生的.发展至今,人们从最初的热忠于 讨论某某语言是否足够面向对象到现在开始更广泛的关注面向对象的思想而不是具体内容.面向对象的思 想其实并不深奥,它存在的目的只有一个:让程序开发更贴近我们的现实世界. 还记得猫.猫叫:狗.狗吃东西吗?无数的程序员都喜欢将此类似的情形设计当作面向对象最好的例 子.是的,非常生动且形象:但实际运用中你是否能真正做到举一反三? 回述到游戏设计中,大家是否时常会感觉游戏世界与我们的真实世界如此贴近?游戏中的精灵好比我

java语言学习002_面向对象编程思想

      人类在认识世界时,为了方便自己和智慧提升,很自然的对事物进行了分类.对世界进行了抽象,若把所有各个事物看做对象,纵观所有对象,这些对象具有各自的或共有的特征,并且又有共有的或各自的的能力,这样就可以对具有相同一些特征和一些能力的事物进行了归类.       比如,车,有汽车,火车他们都有哪些属性?                  汽车,特征:长度,颜色,速度,轮胎,载重,平面行走--能力:移动,载东西,--                  火车,特征:长度,颜色,速度,轮胎,载重

013_《Delphi面向对象编程思想》

<Delphi面向对象编程思想> Delphi 教程 系列书籍 (013) <Delphi面向对象编程思想> 网友(邦)整理 EMail: shuaihj@163.com 下载地址: Pdf 作者: 刘艺 [作译者介绍] 丛书名: Borland核心技术丛书 出版社:机械工业出版社 ISBN:7111127722 上架时间:2003-10-10 出版日期:2003 年9月 开本:16开 页码:476 版次:1-1 内容简介 这是一本纯粹讨论dlephi面向对象编程的力作. 本书以精

求助、面向对象的思想查找字符串中的数字

问题描述 要用面向对象的思想来查找字符串中的数字.实现判断某个字符是否位数字的方法如下:publicstaticboolgetNumeric(stringstr){boolb=false;string[]ArrayInt=newstring[]{"1","2","3","4","5","6","7","8","9","

重温面向对象的思想——构造器和重载

1.this关键字 this表示这个对象的参考名称:例如this.age1=age2;表示将age2的值,赋值给这个对象的私有属性age1. 2. .重温面向对象的思想--构造器和重载 构造器:创建一个对象时,有时候需要对在实例化一个对象时,对这个对象进行初始化,这个时候我们就需要构造方法来进行这种初始化. 重载:当这种初始化需要按照不同的语境,不同的参数的构造器来进行初始化. 总结--方法的重载是多种构造器,用以完成不同的初始化. -注意:构造器==构造方法,两者一样 3.构造方法和自定义方法

重温面向对象的思想OOP——封装

面向对象的思想OOP--封装 对象的封装: 封装的目的:隐藏对象的内部细节,将对象进行黑箱操作.用户是不知道对象的内部细节的,同样的道理,用户也不知道你定义的方法. 说明:一个对象(类)的属性,这个属性必须一定是私有属性,用户一定不能直接获取得到属性,必须通过你定义的工程来操作数据(设置.得到), 标准格式:通过定义私有属性的Set方法和Get方法来分别设置.得到私有属性. package demo; public class Student { private double schoolCod

全方位讲解Java的面向对象编程思想_java

什么是面向对象?Object 对象,Oriendted 以-为导向的, Programming 程序设计 面向对象就是使用对象进行程序设计,简写成OOP. SP和OOP对比 面向对象的三大原则      封装  继承   多态 对象 对象是面向对象编程的核心部分,是实际存在的具体实体,具有明确定义的状态和行为: 对象其实就是"数据"和"函数"的封装体,其中: 数据表示自身的状态,也称作"属性"或"成员数据": 函数表示自身的功

面向对象设计思想(C#)

       有了翅膀才能飞,欠缺灵活的代码就象冻坏了翅膀的鸟儿.不能飞翔,就少了几许灵动的气韵.我们需要给代码带去温暖的阳光, 让僵冷的翅膀重新飞起来.结合实例,通过应用OOP.设计模式和重构,你会看到代码是怎样一步一步复活的. 为了更好的理解设计思想,实例尽可能简单化.但随着需求的增加,程序将越来越复杂.此时就有修改设计的必要, 重构和设计模式就可以派上用场了.最后当设计渐趋完美后,你会发现,即使需求不断增加,你也可以神清气闲,不用为代码设计而烦恼了.       假定我们要设计一个媒体播放

数据结构模版----单链表SimpleLinkList[带头结点&amp;&amp;面向对象设计思想](C语言实现)

链表中的数据是以节点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据.以"结点的序列"表示线性表称作线性链表(单链表) 单链表是链式存取的结构,为找第 i 个数据元素,必须先找到第 i-1 个数据元素. [cpp] view plain copy print? #include <stdio.h>   #include <stdlib.h>   #include <