本文用书:《软件工程导论》 第六版 清华大学出版社
1、编码
2、测试技术
3、调试的途径有哪些?
4、软件可靠性和可用性的基本概念
第七章 实现
7.1 编码
1.编码:软件设计结果翻译成用某种程序语言书写的程序。
2.测试:软件测试的目的是在软件投入生产性运行前,尽可能多的发现软件中的错误。
3.实现=编码+测试。
7.2 软件测试基础
1.软件测试:为发现程序中的错误而执行程序的过程。
2.软件测试的准则(尽早和不断的测试、彻底测试的不可能、软件测试是有风险的行为、并非所有的软件错误都能恢复、反向思维逻辑、由小到大的测试范围、避免检查自己的代码、追溯至用户需求)
3.测试方法(黑盒测试和白盒测试)
4.测试步骤(模块测试、子系统测试、系统测试、验收测试、平行运行)
5. 测试阶段的信息流( 软件配置,包括需求说明书、设计说明书和源程序清单等; 测试配置,包括测试计划和测试方案。 )
7.3 单元测试
1.测试内容
(1)模块接口测试
(2)重要路径测试
(3)边界条件测试
(4)错误处理测试
(5)局部数据结构测试
2.模块测试步骤:
3.代码审查
(1)审查小组:组长、程序设计者、程序编写者、程序测试者
4.计算机测试
模块并不是一个独立的程序,因此必须为每个单元测试开发驱动软件和(或)存根软件。
通常驱动程序也就是一个“主程序”,它接收测试数据,把这些数据传送给被测试的模块,并且印出有关的结果。
存根程序代替被测试的模块所调用的模块。因此存根程序也可以称为“虚拟子程序”。它使用被它代替的模块的接口,可能做最少量的数据操作,印出对入口的检验或操作结果,并且把控制归还给调用它的模块。
7.4 集成测试
1.非渐增式测试:该测试是首先对每个模块分别进行单元测试, 然后再把所有的模块按设计要求组装在一起进行的测试。
2.渐增式测试:该测试是逐个把未经过测试的模块组装到已经测试过的模块上去,进行集成测试。每加入一个新模块进行一次集成的测试,重复此过程直至程序组装完毕。
(1)自顶而下增值
优点:不需要测试驱动程序,能够在测试阶段的早期实现并验证系统的主要功能,而且能在早期发现上层模块的接口错误,能够尽早发现系统主控方面的问题。
缺点:需要存根程序,可能遇到与此相联系的测试困难,低层关键模块中的错误发现较晚,而且用这种方法在早期不能充分展开人力,无法验证桩模块是否完全模拟了下属模块的功能。
(2)自底而上增值
优点:驱动模块较容易编写桩模块,能够尽早查出底层涉及较复杂的算法和实际的I/O模块中的错误。
缺点:最后才能发现系统主控方面的问题。
3.以上二者的优缺点:
(1) 非渐增式方法把单元测试和集成测试分成两个不同的阶段, 前一阶段完成模块的单元测试,后一阶段完成集成测试。 而渐增式测试把单元测试与集成测试合在一起, 同时完成。
(2) 非渐增式需要更多的工作量,因为每个模块都需要驱动模块和桩模块,而渐增式利用已测试过的模块作为驱动模块或桩模块,因此工作量较少。
(3) 渐增式可以较早地发现接口之间的错误,非渐增式最后组装时才发现。
(4) 渐增式有利于排错,发生错误往往和最近加进来的模块有关,而非渐增式发现接口错误推迟到最后,很难判断是哪一部分接口出错。
(5) 渐增式比较彻底,已测试的模块和新的模块组装在一起再测试。
(6) 渐增式占用的时间较多,但非渐增式需更多的驱动模块、 模块, 也占用一些时间。
(7) 非渐增式开始可并行测试所有模块, 能充分利用人力, 对测试大型软件很有意义。
7.5 确认测试
1.目标:验证软件有效性。
(1)验证指的是保证软件正确地实现了某个特定要求的一系列活动;
(2)确认指的是为了保证软件确实满足了用户需求而进行的一系列活动。
2.通常使用黑盒测试法。
3.α测试:Alpha测试由用户在开发者的场所进行,并且在开发者对用户的“指导”下进行测试。开发者负责记录发现的错误和使用中遇到的问题。总之,Alpha测试是在受控的环境中进行的。
4.β测试:Beta测试由软件的最终用户们在一个或多个客户场所进行。与Alpha测试不同,开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。用户记录在Beta测试过程中遇到的一切问题(真实的或想像的),并且定期把这些问题报告给开发者。接收到在Beta测试期间报告的问题之后,开发者对软件产品进行必要的修改,并准备向全体客户发布最终的软件产品。
7.6 白盒测试技术
1.常用的覆盖标准
例子:
① 语句覆盖: 选择足够的测试用例,使得程序中每个语句至少都能被执行一次。
② 判定覆盖: 执行足够的测试用例,使得程序中每个判定至少都获得一次“真”值和“假”值。
③ 条件覆盖:执行足够的测试用例,使得判定中的每个条件获得各种可能的结果。
④ 判定/条件覆盖: 执行足够的测试用例,使得判定中每个条件取到各种可能的值,并使每个判定取到各种可能的结果。
⑤ 条件组合覆盖: 执行足够的例子,使得每个判定中条件的各种可能组合都至少出现一次。
2.步骤:
1)选择逻辑覆盖标准。
2)按照覆盖标准列出所有情况。
3)选择确定测试用例。
4)验证分析运行结果与预期结果。
3.注意
用例格式: [输入(A,B,X),输出(A,B,X)]
7.7 黑盒测试技术(略)
1.等价分类法
2.边值分析法
3.错误推测法
7.8 调试
1.调试:在测试发现错误之后排除错误的过程。
2.调试的途径:
(1)蛮干法;
(2)回溯法;
(3)原因排除法;
7.9 软件可靠性
1.软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率
2.软件可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。