软件测试的一些定义
1. 什么是软件测试?
为了发现程序中的错误而执行程序的过程。--> 弄清预期结果与实际结果之间的差别。
2. 软件测试分类:
根据项目流程阶段:
单元测试:模块接口(输入参数与形式参数个数属性顺序是否匹配);路径;错误处理;边界条件(某程序的规格要求说明书计算出每月保险金扣除额为0-1165.25元--边界值可取0.00,1165.25,-0.01,1165.26)
集成测试:穿越模块接口的数据是否丢失;功能;影响其他功能;
系统测试:功能;性能;安全;兼容
验收测试:功能确认;安全可靠性;易用性(ie支持多个选项卡并存为浏览多个网页提供了快捷途径);可扩充性;兼容性(对css解释不统一;特效使用发生误差;函数解释不同);资源占用率测试;用户文档资料验收(如关注文档正确性,完备性,一致性,易理解性等)
功能与性能:
功能测试:逻辑功能;界面测试(整体界面风格--如儿童活泼;不同界面图标统一--如标记x一样;窗体界面--如放大控件也大);易用性;安装测试;兼容性测试(ietest;不同系统可安装虚拟机)
性能测试:时间性能;空间性能
功能测试与非功能测试
功能测试:功能指的是系统能做什么。安全性测试(对安全性相关的功能如防火墙进行测试。检测系统和数据能否抵御外部恶意威胁如病毒);互操作性--评估软件产品与其他一个或多个组件或系统交互能力。
非功能测试:测试系统运行的表现如何。性能--以性能预期目标为前提不断施加压力,验证系统在资源可接受范围内,是否能达到性能预期;负载--不断增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到极限如某种资源已经饱和状态;压力--超过安全负载情况下,对系统不断施加压力,通过确定一个系统的瓶颈或不能接受的用户请求的性能点的最大服务级别;可用性;可维护性;可靠性;可移植性;稳定性--使系统运行较长一段时间
根据测试工作对软件代码的可见程度划分(按测试技术分:黑盒;白盒):
黑盒测试:
白盒测试:
灰盒测试
测试技术:
黑盒测试:设计技术(基于规格说明的技术)是分析测试基础文档来选择测试条件、测试用例或测试数据的技术。包括了功能和非功能;等价类划分;边界值分析;决策表测试;状态转换测试;用例测试
白盒测试:设计技术(结构化或基于结构的测试技术)基于分析被测组件或系统的结构的测试技术。语句覆盖和覆盖率;判定覆盖和覆盖率;基于结构的覆盖-如条件覆盖和多重条件覆盖。
基于经验的技术:错误推测法;探索性测试
Alpha 和 Beta 测试
Alpha:工厂验收测试
Beta:现场验收测试
手工测试与自动化测试:
手工测试:
自动化测试: 功能自动化;性能自动化
其他测试:
冒烟测试:对一个新版本进行大规模测试之前
回归测试:修改了旧代码后
随机测试:放在测试的最后执行--升级版是探索性测试
安全测试:产品开发基本完成。工具:Nmap主要包括四个方面的扫描功能,分别是主机发现、端口扫描、应用与版本侦测、操作系统侦测。这四项功能之间,又存在大致的依赖关系。通常情况下顺序关系。指定的目标可以是一个IP地址,也可以是主机名(Nmap会自动解析其主机名)如nmap 192.168.1.105 从输出信息中,可以看到目标主机192.168.1.105上开启的端口有21、22、23、111、445,及这些端口所对应的服务。而且,还可以看到该目标主机的MAC地址为00:0C:29:31:02:17。从最后一行信息,可以看出目标主机是活动的(up),并且扫描该目标主机共用了0.87秒。nmap -A 192.168.1.105可以明显看出比前面例子扫描结果更详细。在以上输出信息中,可以看到目标主机上开启的端口、服务器、版本、操作系统版本、内核、系统类型等。根据分析输出的信息,可知目标主机上运行了FTP、SSH、Telnet等服务,并且可以看到各服务的版本及权限信息。而且,还可以知道目标主机的操作系统是Linux,内核版本为2.6.32等
维护测试:移植测试(转换测试);数据移植测试;存档测试;
测试原则:
杀虫剂悖论:为了克服“杀虫剂悖论”,测试用例需要经常的评审和修改,不断增加新的不同的测试用例来测试软件或系统的不同部分,保证测试用例永远是最新的,即包含着最后一次程序代码或说明文档的更新信息。这样软件中未被测试过的部分或者先前没有被使用过的输入组合就会重新执行,从而发现更多的缺陷。软件测试人员必须不断地编写新的不同的测试来检验程序的不同部分从而找出更多的bug。让其他的人来测试你的程序将有助于打破”杀虫剂悖论”。
软件错误:
软件错误:软件生存期内的人为错误,导致软件缺陷产生。
是人为过程,相对于软件本身是外部行为。
软件缺陷:存在于软件(文档、数据、程序)中的偏差,导致软件在某个特定条件下出现故障,这时称软件 缺陷被激活。
软件故障:软件运行过程中出现的不希望或不可接收的内部状态。是动态行为。
软件失效:软件运行时产生的不希望或不可接受的外部行为结果。
综上:软件错误是一种人为错误。一个软件错误必定产生一个或多个软件缺陷。当一个软件缺陷被激活时,便产生一个软件故障;同一个软件缺陷在不同条件下被激活,可能产生不同的软件故障。软件故障如果没有集市的容错措施加以处理,便不可避免地导致软件失效;同一个软件故障在不同条件下可能产生不同的软件失效。
软件缺陷的分类:
- 按问题引出不同
- 按功能(模块)
- 按缺陷的严重程度:影响进度的问题;死机;功能问题;界面问题;建议性问题
- 按修复缺陷的优先级:高 应立即修复的问题;中 可排队处理的问题;低 可滞后处理的问题
性能测试的一些定义
1. 什么是软件性能?
软件性能应该是一种指标,通过这个指标可以衡量,系统或构件性能达到的程度。也是对软件性能需求的一个测试和评估,用来验收或评估软件达到的性能程度。
2.性能测试相关术语
a) 响应时间
是用户提交一个请求,系统从开始呈现到将所有信息都呈现到客户端所需要的时间
b) 并发用户数
指同一时刻与服务器进行数据交互的所有用户数量。如a系统期望用户1000个,使用系统用户数量*(5%-20%)只要测出能支持100个并发用户就可以了
c) 吞吐量
吞吐量是服务器发给客户端的流量,不包括客户端发给服务器的流量
d) 吞吐率
指单位时间内的数据传输量,即吞吐量/传输时间,也可以是单位时间内处理的客户请求数。它是衡量网络性能一个重要指标。通常情况下吞吐量越大,吞吐率的值也越大。以不同的方式表达的吞吐量可以说明不同层次的问题。例如,以字节数/秒方式表示的吞吐率主要受网络基础设置、服务器架构、应用服务器制约;以请求数/秒方式(tps-transaction per second)
衡量系统处理能力的重要指标,它表示的吞吐率主要受应用服务器和应用代码的制约。吞吐率越大表示系统的负载能力越强。
吞吐率作为性能测试时主要关注的一个指标,与虚拟用户数之间存在一定的关系,当系统没有遇到性的瓶颈时,可以采用下面这个公式来计算。
如下表:吞吐率为(1*4)/2.392s=1.67 个request/sec
e) 点击率 指每秒钟用户向 Web 服务器提交的 HTTP 的数量
g) 资源利用率
指的是系统资源被占用的情况,主要包括CPU利用率、内存利用率、磁盘利用率、网络等
h) 性能计数器
是描述服务器或操作系统性能的一些数据指标。主要是通过添加计数器来观察系统资源的使用情况
i) 思考时间 (ThinkTime)
也称为“休眠时间”,从业务层面来说,这个时间是指用户在进行操作时,每个请求之间的时间间隔
3. 性能测试划分
a) 负载测试
是通过对被测试系统不断的加压,直到超过预定的指标或者是部分资源已经达到了一种饱和状态不能再加压为止。
流程:
- 计划负载测试:计划哪些准备:如并发用户数,主要业务流程,需要的相应次数。
- 创建Vuser脚本
- 设计场景--用controler创建一个负载测试的环境
- 运行场景--用controler驱动,管理并监控这个负载测试。
- 分析结果--用analysis生成图表与报表,对系统性能进行评估。
loadrunner监控器:监控每一层次的结构性能:loadrunner 提供了许多主要的后台系统的组件(包括web,application,database,以及erp/crm服务器)的监控器如确定负载对你cpu(处理器)disk()
b) 压力测试
指当系统已经达到一定的饱和程度(如CPU、磁盘等已经处于一种饱和状态),系统处理业务的能力,系统是否会出现崩溃等
c) 配置测试
配置测试 (ConfigurationTesting)是通过调整系统软/硬件环境,了解在不同环境下系统性能指标的情况,从而找到系统的最优配置。
d)并发测试
并发测试(ConcurrencyTesting)是通过模拟用户并发访问,测试多用户同时访问同一应用、模块或数据,观察系统是否存在死锁、系统处理速度明显下降等其它的一些性能问题
e) 可靠性测试
是当系统在一定的业务压力下,让系统持续运行一段时间,看系统是否达到我们要求的稳定性,这里强调在一定业务压力下持续运行的能力,一定都会有一个明确的要求,例如:持续运行多少天系统不能出现问题
4. 性能测试应用领域
a) 能力验证
能力验证是性能测试最常用的一个领域。一般能力验证采用这样的描述方式:“某系统能否在条件A下具备B性能”
b) 规划能力
规划能力与能力验证有相似之处,但还是有不一样的地方,能力验证强调的是在某个条件下具备什么样的能力,而规划能力体现在系统如何才能达到要求的性能指标
c) 性能调优
性能调优是通过测试来调整系统的环境,最终使系统性能达到最优的状态。这是一个持续调优的过程,主要调优的对象有数据参数、应用服务器、系统的硬件资源等--确定基准环境,负载,性能指标-调整系统运行环境实现方法执行测试-记录测试结果进行分析
d) 发现缺陷
性能测试应用领域的主要目标是通过性能测试的手段来发现系统存在的缺陷
手机App测试
1: 中断:来电中断;短信中断;其他(蓝牙,充电,闹钟,插拔数据线,手机锁定,断电,死机重启)
2 :安装新版本
3: 兼容性:不同型号,厂家,分辨率,屏幕大小
软硬件:
指信息系统运行的环境,主要包括硬件(服务器,存储,网络设备等)和软件(操作系统,数据库,中间件,通讯协议等)部分。
可扩展性原则:
硬件平台能够根据业务需要进行动态设置,如处理器、内存网络和I/o卡能够满足业务需求:为不确定的业务需求迅速作出反应。如软件平台能够支持系统处理节点的扩展,例如应用服务器,web服务器,数据库服务器节点数的扩展。网卡具有多个pci-e,pci-x插槽,服务器机箱设有多个硬盘托架,能放置更多的硬盘。