软件测试的自我修养:正向思维与逆向思维
提起正向思维与逆向思维大家一定都不陌生,因为这是一个老生常谈的问题了。这样的思维方式一直贯穿着软件测试案例设计和执行的始末,现有的软件测试科学理论体系依赖测试的预想结果和实际结果来决定软件的正确性。下面分别跟大家分享一下正向思维和逆向思维测试。
正向思维
软件测试的正向思维就是试图验**是工作的,即软件的功能是按照预先设计的执行的,以正向思维,针对系统的所有功能,逐个验证其正确性。 在平常的测试中这样的测试案例我们无处不在,以银行系统为例:开发人员添加了某个收款人信息的栏位,从正向思维出发,我们测试中通常认为这些栏位是可用的,能正常显示收款人信息并且要素正确,在业务允许的范围内各种不同的数据格式验证无误……
当然,我们可以在正向思维的测试案例中融入不同的测试方法,用有效的数据,正确的流程,多样化的场景来演绎软件的执行;这些案例的执行都是建立在认知此软件满足需要基础上,通过案例的执行来证明软件是成功的,这是正向思维
逆向思维
软件测试逆向思维就是认为软件有错的情况下去测试这个软件。 有人说:“如果把正向测试比作是听从老师话的小学生,逆向测试思维就是处处跟老师作对、调皮捣蛋的小朋友” 简而言之:我就是要跟你对着干 从逻辑学角度出发,为互为逆否命题的两个命题是等价命题。可得出: 如果p?q为真,则¬q?¬p 我们从正向思维出发得出这样一个真命题:如果BUG被修复了,那么程序执行无误。 开篇提到软件测试通过预想结果和实际结果来决定其正确性,从而判定该程序否达到预期。 假设将此命题看作是软件执行的过程。"BUG被修复"作为预想结果,而"程序执行无误"作为实际结果,很显然,如果这个命题为真,就能从软件执行的过程中得到结论–软件符合预期。现在我们换个角度从逆向思维出发,得出它的逆否命题为: “如果程序执行错误,那么BUG未被修复” 换句话说,要想证明BUG未被修复,就得证明程序执行错误。基于逆向思维,我们通常是通过设计并执行测试案例方式,来证明"程序执行错误"这一假设条件的存在性。那么如何基于逆向思维设计和执行测试案例?可从以下几点出发:
-
不断思考开发人员理解的误区 开发人员不良的习惯 程序代码的边界 无效数据的输入 系统的弱点 试图破坏系统、摧毁系统
不论是正向思维还是逆向思维,软件测试的目的都是为发现错误而执行程序的过程。借用一句经典的话"一个好的测试用例是在于它能发现至今未发现的错误"。祝愿大家在测试的路上不断提高自身职业修养,快速成长!