软件测试胡侃之初篇

软件测试胡侃之初篇

一、定义or目的

v 最近在看《软件测试的艺术》,结合我的经验和理解总结一下测试相关知识

定义1:书中指出:“对于测试,更为合适的定义应该是:测试是为发现错误而执行程序的过程。”

定义2:《软件测试技术经典教程》书中和我一直以来的观点比较契合,感觉较为中肯的定义,“发现错误仅仅是软件测试的手段而已,软件测试的最终目的是检验实际的软件系统是否符合用户的需求”,注意是检验不是验证,就两者区别就引发过一场辩论,头大!书中就定义1提出两点质疑:

1. “测试文档属于软件测试,但是它不一定需要执行程序”,当然比如文档审查;

2. “我按照用户的需求测试了实际的系统,却一个bug也没有发现,我所做的测试工作有意义吗?当然有意义,因为至少证明了该系统基本符合用户的需求”。当然实际的软件测试过程中,被测软件如果没有一个问题,概率值接近0,虽然说工作意义和基本符合的字眼有些牵强,但也指出,不能为了找bug去设计用例,显而易见正常用例出现的bug概率相对低,如果一些人走极端,很容易导致测试不全面。

不过貌似如何定义与实际工作中的软件测试关系不大,认可哪种定义主要看你想达到的目的,而更多人似乎更倾向于testing for finding bugs。就像《软件测试的艺术》中所说:“人类行为总是倾向于具有高度目标性”,怀着找地雷的心态去搜索,出招一定更加精准与锋利,只是别忘记测试全面。不管选择如何,结果而言,目前还是bug找出的越多,对增加程序的价值越大。废话够多了,到此为止.........~O~

军工的软件测试,我目前主要参考《GJB/Z141 -2004》:

军用软件的测试目的是:

a)  验证软件是否满足软件开发合同或任务书、 系统/子系统设计文档、 软件需求规格说明和软件设计说明所规定的软件质量特性要求;

b)  通过测试,发现软件错误;

c)  为软件产品质量的评价提供依据 。

二、分类

动态测试分为:黑盒测试、白盒测试和灰盒测试。

黑盒测试又称功能测试、数据驱动测试或基于规格说明的测试, 这种测试不必了解被测对象的内部情况, 而依靠需求规格说明中的功能来设计测试用例,又称“穷举输入测试”。测试方法一般包括功能分解、等价类划分、边界值分析、判定表、因果图、错误推测法、正交试验法、状态迁移图法和流程分析法等;

白盒测试又称结构测试、逻辑测试或基于程序的测试, 这种测试应了解程序的内部构造, 并且根据内部构造设计测试用例,又称“穷举路径测试”。测试方法一般包括控制流测试(语句覆盖测试、分支(判定)覆盖测试、条件覆盖測试、判定-条件覆盖、条件组合覆盖测试、路径覆益测试)、数据流测试、程序变异、程序插桩、 域测试和符号求值等;

l 灰盒测试:介于白盒测试和黑盒测试之间的测试,关注输出对于输入的正确性,同时也关注程序内部表现。

三、测试过程

软件测试过程包括四项活动, 按顺序分别是: 测试策划、 测试设计和实现、 测试执行、 测试总结。

l 测试策划

确定需要测试的内容或质量特性; 确定测试的充分性要求; 提出测试的基本方法; 确定测试的资源和技术需求; 制定测试资源计划和测试进度计划 。

l 测试设计与实现

分析测试用例集的层次结构, 选取和设计测试用例; 获取并验证测试数据; 根据測试资源、 风险等约束条件,确定测试用例执行顺序;获取测试资源,开发测试软件;建立并校准测试环境:进行测试就绪审査, 主要审査测试计划的合理性和测试用例的正确性、 有效性和覆盖充分性, 审査测试组织、 环境和设备工具是否齐备并符合要求。在进入下一阶段工作之前,应通过测试就绪评审。

l 测试执行

执行测试用例, 获取测试结果; 分析并判定测试结果。 同时, 根据不同的判定结果采取相应的措施; 对测试过程的正常或异常终止情况进行核对, 并根据核对结果, 对未达到测试终止条件的测试用例, 决定是停止测试, 还是需要修改或补充测试用例集, 并进一步测试 。

l 測试总结

评估测试效果和被测软件项, 描述测试状态。 如, 实际测试与测试计划和測试说明的差异、 測试充分性分析、未能解决的测试事件等;描述被测软件项的状态,,被测软件与需求的差异,发現的软件错误等;最后,完成软件测试报告,并通过测试评审。

四、V模型

软件生命周期V”字开发过程模型:

 


Tip1:心理暗示,程序充满bug,要兼顾全面,我要360度激光扫射

Tip2:错误总是倾向于聚集存在,因此,某一模块问题较多,首轮全部测试完成后考虑额外测试该部分。

Tip3:有自己遗漏或者没发现的错误也不要沮丧,没有任何一次软件测试能够将所有错误都发现,因为本来bug个数永远都是未知的,不过如果正常测试应该发现的,严重的、可能造成重大损失的错误,就别冒被领导扔刀子的风险去尝试擦肩而过了,后果很血腥的。但千万不要将错误全部揽在自己身上,说白了你也只是层层防线中的一环,从源头抓起,将软件测试融入到开发全过程会更能提高软件质量。废话一堆,总之,放松心态,减少压力,且漏且珍惜。

猜你喜欢

转载自blog.csdn.net/weixin_31484477/article/details/81055125