一、软件测试的定义
软件测试是使用人工或自动的手段来运行或测定某个软件系统的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别,验证软件是否满足任务书和系统定义文档所规定的技术要求,为软件质量模型的建立提供依据。
二、测试方法
按程序执行状态分为:静态测试和动态测试
静态测试:被测程序不运行,依靠分析或检查程序的语句、结构、过程等哎检查程序
是否存在通过。(桌前走查、代码审查、代码走查)
动态测试:被测程序是运行的,对得到的运行结果与预期的结果进行比较,同时分析
运行效率和健壮性能等。(白盒测试、黑盒测试、灰盒测试)
按具体实现算法细节和系统内部结构分:黑盒测试、白盒测试、灰盒测试
盒黑测试:主要用于集成测试、功能测试、确认测试阶段,不考虑任何程序内部结构
和特性的条件下,根据需求规格说明书设计。主
要是对软件的界面和功能进行测试。必须加以量化才能够有效的保证软件
的质量。(等价类划分、边界值分析、错误推测、判定表、因果图)
白盒测试:主要用于单元测试阶段,借助程序内部的逻辑和相关信息,通过检测内部
动作是否按照设计规格说明书的设定进行,检查每一条通路是否正常运行。
(控制流分析、数据流分析、程序变异测试;按测试用例的覆盖程度,分
为语句覆盖(覆盖度最低)、判定覆盖、分支覆盖和路径覆盖(覆盖度
最高))
灰盒测试:介于白盒测试和黑盒测试,结合了两者的优点
按程序执行的方式分为:人工测试和自动测试
自动测试:在预先设定的条件下自动运行被测程序,并分析运行结果。
三、测试阶段
单元测试:主要是对该软件的模块进行测试主要是用静态测试和白盒测试
集成测试:对已经按照程序设计要求和标准组装起来的多个模块同时进行测试,验证其有效
性,主要是用白盒测试和黑盒测试。分为一次性组装(成本低,但风险高)和多
次组装(成本高,但风险低),自顶向下集成,需要桩模块,自底向上集成,需
要驱动模块
系统测试:检查系统是否满足软件需求,包括功能、性能、健壮性、安装和反安装、用户界
面、压力、可靠性和安全性测试,主要使用黑盒测试
性能测试:通过自动化的测试工具模拟多种正常、峰值以及异常负载条件下对系统的各项性
能指标进行测试。
负载测试:各种工作负载下系统的性能(多个结果)
压力测试:确定一个系统的瓶颈或者不能接受的性能点(一个,上限)
强度测试:系统资源受限的情况下的性能(一个,下限)
容量测试:并发的极限(并发测试,如同时在线人数等)
可靠性测试:规定时间内,系统能够正常运行的能力
验收测试:验收测试是最后一个阶段的测试,是由用户对要求交付软件开展的一种测试,主
要目标是为用户展示所开发出来的软件符合预定的要求和有关的标准,并验证软
件实际工作的有限性和可靠性,确保用户能用该软件顺利完成既定的任务和功能
其他测试:AB测试:制作多个版本,选择最合适的;Web测试:针对Web应用进行的测试;
链接测试:测试所有链接是否正常跳转,所连接的网页是否存在,保证没有孤立
(无法到达)的页面;表单测试:通过表单提交时,表单能否正常工作(表单的
正确性、默认值等)
四、遗留系统演化策略
五、新旧系统的转换策略
直接转换:原有系统停止运行,新系统上线(高风险,低成本,灰度发布)
并行转换:原有系统和新系统并行运行一段时间(低风险,高成本,金丝雀发布)
分段转换:按功能等分渠道发布,融合了直接转换和并行转换的特点
六、数据转换与迁移
数据的转换包括:抽取(E)、转换(T)、装载(L)三个步骤
三种数据迁移的方式:
1. 系统切换前通过工具迁移
2. 系统切换前采用手工录入
3. 系统切换后通过新系统生成