|
工作中总是遇到一些问题,比如一些BUG在当前版本中已经发现或者解决,可是在下个版本中又出现了。很头疼,你可以说,当然新版本出来的时候,你在检查一下啊?是很好的办法,可以在功能测试的时候,往往,开发组会给你一个模块来测试,测试完成后又给你另一个模块,中间你基本上没有时间来检查以前的BUG。我想最好的办法就是引用自动化测试工具,或者优化自己的测试用例。
现在自动化测试工具以及非常成熟了,几乎可以应用各种各样结构的软件产品中去,这里对测试人员有一个要求就是能熟练使用这些自动化测试工具,用的好,可以提高整体的工作效率,用的不好,反而会耽搁测试过程,就我所熟悉的自动化测试工具,确无法应用到现在的软件测试中去,所以,很郁闷。很多时候,我都觉得是个人能力的问题,只能停留在手动测试上。能做到的事,只有优化测试用例,最大可能的通过用例来发现问题。
一直想找一些适合自己目前情况的自动化测试工具,从学习到使用,需要一个时间段,可悲的是,估计到自己能熟练使用这个自动化测试工具的时候,工作项目可能都已经完成了。
完善的测试用例或许可以弥补这一点的不足,前人留下的各种各样测试方法也给了我们很多帮组,用到最多的可能是等价类划分测试法。
以下是一些等价类划分测试概念
等价类划分是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。
1) 划分等价类: 等价类是指某个输入域的子集合.在该子集合中,各个输入数据对于揭露程序中的错误都是等效的.并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试.因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,就可以用少量代表性的测试数据.取得较好的测试结果.等价类划分可有两种不同的情况:有效等价类和无效等价类.
有效等价类:是指对于程序的规格说明来说是合理的,有意义的输入数据构成的集合.利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能.
无效等价类:与有效等价类的定义恰巧相反.
设计测试用例时,要同时考虑这两种等价类.因为,软件不仅要能接收合理的数据,也要能经受意外的考验.这样的测试才能确保软件具有更高的可靠性.
2)划分等价类的方法:下面给出六条确定等价类的原则.
①在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类.
②在输入条件规定了输入值的集合或者规定了“必须如何”的条件的情况下,可确立一个有效等价类和一个无效等价类.
③在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类.
④在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值分别处理的情况下,可确立n个有效等价类和一个无效等价类.
⑤在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则).
⑥在确知已划分的等价类中各元素在程序处理中的方式不同的情况下,则应再将该等价类进一步的划分为更小的等价类.
3)设计测试用例:在确立了等价类后,可建立等价类表,列出所有划分出的等价类:
输入条件 有效等价类 无效等价类
... ... ...
... ... ...
然后从划分出的等价类中按以下三个原则设计测试用例:
①为每一个等价类规定一个唯一的编号.
②设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步.直到所有的有效等价类都被覆盖为止.
③设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步.直到所有的无效等价类都被覆盖为止.
在很多地方都用到这种方法,或许在工作用大家都一直在用,有过一些模糊的概念,只是不知到这就是等价类划分测试法。一个有经验的测试人员,对这些方法应该是很熟练的,能更好的应用到平时的测试活动中,这就需要一些经验了,可以在平时的工作中多多体会,多动动脑筋,要提高自己的水平,不能只用眼睛去测试,要用大脑去测试,有目的的去做一件事,这样才不会抱怨自己什么都没学到,学习应该是自己努力的一个过程吧,不是别人来教你该怎么做怎么做才是学习。
测试工作最大的问题是如何提高工作的效率,提高效率是在保证质量的前提下进行的,虽然你看起来很忙,每天都不停的在做事,可是没有效率,有很多总可能与原有影响了你的效率,用例中重复部分了太多,导致很多东西重复工作,不但耽误时间,还影响心情。如果你会用因果图来生成测试用例,或许会有很大的帮助,以下为因果图的一些概念
因果图方法最终生成的就是判定表. 它适合于检查程序输入条件的各种组合情况.
利用因果图生成测试用例的基本步骤:
(1) 分析软件规格说明描述中, 那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件), 并给每个原因和结果赋予一个标识符.
(2) 分析软件规格说明描述中的语义.找出原因与结果之间, 原因与原因之间对应的关系. 根据这些关系,画出因果图.
(3) 由于语法或环境限制, 有些原因与原因之间,原因与结果之间的组合情况不不可能出现. 为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件.
(4) 把因果图转换为判定表.
(5) 把判定表的每一列拿出来作为依据,设计测试用例.
从因果图生成的测试用例(局部,组合关系下的)包括了所有输入数据的取TRUE与取FALSE的情况,构成的测试用例数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加.
前面因果图方法中已经用到了判定表.判定表(Decision Table)是分析和表达多逻辑条件下执行不同操作的情况下的工具.在程序设计发展的初期,判定表就已被当作编写程序的辅助工具了.由于它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确.
判定表通常由四个部分组成.
条件桩(Condition Stub):列出了问题得所有条件.通常认为列出得条件的次序无关紧要.
动作桩(Action Stub):列出了问题规定可能采取的操作.这些操作的排列顺序没有约束.
条件项(Condition Entry):列出针对它左列条件的取值.在所有可能情况下的真假值.
动作项(Action Entry):列出在条件项的各种取值情况下应该采取的动作.
规则:任何一个条件组合的特定取值及其相应要执行的操作.在判定表中贯穿条件项和动作项的一列就是一条规则.显然,判定表中列出多少组条件取值,也就有多少条规则,既条件项和动作项有多少列.
判定表的建立步骤:(根据软件规格说明)
①确定规则的个数.假如有n个条件.每个条件有两个取值(0,1),故有 种规则.
②列出所有的条件桩和动作桩.
③填入条件项.
④填入动作项.等到初始判定表.
⑤简化.合并相似规则(相同动作).
B. Beizer 指出了适合使用判定表设计测试用例的条件:
①规格说明以判定表形式给出,或很容易转换成判定表.
②条件的排列顺序不会也不影响执行哪些操作.
③规则的排列顺序不会也不影响执行哪些操作.
④每当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则.
⑤如果某一规则得到满足要执行多个操作,这些操作的执行顺序无关紧要.
熟悉这个东西后我想能对你的工作产生很大的影响,不仅仅是因果图,你要考虑在测试活动中如果覆盖你的测试步骤,最优化你的测试步骤,即对某一些功能的测试不重复,又保证覆盖率,虽然因果图只是一个软件功能测试的方法,但是他确给我们一个启示,把它应用到你的工作中去吧。怎么用?这就需要我们自己去思考。 |
|