从软件质量概念及其需求出发,了解什么是软件缺陷及其产生的原因,从而真正理解究竟什么是软件测试。
软件质量的需求不仅分为功能性需求和非功能性需求,而且还分为用户的需求和软件企业自身的需求,从而构成一个完整的质量需求。相对于功能性需求,非功能性需求容易被忽视,但非功能性需求对软件质量同样重要。
无论是对测试人员,还是测试组长,都需要理解如下一些软件测试的内涵。
● 由静态测试和动态测试构成一个全过程的、完整的软件测试,而且静态测试显得更为重要。
● 测试是为了证明程序有错,而不是证明程序无错误,即测试的工作就是为了发现缺陷,为了找出那些不能正常工作、不一致性的问题。这里强调反向思维,以提高测试的效率。
● 测试是对软件系统中潜在的各种风险进行评估的活动,强调软件测试自身的风险性,测试的覆盖率很难达到100%。所以,软件测试被看做是一个动态的、全过程的质量监控过程,它会随时发现、报告软件缺陷和问题,不断评估质量风险,持续进行回归测试,以保证质量。
● 一个好的测试用例是它能发现至今未发现的错误,要尽快尽早地发现更多的缺陷。缺陷发现得越早,所付出的代价就越低。
● 根据Pareto原则(80/20原则),用户最常用的20%功能(优先级高)应得到完全地、充分地测试。
● 软件测试就是“验证(Verification)”和“有效性确认(Validation)”活动构成的整体。“验证”是检验软件是否已正确地实现了产品规格书所定义的系统功能和特性,即它是针对软件开发活动一致性的检验。“有效性确认”是一切从客户出发,理解客户的需求,确认所开发的软件是否满足用户真正需求的活动。
测试过程和开发过程都贯穿软件过程的整个生命周期,它们相辅相成、相互依赖,具有同步的关系,而在资源、风险管理上,两者的差异较大。前期,测试过程更多地依赖于开发过程,后期,开发过程更多地依赖于测试过程。
为了做好软件测试计划和随后的工作,促进项目获得成功,必须弄清楚项目的背景,包括项目的来源、客户和需求等,抓住和软件测试相关的项目要素,并制定软件测试规范。