设计流程
需求分析
产物:软件需求规格说明书,需要确定用户对软件的需求,要作到明确、无歧义。不涉及具体实现方法。用户能看得明白,开发人员也可据此进行下面的工作(概要设计)
概要设计
产物:软件概要设计说明书,说明系统模块划分、选择的技术路线等,整体说明软件的实现思路。并且需要指出关键技术难点等。
详细设计
产物:软件详细设计说明书,对概要设计的进一步细化,一般由各部分的担当人员依据概要设计分别完成,然后在集成,是具体的实现细节。理论上要求可以照此编码。
一般说来,需求分析属于软件定义方面;而概要设计、详细设计属于软件开发的阶段
软件测试级别
单元测试
单元测试是对程序中的某个接口或者模块进行测试,主要使用白盒测试,由编程人员(主导)和测试人员共同完成。
单元测试的目的是开发人员确定这段子程序做了它应该做的事。
集成测试
集成测试是单元测试的逻辑扩展。它的最简单的形式是:两个已经测试过的单元组合成一个组件,并且测试它们之间的接口。
集成测试的目的旨在测试各个组件间是否能互相配合,正常工作。
集成测试又分为一次性集成方式和渐增式集成方式。
一次性集成方式
首先对各个单元分别进行测试,然后将所有单元组装在一起进行测试,最终得到要求的软件系统。
渐增式集成方式
首先对某两三个单元进行测试,然后将这些单元逐步组装成较大的系统。在组装的过程中,一边连接一边测试,以发现连接连接过程中产生的问题,最后完成所有单元的继承,构造为一个完整的软件系统。
系统测试
系统功能测试需要在集成测试完成之后进行,采用黑盒测试,只检查程序功能是否按照需求规格说明书能够正常被使用。包含用户界面、各种操作、不同的数据输入输出和存储等的测试。
系统非功能测试是在实际运行环境或模拟实际运行环境,内容包括负载、性能、压力、灾难等测试。
验收测试
验收测试一般根据产品需求规格说明书严格检查产品,逐行逐字地对照说明书上对软件产品所做出的各方面要求,确保所开发的软件产品符合用户的各项要求。
验收测试方法有正式验收测试,alpha 测试和 beta 测试。
alpha 测试
软件开发公司内部人员在模拟实际操作环境下进行的测试。
beta 测试
在 alpha 测试之后,由软件的最终用户们进行试用,公司会要求用户报告异常情况,再对 beta 版本进行修正和完成,最终得到正式发布的版本。
软件测试步骤
软件测试要经过的步骤是:单元测试→集成测试→确认测试→系统测试。
单元测试:对源程序中每一个模块单元进行测试,检查各个模块是否正确实现规定的功能,从而发现模块在编码中或算法中的错误。该阶段涉及==编码和详细设计文档==。
集成测试:是为了检查软件体系结构的有关问题,也就是检查==概要设计==是否合理有效。
确认测试:主要是检查已实现的软件是否满足==需求规格说明书==中的各种需求。
系统测试:是把已确认的软件与其他系统元素(如硬件、其他支持软件、数据、人工等)结合在一起进行测试。以确定软件是否可以支付使用。
逻辑覆盖
逻辑覆盖率:语句覆盖 < 条件覆盖 < 判定覆盖 < 条件判定覆盖 < 条件组合覆盖 < 路径覆盖
语句覆盖
使程序中每个==可执行语句==至少执行一次
覆盖条件:
条件1:T,条件3:T
判定覆盖
使得程序中每一个==判断==至少取真一次取假一次
覆盖条件:
条件1:T,条件3:F
条件1:F,条件3:T
条件覆盖
使每个的判断中==每个条件==的可能取值至少满足一次
1 | 判断表达式1: |
覆盖条件:
T1,F2,T3,F4
F1,T2,F3,T4
条件判定覆盖
使每个的判断中==每个条件==的可能取值至少满足一次的同时,还需要让==每个判定==各真假各一次,即条件覆盖 + 判定覆盖。
覆盖条件用例:
T1,T2,T3,T4
F1,F2,F3,F4
条件组合覆盖
使所有可能的==条件取值==组合至少执行一次
重点:所有条件取值的组合
编号 | 覆盖条件取值 |
---|---|
1 | T1,T2 |
2 | T1,F2 |
3 | F1,T2 |
4 | F1,F2 |
5 | T3,T4 |
6 | T3,F4 |
7 | F3,T4 |
8 | F3,F4 |
覆盖条件 | 覆盖组合 |
---|---|
T1,T2 , T3 , T4 | 1,5 |
T1,F2 , T3 , F4 | 2,6 |
F1,T2 , F3 , T4 | 3,7 |
F1,F2 , F3 , F4 | 4,8 |
路径覆盖
是程序中==所有可能==执行的路径都执行一遍
继上面的的条件取值表格
覆盖路径 | 覆盖组合 |
---|---|
1-2-4 | 1,5 |
1-2-5 | 1,8 |
1-3-4 | 4,7 |
1-3-5 | 4,8 |
性能测试
负载测试(Large amount of users)
负载测试是一种性能测试,指数据在超负荷环境中运行,程序是否能够承担。 关注点:how much
压力测试(Too many users, too much data, too little time and too little room)
压力测试(又叫强度测试)也是一种性能测试,它在系统资源特别低的情况下软件系统运行情况,目的是找到系统在哪里失效以及如何失效的地方。
容量测试(Large amounts of data)
确定系统可处理同时在线的最大用户数 关注点:how much(而不是how fast) 容量测试,通常和数据库有关,容量和负载的区别在于:容量关注的是大容量,而不需要关注使用中的实际表现。
其中,容量测试、负载测试、压力测试的英文解释为:
Volume Testing = Large amounts of data
Load Testing = Large amount of users
Stress Testing = Too many users, too much data, too little time and too little room
负载测试和性能测试的主要区别在于负载测试时,系统负载是逐渐增加的,而不是一步到位,负载测试需要观察系统在各种不同的负载情况下是否都能够正常工作。
边界值测试
基本边界值测试
测试用例数:4n + 1
健壮边界值测试
测试用例数:6n + 1
最坏情况边界值测试
测试用例数:$5^n$
健壮最坏情况边界值测试
测试用例数:$7^n$