软件测试
定义:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
目的:为了发现程序中的错误,而不是去证明程序中不存在缺陷。
测试流程:
1、对要执行测试的产品/项目/需求进行分析,确定测试策略,制定测试计划。
2、针对测试计划书进行评审(测试经理、测试负责人员、需求人员、软件开发人员等)
3、设计测试用例。越详细越好。若在测试的过程中发现用例中没有的软件缺陷,可以将该软件缺陷补录入测试用例中。
4、执行测试用例。执行前,要将测试过程中所需要的环境及数据准备好。
5、提交软件缺陷bug。
6、验证软件缺陷。
7、编写测试报告。对测试进行分析,总结本次的经验教训。
测试方法:
1、等价类
1)定义:是把所有可能的输入数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例。等价类分为有效等价类和无效等价类。
2)如何划分等价类
1]在输入条件规定了取值范围或值的个数的情况下,则可以确立一个有效等价类和两个无效等价类。
如:输入值是学生成绩,范围是0~100。
2]在输入条件规定了输入值的集合或者规定了"必须如何"的条件的情况下,可确立一个有效等价类和一个无效等价类。
2、边界值
1)定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
2)与等价类的区别
1]边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价类的每个边界都要作为测试条件。
2] 边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况。
3)常见的边界值
1] 对16-bit 的整数而言 32767 和 -32768 是边界
2] 屏幕上光标在最左上、最右下位置
3] 报表的第一行和最后一行
4] 数组元素的第一个和最后一个
5] 循环的第 0 次、第 1 次和倒数第 2 次、最后一次
3、判定表
4、因果图
5、错误推测
分类:
1、 从是否关心软件内部结构和具体实现的角度划分(按测试分类)
白盒测试:主要针对代码进行检查的测试,是基于代码的测试。
黑盒测试:功能测试,手工测试。它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用。
灰盒测试:利用软件、工具,对程序进行性能测试、安全测试、压力测试等
2、 从是否执行程序的角度
静态测试
动态测试
静态测试:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符号执行来找错。静态测试包括代码检查、静态结构分析、代码质量度量等。它可以由人工进行,充分发挥人的逻辑思维优势,也可以借助软件工具自动进行。
动态测试:动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
3、 从软件开发的过程按阶段划分有
单元测试、功能测试、集成测试、确认测试、系统测试、验收测试、回归测试、性能测试。
单元测试:单元测试又称模块测试,是针对软件设计的最小单位 ─ 程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。
测试对象是模块内部的程序错误;目的是消除局部模块逻辑和功能上的错误和缺陷;
测试依据是模块的详细设计;测试方法采用白盒测试。
集成测试:将所有模块按照设计要求组装成为系统。这时需要考虑的问题是:
– 在把各个模块连接起来的时候,穿越模块接口的数据是否会丢失;
– 一个模块的功能是否会对另一个模块的功能产生不利的影响
– 各个子功能组合起来,能否达到预期要求的父功能;
– 全局数据结构是否有问题;
– 单个模块的误差累积起来,是否会放大,从而达到不能接受的程度。
集成测试的测试对象是模块间的组装和调用关系;
目的是找出与软件设计相关的程序结构模块调用关系,模块间接口方面问题;
测试依据是概要设计;测试方法采用灰盒测试。
确认测试:功能测试。验证软件的功能和性能及其它特性是否与用户的要求一致。
系统测试:将通过确认测试的软件,作为整个基于计算机系统的一个元素,与计算机硬件、外设、某些支持软件、数据和人员等其它系统元素结合在一起,在实际运行环境下,对计算机系统进行一系列的组装测试和确认测试。
系统测试的测试对象是整个系统;测试的目的是对整个系统进行测试;
测试的依据是需求规格说明书;测试方法黑盒测试。
验收测试:在通过了系统的有效性测试及软件配置审查之后,就应开始系统的验收测试。
* 验收测试是以用户为主的测试。软件开发人员和QA(质量保证)人员也应参加。
* 由用户参加设计测试用例,使用生产中的实际数据进行测试。
* 在测试过程中,除了考虑软件的功能和性能外,还应对软件的可移植性、兼容性、可维护性、错误的恢复功能等进行确认。
回归测试:在测试过程中会提交很多软件缺陷,当缺陷被修复后,需要针对缺陷对程序再次进行测试,并要考虑到修复的缺陷是否会对程序的其他模块有所影响。
性能测试:是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
兼容测试:主要是检查软件在不同的软\硬件平台上是否可以正常的运行,即软件可移植性。
兼容的类型:细分为平台的兼容,网络兼容,数据库兼容,以及数据格式的兼容。
兼容测试的重点:对兼容环境的分析。通常,是在运行软件的环境不是很确定的情况下,才需要做兼容测试。
测试覆盖类型
语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖、路径覆盖
自动化测试工具有:基于web的测试管理工具TestDirector、配置管理工具VSS、QTP以及性能测试工具LoadRunner
C/S和B/S结构的软件进行测试时有何不同
C/S又称Client/Server或客户/服务器模式。服务器通常采用高性能的PC、工作站或小型机,并采用大型数据库系统。客户端需要安装专用的客户端软件。
B/S是Brower/Server的缩写,客户机上只要安装一个浏览器(Browser)。浏览器通过Web Server同数据库进行数据交互。
测试计划包括:产品基本情况的调研、测试需求说明、本阶段测试策略和记录、测试资源配置、计划表、问题跟踪报告、测试计划的评审、结果等。
测试报告(小结)包括:测试目的、测试背景、测试方法、测试范围、测试环境、测试所用到的工具、测试结果、缺陷分析、测试结论与测试建议等。
测试用例包括的信息:
版本号、项目名称、模块名称、用例编号、用例名称、用例级别、预置条件、验证步骤、期望结果、测试结果、测试时间、测试人员、备注。
缺陷包括的内容:
缺陷编号、状态、类型、标题、描述、严重程度、优先级、版本、所属模块、提交人、提交时间、附件(截图、录像)
缺陷的生命周期
提交->确认->分配->修复->验证->关闭
软件的缺陷等级应如何划分?
A类—严重错误,包括以下各种错误: 1. 由于程序所引起的死机,非法退出 2. 死循环 3. 数据库发生死锁 4.因错误操作导致的程序中断 5. 功能错误 6. 与数据库连接错误 7. 数据通讯错误
B类—较严重错误,包括以下各种错误: 1. 程序错误 2. 程序接口错误 3.数据库的表、业务规则、缺省值未加完整性等约束条件
C类—一般性错误,包括以下各种错误: 1. 操作界面错误(包括数据窗口内列名定义、含义是否一致) 2. 打印内容、格式错误 3.简单的输入限制未放在前台进行控制 4. 删除操作未给出提示 5. 数据库表中有过多的空字段
D类—较小错误,包括以下各种错误: 1. 界面不规范 2. 辅助说明描述不清楚 3. 输入输出不规范 4. 长操作未给用户提示 5. 提示窗口文字未采用行业术语 6. 可输入区域和只读区域没有明显的区分标志
E类—测试建议
数据库:
创建:create table/database
删除表: drop table
选择:select * from table1 where 范围
插入:insert into table1(field1,field2) values(value1,value2)
删除:delete from table1 where 范围
更新:update table1 set field1=value1 where 范围
查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!
排序:select * from table1 order by field1,field2 [desc]
总数:select count as totalcount from table1
求和:select sum(field1) as sumvalue from table1
平均:select avg(field1) as avgvalue from table1
最大:select max(field1) as maxvalue from table1
最小:select min(field1) as minvalue from table1
例题:页面中有一个输入日期的输入框和一个输入身份证号的输入框,如何进行用例设计?
输入日期的输入框要考虑边界值、输入非法字符、非数字等
身份证输入框要考虑18位身份证、16位身份证、非18、16位的数据、汉字、字母、非法字符等。
例题:我手上这支笔,请你根据这支笔设计测试用例
首先要测它的外观、颜色是否符合要求、她所占的空间是多大、是否环保、接下来测它的质量、这支笔是否能够写字流畅、写出的自得颜色是否符合要求、能使用多长时间等