转自【http://qa.taobao.com/?p=8256 】
写TC貌似是很简单的工作,但当动手写的时候往往会出现,不知道写什么,又感觉有一堆的东西需要写,即使一个简单的日常也会觉得里面的逻辑非常复杂,然后就是晕得不知所向。
个人认为,写TC没有固定的模式,也没有唯一的答案,每个人的方式不同,习惯不同,TC中的如何分类归纳也就自然不相同。但目标是一致的,基本目标是覆盖需求、无盲区;加强目标是加深测试点,完善用户友好性等。
下面分享下我写TC的几种思路。
第一种思路——先对象,后流程
面向对象是在平常入门学习中首先接触到的概念,它不仅仅存在于代码的编写中,更存在于我们的工作方式和方法中。首先分析需求中涉及到哪些对象,比如页面是一个对象,对它加以细化,页面大对象可能又分为新增页面,修改页面,删除页面和查询页面等,或者从功能上划分为卖家页面、小二页面等。分析完后再层层细化,比如新增页面包含的哪些文本的输入框,单选/多选项、日历控件,以及它们之间操作的优先级,错误提示的优先级等等,再洗化到各个控件本身的限制检查,如单行文本最长和最短的校验长度是多少,非法字符校验等。
当所有对象类信息完成后,再考虑这些对象之间的流程关系,比如对用户身份审核的操作必须建立在用户身份信息已创建之后,或者信息被修改后。不光是需要校验正常的操作流程,还需要花大精力放在异常流程的操作上,比如用户在填写信息时,突然中断了操作,这样的情况通过什么样的流程去处理。因此这里的流程,应该是包括正常流、异常流及扩展流(需求中未涉及,但测试人员基于用户友好或者性能方面考虑需要加入的流程)。
回过头想一想,我们说,把面向对象的思想带入TC,那面向对象又体现在什么地方呢,难道仅仅是分类么?NO!
我们是不是经常会在写TC中碰到这样的问题,比如某些项目中,进行查看和修改时,发现自己看到的是相同的页面,也就是可能在做不同操作流程的时候发现到达了相同的一个出口,那对于这N个流程是否需要写N个平行的TC,是否可以把某部分写成公共模块以提高效率,避免冗余呢。
第一种思路可能会有同学觉得很麻烦,很容易复杂化,确实是的,因为大家平常做项目或日常时,至少是有页面或者页面大概的原形,如果需求是很模糊的,又或者客户也不知道具体是要做成什么样的,同时客户又希望能快速立项的情况下,可以使用这种方式,其实在这样的过程中,测试人员无形中担当了架构的角色,并且能帮助开发完善产品。
第二种思路——先流程,再对象
这种思路,要求是页面设计到位,至少是大概的原形具有,然后对着原形写TC。
从打开的第一个页面开始层层深入写,比如首先是用户登陆,然后是主展示页面,再可能是搜索宝贝等,先把流程正常流程建立好,然后将这些流程细化,如用户登陆是否采用弹出窗口,窗口的位置、大小,窗口中的表单项是否完整,如是不是缺少验证码项,再考虑某一项的校验,如用户名是否为单行文本,长度限制多少,非法字符限制,是否为必填项(不填是否有提示)等。
使用这种思路的时候,切记至少要包含几类信息:页面总体展示、表单项完整性、表单项正确性、表单项可操作性(独立操作和组合操作)、表单项非法校验、及当前页面的其他跳转出口(如点击“登陆”,在用户输入的信息正确的情况下,应跳转到主展示页面)。
这种思路可能使用的同学比较多,至少我是经常用的。这里实际上还是把页面当成了大对象,当出现多类页面跳转到相同页面上去的时候,这个相同页面就可以作为公共部分来使用了。
记得在学校里学习这些原理的时候,对它的用法感悟不深刻,出来工作以后发现,其实很多思想就穿插在平时的应用中,所以有一句话很欣赏:解决问题,思路很重要,技术在其次。
以上是对于写TC思路的一些个人看法,有不足之处还请大家指正。
分享到:
相关推荐
JavaScript被设计成一种彻底的面向对象语言,尽管它的使用和接受过程中发生了发展和变化,吸引了其他如Ruby、Python、Perl等语言的程序员将他们的编程模式带入JavaScript。 JavaScript的面向对象编程与其他支持对象...
本文从什么是面向对象设计、为什么要面向对象设计、面向对象设计要达到的目的、面向对象设计的基本原则等方面讲述了面向对象设计思想...本文特别适合面向对象设计的初学者,可以将你很快带入面向对象程序设计的世界里。
里面包含了java面向对象的核心知识点(封装+继承+多态+反射+jdbc..)还有一些其它的内容,都是很清晰的写出,对于新手小白的学习,是非常友好的,内容很丰富。每一个知识点的讲解,都会包含语法,语法个数如何定义,...
为了将C++带入生活,读者必须考虑面向对象。在编写第一行程序之前,必须尽力的花时间去思考系统的设计、系统的基以及期望由系统所派生出来的解决方案。如果没有考虑面向对象和模块化,那C++这种工具的面向对象强大之...
整个实现过程中,作者通过面向对象的方式将弹出层功能封装在`objDIV`对象中,并通过原型链的方式实现方法的共享,这体现出了良好的代码组织和模块化思想。使用原型链的方法可以让所有的`objDIV`实例共用相同的方法,...
面向对象分析与设计UML课程设计题目及要求.docx 本课程设计旨在让学生初步了解UML语言的概念、结构、语义与表示方法,并掌握UML建模工具Rational Rose的使用方法。通过对简单系统的建模,学生能够熟练地使用Rose...
Win-TC v1.91将DOS时代的Turbo C带入了Windows世界,提供了与DOS版本类似的用户界面,同时充分利用了Windows的图形化特性。这使得程序员可以在熟悉的Windows环境中编写、编译和调试C语言程序,无需再借助DOS模拟器。...
Win-TC则将这个古老的环境带入了现代操作系统,使得用户能够在Windows系统中享受到类似的功能。 Win-TC的主要功能包括代码编辑、编译、链接以及调试。它内置了一个文本编辑器,支持语法高亮,使代码更易读。用户...
半导体将数字家庭带入现实.pdf
用Linux将局域网带入Interne归类.pdf
这份名为“关于员工将备用金带入更衣室的处罚规定”的文档,是针对酒店或其他服务行业制定的一套内部管理规则,旨在防止财产风险,强化员工纪律,并保护公司资产。 一、制度的目的 该规定的首要目标是规范员工的...
新型飞思卡尔QorIQ处理器以中小企业价格标准将企业级特性带入安全网络设备 (2).pdf
让有删除行的PR不带入PO的配置
标题“将人工智能与哲学带入对话”探讨了人工智能伦理领域的发展,强调了将哲学思考融入AI设计的重要性。描述中提到的“思考我们希望如何过我们的生活,什么对我们重要,什么对我们宝贵”暗示了哲学在AI伦理中的核心...
这是基于,这是将ClojureScript和Om中的概念移植到纯JavaScript的建议。 它确实可以工作,但是它的目的更多是一个体系结构概念,而不是一个使您赞叹不已的功能演示。 更广泛的主题是下一代JavaScript框架,它使用...
将罗卡理念带入迪士尼 40辆海格新能源客车服务园区.pdf
阿科玛与布鲁尔科技联合宣布将定向自组装材料带入半导体市场.pdf
【标题】:“电信设备-利用热气球将移动基站带入平流层恢复通讯” 【描述】:在灾难性事件导致地面基础设施瘫痪时,如何迅速恢复通信成为一个至关重要的问题。利用热气球将移动基站带入平流层是一种创新且有效的...
将绿色建筑带入信息时代——访中元国际环境技术总监项卫中博士.pdf
美开发厚度为单原子直径的半导体薄膜 有望将半导体技术带入原子量级.pdf