软件测试在程序员对每一个模块的编码之后先做程序测试,再做单元测试,然后再进行集成(综合或组装)测试,系统测试,验收(确认)测试,平行测试,人工测试,其中单元测试的一部分已在编码阶段就开始了,测试横跨开发与测试两个阶段,又有不同的人员参加,测试工作本身是复杂的。
据统计测试工作量要占软件开发总成本的40%到50%以上。
从这张图中我们可以看到,软件测试设计概念和原则、技术两方面的内容。
首先来说概念和原则。
概念:软件测试时对软件计划、软件设计、软件编码进行查错和纠错的活动(包括代码执行活动与人工活动),软件测试其实包括程序测试。软件确认和程序确认分别是它们的广义概念。在这里需要补充一点软件错误,软件错误主要是有一些功能错和系统错。功能错是需求分析设计不完整而引起的,系统错是总体设计错误而引起的。
测试原则:(1)测试前要认定被测试软件有错,不要认为软件没有错
(2)要预先确定被测试软件的测试结果
(3)要尽量避免测试自己编写的程序。
(4)测试要兼顾合理输入与不合理输入数据。
(5)测试要以软件需求规格说明书为标准。
(6)要明确找到的新错与已找到的旧错成正比。
(7)测试是相对的,不能穷尽所有的测试,要据人力物力安排测试,并选择好的测试用例与测 试方法。
(8)测试用例留作测试报告与以后的反复测试用,重新验证纠错的程序是否有错。
再来说技术。
测试目标:
(1)测试时为了发现程序中的错误而执行程序的过程;
(2)好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案;
(3)成功的测试是发现了至今为止尚未发现的错误的测试。
测试方法:按照测试过程是否在实际应用环境中来分有静态分析与动态分析。
测试方法有分析方法(包括静态分析法与白盒法)与非分析方法(称黑盒法)。
白盒法是通过分析程序内部的逻辑与执行路线来设计测试用例,进行测试的方法,白盒法也称逻辑驱动方法。黑盒法是功能驱动方法,仅根据I/O数据条件来设计测试用例,而不管程序的内部结构与路径如何。说白了就是白盒法就是透明的,对其内部能操作。黑盒法因为不透明,所以只能进行整体外部操作。
设计测试方案:语句覆盖、判定覆盖和条件覆盖是重点。