6.2软件系统的建立
程序设计的步骤:
--明确条件和要求
--分析数据
--确定流程
--编写程序
--检查和调试
--编写程序使用说明书.
常见错误的种类:
--要访问的文件不存在.如该文件已删除或在其他位置
--要访问的文件是错误的.如索引文件与数据库不匹配
--外部设备未准备好如打印机未通电
--外存空间不够,数据溢出,如数据错误造成运算结果过大.
--用户操作错误,如误击键,未按规定步骤操作等,也称"稳错误"
错误检测的方法:
--测试法:设置各种测试函数,为将要进行的操作检测其必要的先决条件是否满足,不满足则采取相应的处理措施.
--陷井法:设置错误的陷井,并通过专用测试函数了解出错情况,以转入不同的处理,与测试法不同,陷井法检查的是已经发生的错误,而不是将要发生的错误
--限定法:对"隐错误"进行检测采用的方法,它根据预定的准则来检验当前或先前的处理是否符合要求.
对错误的处理
--自动处理:数据系统的原因
--人工干预:外部设备的原因.(打印机之类的)
--等待许可.
--放弃操作.
结构化程序设计(SP):指出任何程序逻辑结构都可以用顺序,分支和循环这三种基本结构来表示.
特点:
1、只有一个入口一出口,设计采用自顶向下逐步求精的设计方法.
2、由于结构化程序具有结构清晰,易于阅读和修改,容易难其正确性等优点 ,因此使用该方法有利于编写出结构良好的程序,提高编程工作效率。
测试的目的、原则
--测试的目的:发现系统错误及时纠正
--系统测试是保证系统质量的关键步骤
--到目前为止,人们还无法证明一个大型复杂程序的正确性,只能依靠一次的测试手段来说明该程序在某些条件下没有发生错误,所以在测试时应想方设法使程序的稳中有降个部分投入运行,力图找出所有错误。
G、Myears对测试目标做出了如下归纳:
--测试是为了发现程序中的错误而执行程序的过程;
--好的测试方案是很可能发现迄今为止尚未发现错误的测试方法;
--成功的测试是发现了至今为止尚未发现的错误的测试。
测试的基本原则
--测试人员应避免测试自已设计的程序;
--测试用例应分别考虑输入和输出;
--测试数据的选取应考虑各种不同情况;
--检查程序是否执行了规定以外的操作;
--注意保留测试用例;
--对已发现的错误模块要足够重视
测试过程:
模块测试--子系统测试--系统测试(最大是这个)
1、模块测试:
--静态测试:在模块上机运行前通过阅读程序和人工运行程序的方法来发现程序中的语法错误和逻辑错误。
--动态测试:即模块上机运行测试。当人工运行程序走通以后,就可上机调试。
2、子系统测试:也称为分调。它是在模块测试的基础上,把各模块组合到一起形成一个子系统来测试的过程。目的是解决各模块间相互调用的协调和通信问题,即重点测试子系统内各模块的接口,可能出现下列问题:
--一个模块对另一个模块产生有害影响;
---数据在穿过接口时丢失;
--把模块组合一起没有产生预期的功能等问题。
模块组装成子系统的方法:
--非渐增式测试方法:分别测试每个模块,再把所有模块按设计要求结合在一起测试。
--渐增式测试方法:把下一个要测试的模块同已经测试好的模块结合起来进行测试。测试完以后再结合整个系统测试。
两种方法的比较:
非渐增式测试方法:
)工作量较大,编写测试软件较多。
)最后才把模块相连在一起,接口错误发现的晚。
)一次组合所有模块,如果发现错误难以判断定位
)可以交行测试所有模块,能充分利用人力,加快工程进度。
渐增式测试方法:
)可利用已测试过的模块
)可以较早发现模块之间的接口错误
)如果发生错误则通常和最新加进来的模块有关。
)占用机时多,测试每个新加入模块时,已经测试完的模块也都要一起运行,但测试更彻底。
3、系统测试
称为总调。
它主要解决各子系统之间的数据通读和数据共享等问题,以及系统安全测试,恢复测试和满足用户要求的测试等。
进行总调时,可采用精心设计的数据量较少的测试用例,这样可以使处理的工作量减少,而且也更容易发现错误和确定错误所在范围。
--安全测试:是指测试系统对外来有意或来意攻击的自我保护能力
--恢复测试:是指系统出现意外故障时,能否正确和迅速恢复的测试
--系统有效性测试:通过测试来证实系统功能与用户要求一致。
系统说明文件:
--用户手册:系统开发报告、有关程序的所有资料、系统操作说明等。
测试技术及方法:对于一个比较庞大或复杂的程序系统,要想通过彻底地测试并找出全部错误是不可能的,因此只能尽可能多发现错误。
模块测试技术:
--黑盒子调试:对盒子内部不了解,只要考虑模块的内部结构,而着眼于软件的外部特性,只用测试数据未检验程序是否符合它的功能要求,是否会发生异常情况。
--白盒子调试:对盒子内部了解,了解模块内部结构。
模块测试技术(等价分类法)黑盒子法
--把所有可能的输入数据划分有限数量的等价类,并假定用一个等价类的典型代表值测试等价于这一类其他值的测试。
--通常是将模块的输入域分为有效(符合规范的输入)和无效(非法的输入)等价类。
例如,合理0-100,那0-100为有效类,-1、102就无效类。
模块测试技术(边界值分析法)黑盒子
以刚好等于、大于或小于边界值的数据作为测试数据。
例0-100,可取-0.1,0。1,99.9.100.1作为测试数据。
模块测试技术(逻辑覆盖测试法)白盒子
语句覆盖、判断/条件覆盖、判断覆盖、条件组合覆盖、条件覆盖。