软件测试
软件测试是软件质量保证的一项关键活动。
通过对需求规格说明、软件设计说明和程序代码等进行复审,以保证在软件产品交付前,尽可能发现软件中潜伏的问题。
1.验证和确认
(1)软件验证:是为了证明软件在生命周期的各个时期的逻辑协调性、完整性、正确性。
(2)软件确认:目的:保证软件产品能符合其描述要求。
2.软件测试基础;
(1)基本原则:
1.尽早的和不断地进行软件测试;
2.程序员避免检查自己的程序;
3.在设计测试用例时,应当包括合理的以及不合理的输入条件;
4.测试用例应由测试输入数据和与之对应的预期结果组成;
5.充分注意测试中的群集现象;
6.严格执行测试计划,排除测试的随意性;
7.应当对每一个测试结果做全面检查;
8.妥善保存一切测试文档,为软件维护提供方便。
(2)测试文档:描述要进行的软件测试以及测试结果。
包括:1.测试计划2.测试规范3.测试用例4.缺陷报告。
(3)软件测试信息流:
1.软件配置:需求规格说明书、软件设计说明书、源程序等;
2.测试配置:测试方案、测试用例、测试驱动程序等;
3.测试工具:计算机辅助测试的有关工具。
3.软件测试策略:
(1)单元测试:
1.模块接口测试:
是单元测试的基础,检查数据能否正确地通过模块。
2.局部数据结构测试
保证临时存储在模块内的数据在程序执行过程中完整、正确。
3.重要执行路径测试
在模块中应对每一条独立执行的路径进行测试;
单元测试的基本任务:保证模块中每条语句至少执行一次。
4.错误处理测试:出错处理通路同样需要认真测试。
5.边界条件测试:
采用边界值分析技术,针对边界值及其左右设计测试用例,有可能发现新的错误。
6.单元测试方法
驱动模块作用:模拟被测模块的上级,调用模块;
桩模块作用:代替被测模块调用的模块,用以返回被测模块所需的信息。
(2)集成测试:1.自顶向下2.自底向上。
(3)确认测试:1.一系列黑盒测试2.配置复审。
(4)系统测试:
1.前期准备(软件工程师的工作):
(1)为测试软件系统的输入信息,设计出错处理通路。
(2)设计测试用例,模拟错误数据和软件界面可能发生的错误,记录测,试结果,为系统测试提供经验和帮助。
(3)参与系统测试的规划和设计,保证软件测试的合理性。
2.测试任务
(1)恢复测试:测试其容错能力。
(2)安全测试:对非法访问的防范能力。
(3)强度测试:对异常情况的抵抗能力。
(4)想能测试:需要软硬件的配套支持。
(5)软件调试:1.简单的调试2.归纳法3.演绎法4.回溯法
4.软件测试方法:
(1)静态测试:人工分析检测和计算机辅助静态分析;
(2)动态测试:通过运行程序发现错误;
(3)黑盒测试:也称功能测试或数据驱动测试;
在已知产品应具有的功能的情况下,通过测试来检测每个功能是否都能正常使用。
方法:等价类划分、边界值分析、因—果图、错误推测。
用于软件确认。
(4)白盒测试:也称结果测试或逻辑驱动测试
已知产品内部工作过程,通过测试来检测产品内部动作是否按照规格说明书的规定正常进行,按照程序中的每条通路是否都能按预定要求正确工作。
5.面向对象测试类型:
1.模型测试2.类测试3.交互测试4.系统(子系统)测试5.验收测试6.发布测试
图形化用户界面的应用程序大部分是以事件驱动的,GUI测试侧重以按钮为基本操作的单元测试。
6.软件测试工具
(1)功能测试工具(2)性能测试工具(3)缺陷管理工具(4)测试管理工具
1.JUNIT 支持白盒测试
使用步骤:
(1)创建,从junit.framework.TestCase派生需要的test case 类。
(2)编写测试方法,提供类似如下函数签名的测试方法:public void testXXX();
(3)编译;
(4)运行,启动junit test runner 运行该类。
Junit提供了两个基本的test runner:
图形界面:java.junit.swingui.TestRunner XXXXX;
字符界面:java.junit.textui.TestRunner XXXXX;
2.LoadRunner
一种预测系统行为和性能的工业标准级负载测试工具。
作用:能最大限度地缩短测试时间,优化性能以及加速应用系统的发布周期。