西门子KTP600人机界面
成功的测试是发现至今尚未察觉的错误的测试。
软件测试是以*少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。软件是由人来完成的,所有由人做的工作都不会是****的。软件开发是一个很复杂的过程,期间很容易产生错误。软件从业人员、专家和学者付出了很多努力,但软件错误仍然存在。大家也得到了一种共识:软件中残存着错误,这是软件的一种属性,是无法改变的。通常说软件测试的目的就是为了发现尽可能多的缺陷,并期望通过改错来把缺陷统统消灭,提高软件的质量。
测试不仅仅是为了发现软件缺陷和错误,也是为了对软件质量进行度量和评估,以提高软件的质量。软件测试是以评价一个程序或者系统属性为目标的活动,以验证软件满足用户的需求的程度,为用户选择与接受软件提供有力的依据。
通过分析错误产生的原因还可以帮助发现当前开发工作所采用的软件过程的缺陷,以便进行软件过程改进。通过对测试结果进行分析整理,还可以修正软件开发规则,并为软件可靠性分析提供依据。修复成本。需要注意,“尽早测试”并非盲目的提前测试活动,测试活动开展的前提是达到必须的测试就绪点。
(2)全面测试
文档的集合,那么对软件进行测试,就不仅仅是对程序的测试,还应包括软件“副产品”的“全面测试”。需求文档、设计文档作为软件的阶段性产品,直接影响到软件的质量。阶段产品质量是软件质量的量的积累,不能把握这些阶段产品的质量将导致*终软件质量的不可控。
“全面测试”包含两层含义:第一,对软件的所有产品进行全面的测试,包括需求、设计文档,代码,用户文档等。第二,软件开发及测试人员(有时包括用户)全面的参与到测试工作中,例如对需求的验证和确认活动,就需要开发、测试及用户的全面参与,毕竟测试活动并不仅仅是保证软件运行正确,还要保证软件满足了用户的需求。
“全面测试”有助于全方位把握软件质量,尽*大可能的排除造成软件质量问题的因素,从而保证软件满足质量需求。
(3)全过程测试
“全过程测试”包含两层含义:第一,测试人员要充分关注开发过程,对开发过程的各种变化及时做出响应。例如开发进度的调整可能会引起测试进度及测试策略的调整,需求的变更会影响到测试的执行等等。第二,测试人员要对测试的全过程进行全程的跟踪,例如建立完善的度量与分析机制,通过对自身过程的度量,及时了解过程信息,调整测试策略。
“全过程测试”有助于及时应对项目变化,降低测试风险。对测试过程的度量与分析也有助于把握测试过程,调整测试策略,便于测试过程的改进。
(4)独立的、迭代的测试
“独立的、迭代的测试”包含两层含义:第一,应当将测试过程从开发过程中适当的抽象出来,作为一个独立的过程进行管理。软件开发瀑布模型只是一种理想状况。为适应不同的需要,人们在软件开发过程中摸
测试从开发中抽象出来进行管理,势必使测试管理陷入困境。第二,测试工作应该由独立的专业的软件测试机构来完成。通常,程序的设计者对自己的程序印象深刻,并总以为是正确的,倘若在设计时就存在理解错误,或因不良的编程习惯而留下隐患,那么程序员本人很难发现这类错误。条件下,找出所有的软件缺陷和错误,使软件趋于完美,是不可能的。一个中等规模的程序,其路径组合近似天文数字,对于每一种可能的路径都执行一次的穷举测试是不可能的,能穷举测试,也没法找到程序中所有隐藏的错误。费用将大幅增加,漏掉的软件错误数量并不会因费用上涨而显著下降,越是在测试后期,为发现错误所付出的代价就会越大。要根据测试出错误的概率以及软件可靠性要求,确定**停止测试时间,而不能无限地测试下去。
(9)注意回归测试的关联性。回归测试的关联性一定要引起充分的注意,修改一个错误而引起更多错误出现的现象并不少见。
(10)妥善保存一切测试过程文档。妥善保存一切测试过程文档的意义是不言而喻的,测试的重现性往往要靠测试文档。
1.4.3 软件测试过程模型V模型指出,单元测试和集成测试应检测程序的执行是否满足软件设计