一、测试基础概念:
单元测试的测试内容 | 模块接口测试 |
局部数据结构测试 | |
路径测试 | |
错误处理测试 | |
边界测试 | |
集成测试的测试内容 | 在把各个模块连接起来的时候,穿越接口的数据是否会丢失 |
一个模块的功能是否会对另一个模块的功能产生不利的影响 | |
各个子功能组合起来,能否达到预期要求的父功能 | |
全局数据结构是否有问题 | |
单个模块的误差累积起来,是否会放大,以至达到不能接受的程度 | |
系统测试的测试内容 | 在真实或模拟系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求 |
验收测试的测试内容 | 按照项目任务书或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接受或拒收系统 |
系统:真模环境,检查程序,营外望软屏,陪练用户
验收:任务书、合同、验收依据,决定接受或拒收
二、性能测试基础
交易执行吞吐量:系统服务器每秒能够处理通过的交易数 交易执行响应时间:系统完成事务执行准备后所采集的时间戳和系统完成待执行事务后所采集的时间戳之间的时间间隔,是衡量特定类型应用事务性能的重要指标,表明用户执行一项操作大致需要多长时间 |
硬件中的瓶颈解决办法 | 添加CPU、磁盘或内存 | |
导致系统性能下降的因素 |
内存不足 数据库资源匮乏 网络速度低 硬件资源不足 应用程序架构存在缺陷 软硬件配置不恰当 |
|
CPU问题 | 1、使用更高级的CPU代替; 2、对于多CPU,考虑CPU之间的负载分配; 3、考虑在其他体系上设计系统,增加前置机、设置并行服务器等; 4、增加CPU个数; 5、提高CPU主频; 6、将web服务器与数据库服务器分开部署; 7、调整软件的设计与开发; |
|
带宽问题 | 1、增加带宽; 2、压缩传输数据; |
|
内存和高速缓存 | 1、内存优化(包括操作系统、数据库、应用程序的内存优化); 2、过多的分页与交换可能降低系统的性能; 3、内存分配也是影响系统性能的主要原因; 4、保证保留列表具有较大的邻接内存块; 5、调整数据库缓冲区大小是一个重要内容; 6、将最频繁使用的数据保存在存储区中; |
|
磁盘I/O资源问题 | 1、磁盘读写进度对数据库系统是至关重要的,数据库对象在物理设备上的合理分布能改善性能; 2、磁盘镜像会减慢磁盘写的速度; 3、通过把日志和数据库对象分布在独立的设备上,可以提高系统的性能; 4、把不同的数据库放置不同的硬盘上,可以提高读写速度; 5、把表放置一块硬盘上,把非簇的索引放置在另一块硬盘上,保证物理读写更快;
|
|
配置参数 | 1、包括操作系统和数据库的参数配置; 2、并行操作资源限制的参数(并发用户的数目、会话数); 3、影响资源开销的参数; 4、与I/O有关的参数; |
|
应用系统网络设置 | 1、可以通过数组接口来减少网络呼叫; 2、调整会话数据单元的缓冲区大小; 3、共享服务进程比专用服务进程提供更好的性能; |
|
数据库 | 服务器资源负载过重; 数据库设计不合理; 数据库单个事务处理响应时间长; 系统并发负载造成最终用户响应时间长 |
采用数据库集群策略; 配置正确; |
交易响应时间很长,远超系统性能的需求 | 表示耗费CPU的数据库操作(排序、执行sum、min、max、count)等较多; | 考虑是否有索引以及索引建立是否合理; 尽量使用简单的表链接、水平分割大表格等方法降低; |
内存页交换速率指偶尔走高 | 表明当时有线程竞争内存 | |
内存页交换速率值持续很高 | 内存可能是瓶颈 也可能是内存访问命中率低 |
|
CPU占用率的值持续超过95% | 表明瓶颈是CPU | 增加一个处理器或换一个更快的处理器 |
队列中的字节数超过磁盘的1.5~2倍 | 增加磁盘 | |
缓存点击率持续低于80% | 增加内存 | |
随着并发用户数的递增,交易执行成功率降低 | 服务器端架构设计不合理; 服务器端参数设置不合理; 软件系统实现存在问题; |
三、特定测试
平台非功能测试 | 性能测试、负载测试、压力测试、并发测试、配置测试、可靠性测试、容量测试、失效恢复测试、链接速度测试等 |
XSS测试 | 任何字段包含HTML,如,或任何脚本如 |
SQL注入测试 | 字段任何包含SQL功能符号测试是否使SQL改变为不符合设计意图即可,如包含‘OR、’--、‘OR’1‘等 |
基本路径测试 | 在程序框图基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法 |
web应用中会遇到的测试 | |||
web应用设计 | 总体架构测试 | 1、采用瘦客户端或胖客户端是否适合需求; 2、确定web架构的组成部分是否满足需求; 3、服务器的配置及分布是否满足要求; |
|
客户端设计测试 | 功能设置测试 | 信息服务、办公自动化、Internet支持 | |
信息组织结构测试 | 线性结构设计、非线性结构设计、分层结构设计 | ||
页面设计测试 | 页面一致性、友好的用户界面和直观的导航系统、多种浏览器的兼容、建立页面文件的命名系统、合适的页面布局技术 | ||
服务器端设计测试 | 容量规划的测试 | 估算点击率、延迟、流量是否满足需求; web应用系统所需服务器的资源消耗; |
|
安全系统设计测试 | 安全策略、加密技术、防火墙、网络防毒 | ||
数据库设计测试 | |||
web应用开发测试 | 代码测试 | 源代码测试 | |
链接测试 | 内部链接测试、外部链接测试、邮件链接测试、断链测试 1、该连接将用户带到它所说明的地方 2、被连接页面是存在的 3、保证web应用系统上没有孤立的页面 |
||
框架测试 | 1、随浏览窗口变化自动调整大小; 2、不能完全显示时提供滚动条; 3、在正确的目标框架中打开新页面; |
||
表格测试 | 随浏览窗口变化自动调整大小; | ||
图形测试 | 1、颜色饱和度、对比度; 2、突出的链接颜色是否容易识别; 3、正确加载所有图形; |
||
组件测试 | 表单测试 | 1、检查每个字段的所有验证; 2、检查字段的缺省值; 3、表单中的错误输入; 4、提交操作的完整性; |
|
输入域、错误输入是否有错误提示、必填项和选填项 | |||
Cookies测试 | 存储用户信息和用户操作 | ||
脚本测试 | 静态:手工或工具检查脚本的源代码语法错误、逻辑错误和语言编程有关的错误; 动态:执行脚本进行功能验证; |
||
CGI测试 | 协议用户可通过浏览器实施在服务器上的一些操作 | ||
ASP测试 | 浏览器的缓存问题、正确设置超时、性能测试 | ||
ActiveX控件测试 | 1、签名注册通过验证; 2、没有下载控件时,web系统功能受影响程度; 3、安装与卸载; 4、确认测试环境中是否有旧版本; |
||
web应用运行测试 | 功能测试 | 自动化 | 1、创建脚本 2、插入测试点 3、运行测试 4、分析结果 |
易用性测试 | 界面测试 | 1、元素布局协调性(颜色、位置、大小比例); 2、风格统一性; 3、操作便利性; 4、动态操作测试; 5、屏幕分辨率的影响; 6、浏览窗口最大化和最小化; 7、目标元素的置中与缩放; |
|
辅助功能测试 | 使用说明、导航、站点地图、帮助 | ||
图形测试 | 1、图形用途明确; 2、页面文字颜色风格统一; 3、背景和字体颜色是否搭配; 4、图片大小和质量; |
||
负载压力测试 | 1、交易执行时间; 2、估计最大并发用户量; 3、模拟用户请求,达到系统不能承受负载; 4、若负载不达标,则需优化; |
||
客户配置与兼容性 | 1、浏览器配置; 2、平台兼容; 3、浏览器兼容 |
||
安全性测试 | 基础结构、输入验证、身份验证、授权、配置管理、敏感数据、加密、会话管理、参数操作、异常管理、审核与日志记录 1、安全体系测试; 2、应用和传输安全; |
四、面向对象测试
面向对象单元测试 | 对程序内部具体单一的功能模块的测试,主要是类的成员函数的测试(类和类方法) |
面向对象集成测试 | 对系统内部的相互服务进行测试 |
面向对象系统测试 | 主要以用户需求为标准,借鉴OOA或OOA测试的结果 |
继承关系对测试的影响:若子类重新实现父类的方法或子类的某方法中调用了自己实现的方法,需要重新进行测试;
多态关系对测试的影响:子类中均要测试多态的方法;
子类中重新实现的方法测试序列: | |
1、生成一个新的对象:new 构造函数; 2、根据题干,对最终方法需要的方法进行测试(这里顺序先后需考虑); 3、对最终方法进行测试; |
|
类的测试顺序: | |
1、父类; 2、子类(无需调用其他类); 3、子类(需调用2子类); |
五、计算
通信吞吐量:P=N(并发用户的数量)*T(每单位时间的在线事务数量)*D(事务服务器每次处理的数据负载)
叛逆团队
函数扇出(入)数:模块所属的直接下(上)级模块个数
注释率:注释行数/代码总行数
深度:控制的层数
宽度:层次上模块总数的最大值
作用域:一个判定影响的所有模块的集合
控制域:直接或间接调用的模块集合(作用域应在控制域内)
缺陷探测率(DDP)=技术发现/技术+用户发现
六、安全测试(要记的好多啊!!)
安全攻击手段 | 详细说明 |
网络侦听 | 在数据通信或数据交互过程中,攻击者对数据进行截取分析,从而实现对包括用户支付账号及口令数据的非授权获取和使用 |
冒充攻击 | 攻击者口令猜测、消息重演与篡改等方式,伪装成另一个实体,欺骗安全中心的认证及授权服务,从而登录系统,获取对系统的非授权访问 |
拒绝服务攻击 | 攻击者通过对网络协议的缺陷进行故意攻击,或通过野蛮手段耗尽被攻击对象的资源,使系统关键服务停止响应甚至奔溃,从而使系统无法提供正常的服务或资源访问 |
Web安全攻击 | 攻击者通过跨站脚本或SQL注入等攻击手段,在系统网页中植入恶意代码或在表单中提交恶意SQL命令,从而旁路系统正常访问控制或恶意盗取用户信息 |
记忆:一听三攻,巨斧砍猫,尾巴安全
安全测试方法 | 详细说明 |
功能验证 | 采用黑盒测试方法,对安全中心提供的密钥管理、加密解密服务、认证服务、授权服务进行功能测试,验证所提供的相应功能是否有效(1) 管家忍受 |
漏洞扫描 | 借助漏洞扫描工具,自动检测远程、网络、相应功能模块、本地主机安全性漏洞,以便于及时修补漏洞(1) |
模拟攻击试验 | 特殊的黑盒测试案例,通过模拟典型的安全攻击来验证安全中心的安全防护能力(1) |
侦听测试 | 通过典型的网络数据包获取技术,在系统数据通信或数据交互的过程中,对数据进行截取分析,从而发现系统在防止敏感数据被窃取方面的安全防护能力(1) |
漏洞扫描器分类 | |
主机漏洞扫描器(1) | 在本地运行检测系统漏洞 |
网络漏洞扫描器(1) | 基于网络远程检测目标网络和主机系统漏洞 |
密钥管理功能基本测试点: | |
功能测试 | 1、系统是否具备密钥生成、密钥发送、密钥存储、密钥查询、密钥撤销、密钥恢复等基本功能; 2、密钥库管理功能是否完善; 3、密钥管理中心的系统、设备、数据、人员等安全管理是否严密; 4、密钥管理中心的审计、认证、恢复、统计等系统管理是否具备; 5、密钥管理系统与证书认证系统之间是否采用基于身份认证的安全通信协议。 |
性能测试 | 1、检查证书服务器的处理性能是否具备可伸缩配置及扩展能力,利用并发压力测试工具测试受理点连接数、签发在用证书数目、密钥发放并发请求数舒服满足业务需求; 2、测试是否具备系统所需最大量的密钥生成、存储、传送、发布、归档等密钥管理功能; 3、是否支持密钥用户要求年限的保存期; 4、是否具备异地容灾备份; 5、是否具备可伸缩配置及扩展能力; 6、关键部分是否采用双机热备和磁盘镜像。 |
加解密服务功能基本测试点: | |
功能测试 | 1、系统是否具备基础加解密功能; 2、能否为应用提供相对稳定的统一安全服务接口; 3、能否提供对多密码算法的支持; 4、随着业务量的逐渐增加,是否可以灵活增加密码服务模块,实现性能平滑扩展。 |
性能测试 | 1、各加密算法使用的密钥长度是否达到业内安全的密钥长度; 2、RSA、ECC等公钥算法的签名和验证速度以及AES等对称密钥算法的加解密速度是否满足业务要求; 3、处理性能如公钥密码算法签名等是否具备可扩展能力。 |
口令安全防护措施: | 1、口令强度:设置最小口令长度、口令中多种类字符 2、口令传输存储:采用加密或Hashing手段 3、口令管理:设置口令失效,强制用户定期更新口令 |
口令认证机制基本测试点: | 1、用户名称:测试用户名称唯一性; 2、用户口令:测试是否满足当前流行的控制模式(最大/最小口令失效、口令历史、最小口令长度、口令复杂度、加密选项、口令锁定) |
客户端UKey基本测试点: | |
功能测试 | 1、是否支持AES、RSA等常用加密解密算法; 2、是否提供外部接口以支持用户证书及私钥的导入; 3、是否提供外部接口支持将数据传入Key内,经过公钥/私钥计算后导出; 4、是否能实现USBKey插入状态实时检测,当UKey意外拔出时能否自动锁定用户状态。 |
性能测试 | 1、是否具备私钥不能导出的基本安全特性; 2、Key内加解密算法的执行效率是否满足系统最低要求。 |
证书服务器测试的基本测试点: | |
功能测试 | 1、系统是否提供证书的申请、审核、签发与管理功能; 2、系统是否提供证书撤销列表的发布和管理等功能; 3、系统是否提供证书认证策略及操作管理策略、自身证书安全管理等管理服务; 4、是否可用提供加密证书和签名证书; 5、证书格式是否采用标准X.509格式 |
性能测试 | 1、检测证书服务器的处理性能是否具备可伸缩配置及扩展能力; 2、关键部分是否采用双机热备和磁盘镜像等安全机制; 3、是否满足系统的不间断运行、在线故障恢复和在线系统升级的需要; 4、是否满足需求中预测的最大数量用户正常访问需求,且是否具备3~4倍冗余,并更加需要测试证书服务器的并发处理能力。 |
故障恢复与容灾备份措施测试内容: | |
故障恢复 | 1、整个系统是否存在单点故障; 2、对于关键应用系统,当任何一台设备失效时,能否按照预定义的规则实现快速切换; 3、是否采用磁盘镜像技术,实现主机系统到磁盘系统的高速连接。 |
数据备份 | 1、对于关键业务,是否具备必要的双击热备或磁盘镜像等热备份机制; 2、对于所有业务,是否提供外部存储器备份和恢复机制,保证系统能够根据备份策略恢复到指定时间的状态。 |
容灾备份 | 1、是否建立异地容灾备份中心,当主中心发生灾难性事件时,可由备份中心接管所有业务; 2、备份中心是否有足够的宽带确保与主中心的数据同步,是否有足够处理额能力来接管主中心的业务,能否确保快速可靠地与主中心的应用切换 |
数据库权限测试内容: |
1、是否采用加密算法进行加密保护; 2、为不同应用系统或业务设置不同的专门用户用于对数据库访问 3、杜绝代码中使用超级用户及默认密码对数据库的访问 |
基本安全防护系策略 | |
防火墙 | 1、对数据包(源IP地址、目的IP地址、目的端口、IP协议号)过滤; 2、审计和报警机制; 3、Proxy(代理); 4、流量控制(带宽管理); 5、统计分析; 6、流量计费; |
入侵检测 | |
漏洞扫描 | |
病毒防治 | |
安全审计 | |
web信息防篡改系统 |
七、测试用例
web应用输入功能(给2个条件A、B) 等价类划分 |
1、A条件错误,B条件正确; 2、A条件正确,B条件错误; 3、A、B均正确; 4、安全性输入:XSS和SQL注入; |
决策表法设计测试用例步骤 | 1、确定规则的个数; 2、列出所有的条件桩和动作桩; 3、填入条件项和动作项; 4、合并相似规则,化简决策表。 |
八、可靠性
软件可靠性 | 在规定的条件下,在规定的时间内,软件不引起系统失效的概率。 |
影响可靠性的主因 | 运行剖面、软件规模、软件内部结构、软件的开发方法、开发环境、软件的可靠性投入 |
失效概率 | 软件从运行开始到某一时刻t为止,出现失效的概率 |
可靠度 | 软件系统在规定的条件下,规定的时间内不发生失效的概率 |
平均无效时间 | 软件运行后,到下一次出现失效的平均时间 |
九、按题型进行分析
白盒-基本路径测试法(9) |
1、写100%判定覆盖所需的逻辑条件 |
1、注意判定的嵌套,要把前一判定的约束条件写上(几个条件之间用&&); 2、可在表达式前加‘!’来表示假值; 3、可使用程序框图的方式先画出来,使用分支覆盖写逻辑条件; 4、==与!=对应; 5、n个判定,逻辑条件就是2n; |
2、画控制流图,计算环路复杂度V(G) |
1、注意条件表达式中的复合条件,需要拆开成多条判断语句; 2、||相当于满足其中一个条件即可; 3、&&相当于满足所有条件; 4、注意break跳出循环体; 5、注意循环体内的执行只有break会跳出循环,其他不会,不需要给线路到循环外。 |
|
3、控制流图的线性无关路径 |
1、循环部分可用...; 2、列出来以后要和V(G)的数量相等; |
|
4、基本路径测试法概念 | ||
Web应用(7) |
1、计算,一般都会给出计算公式 |
1、按题目计算,仔细! 2、通信吞吐量计算 |
2、系统浏览器兼容性矩阵 | 1、把知道的系统和浏览器都写上去就行 | |
3、针对功能(一般就是表单提交)设计测试用例 | 1、等价类划分:每个条件的错误+其他的正确,以及全部正确情况; 2、安全性(XSS跨站攻击和SQL注入); |
|
4、非功能测试 | ||
5、表单测试 | ||
6、根据题干设计测试输入 | 1、普通数据输入; 2、XSS、SQL输入; 3、可以把测试数据写出来,然后测试数据代表什么写出来; 4、最好包含有效等价类和无效等价类; |
|
7、链接测试 | ||
安全(8) |
1、安全攻击手段 |
|
2、安全性测试方法 | ||
3、密钥管理功能基本测试点 | ||
4、加解密服务功能基本测试点 | ||
5、口令的安全防护措施 | ||
6、口令认证机制的基本测试点 | ||
7、客户端UKey基本测试点 | ||
8、证书服务器基本测试点 | ||
9、故障恢复与容灾备份措施测试内容 | ||
10、数据库权限测试内容 | ||
11、基本安全防护策略、测试点 | ||
负载(4) |
|
|
黑盒(等价)(5) |
1、等价类表的设计、填空 |
1、一定要注意有效类+无效类=全部,不能忽略任何一种情况; |
2、根据等价类表,对测试用例表填空 | 1、仔细依照题意即可 | |
3、根据题干补充用例 | 1、主要就是用等价类划分和边界值法 | |
4、边界值法设计测试用例 | 1、把输入、预计输出写出; 2、所有的边界输入项都需要写出来; 3、一般就是把有效等价类的各个边界值写出来,然后再取等价类中的任意一个值。 |
|
5、决策表法设计测试用例的步骤 | ||
黑盒(场景)(3) |
用例 |
1、单独基本流也算一条用例; 2、一条用例里的每个流只需要写一次; |
面向对象(3) |
1、根据图判断类和类之间的关系 |
口诀记住完全没问题 |
2、判断是什么机制 | 继承、多态 | |
3、继承、多态对测试的影响 | 上面有,记住就好 | |
4、判断是否需要重新测试方法 | ||
5、类中某方法的测试序列 | ||
6、几个类的测试序列 | ||
7、面向对象单元测试的对象 | ||
可靠性(1) |
1、可靠性含义、影响软件可靠性的主因 |
|
2、失效概率、可靠度、平均无效时间的含义 | ||
3、软件可靠度R(t)与软件失效概率F(t)之间的关系 | R(t)=1-F(t) | |
综合(4) |
1、填写覆盖用例统计表 |
1、记住几种覆盖的区别就好 |
2、测试用例填空 | 1、仔细看题目 | |
3、选择测试用例设计方法 | ||
4、指出用例中的缺陷 | 一般就是缺少某些情况的用例 | |
5、代码审查法找出代码中错误 | 1、读说明查看代码,这里往往会有不符合说明的错误; 2、查看定义是否有初始化; 3、参数是否符合范围要求; 4、符号是否正确; |
|
6、计算函数扇出数、注释率、缺陷探测率(DDP) | ||
7、根据题意填写输入输出 | ||
8、测试策略、测试内容 | 策略:正常指令、异常指令的测试 内容:根据题意 |