【系统分析师之路】第八章 系统测试与维护记忆敲出
系统测试与维护章节记忆敲出
一. 系统测试的过程
开发有开发的计划,测试有测试的计划,测试计划和过程要掌握,以便可以用在论文中。测试计划的制定其实和开发计划的制定是一样的道理。首先制定程序型的测试计划,确定测试的策略,设计测试用例,编辑做成测试用例,实施测试用例并记入结果,实施回归测试,提交测试报告等。
测试计划的制定
测试用例的设计
编写测试用例
执行测试用例并计入结果
修正后执行相应的回归测试
做成相应的测试报告
二. 测试的四个阶段
单元测试,集成测试,系统测试,确认测试。在开发模型V模型中,这四个阶段都得到了很好的体现。单元测试针对的是单个模块程序,集成测试针对多个模块之间的组合测试,系统测试强调的是性能,可靠性等方面的测试,确认测试对应要件定义阶段,是由客户方来实施的产品或可交付成果的验收测试。
相比瀑布模型,V模型就是在瀑布的基础上,增加了相应的测试及验收的环节。
监理方的测试是代表甲方的测试,它是属于验收测试。
系统测试测什么东西?会有功能方面的,会有性能方面的,会有可靠性方面的,系统测试是乙方自己搞的。系统测试中性能是一个重要的关注点。
确认测试:也叫做验收测试,是让用户能够接受产品而进行的一个测试。阿尔法和贝塔都强调用户自己测试。
三. 测试的原则与策略
尽早测试,回归测试,不断测试,交叉安排测试以及模块Bug与模块之间的比率等都是测试过程中使用的一些不错的实践策略。
尽早地开始测试,不断的进行测试。
尽量不要安排测试自己开发模块。
尚未发现的错误数量,与程序已发现的错误数量成正比
修改之后的回归测试的重要性。
四. 常用的测试分类
分为静态和动态。静态测试包括了纯手工测试,人工测试。比如代码的走查审查就是静态测试。动态测试是通过机器通过计算机实际运行去得到测试结果。
五. 集成测试的分类
集成测试包括了一次性集成和增量式集成两种方式。还有冒烟测试也归属于集成测试的范畴。
一次性组装测试是指一次性把所有模块都组装起来,然后进行集成测试;
增量式组装测试需要构造桩模块和驱动模块,以增量的方式一边集成模块一边去运行测试。
增量式组装测试又可以分三种方式,自上往下和自下往上还有混合模式。增量式组装成本高,但是全面性更好,更能测试出问题来;其中混合模式既从上往下,又从下往上的调用,综合了前面的两种集成方式。
集成测试在V模型中对应的是概要设计,系统测试在V模型中对应的是需求分析。系统测试更加偏向于功能,性能,可用性,安全性。
六. 等价类划分与边界值分析
比如对考试成绩的等级划分就是等价类划分的一个最好的应用。无效等价类一般会只选择一个数据。
边界值分析:其实就是临界值测试的方法的一种。 所以在测试设计中不光要测有效合理的数据,也要测无效不合理的测试用例。
七. 新旧系统转换的策略
新旧系统有三种转换的策略,直接转换策略,直接从旧系统切换到新系统,这种做法成本低,但风险是最高的;并行转换策略强调新旧系统在交替后的一段时间内,同时并行运行一段时间,该做法风险小,就是成本高,因为要同时维护两套系统的运行,还要对数据库进行数据整合;最后一种就是分段式的系统转换策略,这种方法取了前面两种方法,然后进行了折中处理。
八. 软件维护的概念和四种类型
软件维护是生命周期的一个完整的部分,可以将软件维护定义为需要提供软件支持的全部活动;这些活动包括了交付软件前的活动和交付之后的活动。改正性维护就是纠正Bug;适应性维护适应什么?适应环境变化;预防性维护针对未来,完善性维护是增加功能,性能改善。将来如何进行软件项目的维护工作,这个应该在计划阶段就要考虑的问题。
这四种策略的简写“就是鱼丸”。在这四种维护类型中,完善性维护占比最大约占了50%;而预防性维护的占比只有5%,是最少的。
纠正性维护:修正系统中Bug和问题;
适应性维护:系统为了适应已经发生变化而产生的问题而去做的改进的维护;
预防性维护:系统现阶段没有问题,但是考虑到将来可能发生的问题进行提前预防性的维护;
完善性维护:为系统添加新的功能,改善系统性能可靠性等的维护;
九. 遗留系统四种类型和它们各自的特点
高技术高业务使用改正策略;
低技术低业务使用淘汰策略;
高技术低业务使用集成策略;
低技术高业务使用继承策略;
这里的的技术指的是技术水平,业务指的是业务价值。如何利用好遗留系统,这个是系统分析师需要关注的主要内容。
十. 软件调试的三种方法
蛮力法:低效耗时是它的特点,通过计算机找错,比如我在解票的时候,加入一大堆LOG,然后再去逐一查找蛛丝马迹。
回溯法:沿着流程往回跟踪,知道找到错误。在调试软件的过程中,往往显性的错误的地方并不是出现问题的根本原因,我们要根据问题的现象,一步步反推,才可以找出引起问题的本质。
原因排除法:主要思想是演绎与归纳,用二分法实现。简单说来就是推测错误可能的几处地方,然后慢慢缩小范围
十一. 软件测试与软件调试的区别与联系
总结一下,测试和调试目的不同,目标不同,前后顺序不同,一个可估算一个难以估算,一个已知一个未知。
测试是为了保证或者证明我们的可交付成果是没有问题的,而软件调试则是为了找到定位错误发生的地方;
调试是在测试之后进行,测试出来有bug,才需要调试找错;
测试活动可以事先设计,测试进度可以确认,但调试往往不能准确估算持续时间,也不能描述过程;
测试往往从一个已知的地方出发,而调试是从一个未知的条件开始。
十二. 系统测试包括的内容
系统测试包括了:压力测试,安全性测试,性能测试,可靠,可用,可维护性测试,还有安装测试。
负载测试
背100斤跑100米,看看多少时间跑完;然后背150斤跑100米,看看多少时间跑完。衡量在不同负载情况下表现出来的性能。
压力测试
压力测试其实可以把他看成性能测试的一部分来看待。压力测试的目的和负载不同,压力测试中你跑多快已经不关注了,而是来关注什么重量负重后你就站不起来了,找出这个临界点的过程。
强度测试
系统资源有限,系统强度非常低的情况下,能不能正常工作。比如饿一天后再让你去负重100斤跑100米,看看如何。调低某一个阀门,让他无法承受压力。
容量测试
限制资源之后确认能够多少并发
十三. 什么是白盒测试,为什么需要白盒测试,白盒测试分类
白盒测试是根据程序内部逻辑结构进行测试。
在黑盒中,输入输出确认好没有问题,并不代表函数里面的处理逻辑是没有问题的,而且还有一些问题往往是黑盒测试无法发现的。
常见的白盒测试方法有:语句覆盖,判断覆盖,条件覆盖,路径覆盖等。
语句覆盖:所有语句至少执行一次,这个级别是很低的,而且没有考虑到条件的排列组合。
路径覆盖:覆盖被测试对象中的所有可能路径。这个的覆盖率是最高的,但是现实过程中,很少有做到这个标准的。分支覆盖和条件覆盖基于语句覆盖和路径覆盖之间