测试六问:
why:为什么测试?对功能、性能、可用性、容错性、安全性等测试,检查是否符合相关要求。
what:测试什么?测试对象包括文档、代码、图标等。
where:测试哪里?测试用例的环境,包括系统的硬件、软件和网络环境等。
when:什么时候测试?测试用例所需的前提条件是尽快开始。
which:什么数据?测试用例设计的各种数据。
how:如何执行?结果怎么样要根据测试用例设计的步骤来执行,最后进行结果比较,确定是否一致。若一致才能通过测试。
测试是为了发现错误而执行的一个程序或者系统的过程。
测试不单纯是发现错误的过程,而且包含软件质量评价的内容
测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量
测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期。
软件测试只能证明软件存在错误,而不能证明软件没有错误。
测试的目的:把软件的错误控制在一个可以进行产品交付的程度,把错误控制在一个合理的范围之内。
软件测试包括:单元测试、集成测试、确认测试、系统测试、验收测试。
大量资料证明60%以上的软件错误并不是程序错误,而是分析和设计错误。
软件的质量:软件满足规定或者潜在用户需求特性的总和。
包含内部质量、外部质量、使用质量
质量保证QA:质量保证的重要工作通过预防、检查与改进来保证软件质量。着眼与软件开发活动中的过程、步骤和产物,而不是对软件进行剖析找到问题或者评估。
软件测试:对过程的产物以及开发出的软件进行剖析。对开发文档和源代码进行走查,运行软件,以找出问题,报告质量。对测试中发现的问题进行分析、追踪与回归测试.
测试的目的:
测试是程序的执行过程,目的在于发现错误
一个好的测试用例在于能发现至今没有发现的错误
一个成功的测试是发现至今没有发现的错误的测试
测试的原则:
所有软件测试都应该追溯到用户需求。
完全测试是不可能的,测试需要终止:1.输入量太大 2.输出结果太多 3.路径组合太多
测试无法显示软件潜在的缺陷
充分注意测试中的集群现象。
程序员应该避免检查自己的程序
尽量避免测试的随意性。
测试阶段的划分:
单元测试:测试模块的功能、性能、接口、设计约束。从程序内部结构出发进行测试。
集成测试:将所以程序模块进行有序的、递增的测试。集成测试是检查程序单元或者部件的接口关系。
冒烟测试:每次提交版本时对功能进行验证的测试。
确认测试:通过检验和提供客观证据,证实软件是否满足特定预期用途的需求,是否满足软件需求说明书规定的要求。
系统测试:验证和确认系统是否达到其原始目标,对集成的硬件和软件系统进行的测试。
验证测试:按照项目任务书、供需求双方约定的验收依据文档进行对整个系统的测试与评审,决定是否接受或拒绝系统。
测试实施的划分:
开发方测试(a测试)、用户测试(b测试) 第三方测试(独立的测试机构)
测试用例要有以下几个原则:
代表性:测试用例能代表并覆盖各种合法和不合法的、边界内和越界的以及极限输入数据、操作环境的设置。
可判性:测试执行的结果的正确性是可以判定的。每一个测试用例都应该有相应的预期结果。
可再现性:对于同样的测试用例,系统执行的结果应当相同,并且相同测试的执行过程可以反复操作。
测试的划分:
黑盒测试:只检查样序是否按照需求规格说明书的规定正常实现
白盒测试:了解程序结构和处理过程,检查是否所有的结构以及路径都是正确的,检查软件内部动作是否按照设计说明的规定进行正常进行。
灰盒测试:表征性的现象、事件、标志来判断内部的运行状态。
静态测试:走查、符号执行、需求确定等
动态测试:人工或工具运行程序进行检查、分析程序的执行状态和程序的外部表现。
环境测试:
环境测试 = 硬件 + 软件 + 网络 + 数据。