1.软件测试发展历史
- 软件测试的发展历史(转). 20世纪60年代(软件工程建立前),为表明程序正确而进行测试。. 1972年在北卡罗来纳大学举行了首届软件测试正式会议。. 1975年John Good Enough和Susan Gerhart在IEEE上发表了《测试数据选择的原理》的文章,软件测试被确定为一种研究方向。. 1979年,Glenford Myers的《软件测试艺术》,对测试做了定义:测试是为发现错误而执行的一个程序或者系统的过程。. 20世纪80年代早期,“质量”的 角开始吹响。软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容。制定了各类标准。. 1983年,Bill Hetzel在《软件测试完全指南》中指出:测试是以评价一个程序或者系统属性为目标的任何一种活动,测试是对软件质量的度量。. 20世纪90年代,测试工具盛行起来。. 1996年提出的测试能力成熟度TCMM(Testing Capability Maturity Model)、测试支持度TSM(Testability Support Model)、测试成熟度TMM(Testing Maturity Model)。. 到了2002年,Rick和Stefan在《系统的软件测试》一书中对软件测试做了进一步定义:测试是为了度量和提高被测软件的质量,对测试软件进行工程设计、实施和维护的整个生命周期过程。
2.软件测试
- 软件测试的最终目的是为了发现软件工程中存在的BUG以及安全漏洞等,从而有效的对整个软件工程中潜在的风险进行修正。
- 软件测试是为了发现软件的错误,而执行软件的过程。
3.测试方向
功能测试
- Functional testing(功能测试),也称为behavioral testing(行为测试),根据产品特性、操作描述和用户方案,测试一个产品的特性和可操作行为以确定它们满足设计需求。本地化软件的功能测试,用于验证应用程序或 站对目标用户能正确工作。使用适当的平台、浏览器和测试脚本,以保证目标用户的体验将足够好,就像应用程序是专门为该市场开发的一样。功能测试是为了确保程序以期望的方式运行而按功能要求对软件进行的测试,通过对一个系统的所有的特性和功能都进行测试确保符合需求和规范。
- 功能测试也叫黑盒测试或数据驱动测试,只需考虑需要测试的各个功能,不需要考虑整个软件的内部结构及代码.一般从软件产品的界面、架构出发,按照需求编写出来的测试用例,输入数据在预期结果和实际结果之间进行评测,进而提出更加使产品达到用户使用的要求。
性能测试 - 性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行。通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
接口测试
接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等。
自动化测试 - 一般是指软件测试的自动化,软件测试就是在预设条件下运行系统或应用程序,评估运行结果,预先条件应包括正常条件和异常条件。自动化测试是把以人为驱动的测试行为转化为机器执行的一种过程。
- 通常,在设计了测试用例并通过评审之后,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,为了节省人力、时间或硬件资源,提高测试效率,便引入了自动化测试的概念。
安全测试
- 安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程 。
白盒测试
-
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。”白盒”法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。”白盒”法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。贯穿程序的独立路径数是天文数字。
-
常用的软件测试方法有两大类:静态测试方法和动态测试方法。其中软件的静态测试不要求在计算机上实际执行所测程序,主要以一些人工的模拟技术对软件进行分析和测试;而软件的动态测试是通过输入一组预先按照一定的测试准则构造的实例数据来动态运行程序,而达到发现程序错误的过程。在动态分析技术中,最重要的技术是路径和分支测试。六种覆盖测试方法属于动态分析方法:(强度由低到高)语句覆盖、判定覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、路径覆盖。
分类 -
按测试方式分为:静态测试、动态测试。
-
静态测试:静态方法是指不运行被测程序本身,仅通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。对需求规格说明书、软件设计说明书、源程序做结构分析、流程图分析、符 执行来找错。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。
-
动态测试:动态测试方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率、正确性和健壮性等性能。这种方法由三部分组成:构造测试用例、执行程序、分析程序的输出结果。
1
2
3 -
按测试方法分为:白盒测试、黑盒测试。
-
区分黑盒测试和白盒测试的依据是:是否能看到被测源程序。
-
在白盒测试中:使用白盒测试方法时,确定测试数据的依据是指定的覆盖标准和程序的内部逻辑。
-
静态白盒测试:在不执行代码的代码的条件下有条理地仔细审查软件设计、体系结构和代码,从而找出软件缺陷的测试方法。
-
黑盒测试用例的实际方法主要包括:等价类划分法、边界值分析法、错误推测法、因果图法等。等价类划分法分为两步:意识划分等价类表,二是设计相应测试用例。
-
动态黑盒测试:在测试的工作中进行输入、接受输出、检验结果,不深入代码细节的测试方法。
1
2
3 -
按测试目的划分:功能测试、性能测试、安全测试、压力测试、用户界面测试、接口性测试、健壮性测试、兼容性测试等。
-
兼容性测试向前兼容是指可以使用软件的以前版本;向后兼容是指可以使用软件的未来版本。
4.团队及能力
- 从整个项目的大局出发,把工作做好。
- 要逐渐具有团队协作能力。
- 协助组员解决问题。
- 配合完成测试任务。
- 督促项目整体进度(包括督促开发去改bug)。
- 出现问题勇于承担。
- 提供问题解决方案(发现问题不是能力,发现问题并提出解决方案才是真的能力)
- 跟开发人员阐述缺陷时要简洁明了、清晰易懂。当发现严重缺陷时,也不要大惊小怪,要站在开发人员的角度思考如何解决问题。而不是踩在开发头上,炫耀自己发现问题的能力。
- 有效控制测试成本、制定测试计划、调节组员情绪、进行风险评估、控制测试方向。
5.测试文档
- 测试文档包括内容有:软件测试文档、测试计划、测试设计规格说明书、测试用例说明、测试规程规格说明、测试日志、软件缺陷 告、测试总结 告等。
- 测试计划中包括:测试资源、进度安排;测试策略;测试范围。
- 产品说明书(需求文档)的变更应当受到控制。
6.软件开发模式
- 软件开发模式包括:大棒模式、流水模式、瀑布模式、边写边改模式、螺旋模式。
- 软件开发特点:边写边改模式(几乎没有产品计划、进度安排和正规的开发过程的软件开发模式)
7.软件测试基本流程
- 测试需求分析阶段
- 测试计划阶段
- 测试设计阶段
- 测试执行阶段
- 测试评估阶段
具体为
开发流程:
- 了解用户需求
- 进行需求分析
- 得知功能组成及设计软件结构
- 开发设计计划
- 概要设计
- 详细设计
- 进行软件编码
- 单元测试
- 代码审查
- 打包提交给测试部
- 测试部返回bug
- 再次进入测试部测试且直到bug解决
- 版本上线
- 面向用户使用
测试流程:
- 了解用户需求
- 参考需求规格说明书
- 测试计划(人力物力时间进度的安排)
- 编写测试用例
- 评审用例
- 搭建环境
- 测试包安排预测(冒烟测试)
- 正式测试bug
- 测试结束出 告
- 版本上线
- 面向用户
7.关于测试和测试员
- 软件测试员的目的是发现软件缺陷,尽可能早一些发现,并且确保其得以早日修复。(不用必须要等到前端人员把每个界面都做好了之后才进入测试,如果别人能比你早一个月进入测试了,然后别人比你结束测试时间快一个月,而你又比别人晚一个月,那么薪资一下就拉开了!)
- 测试不能证明软件的正确性。
- 测试员需要良好的沟通技巧。
- QA与testing属于一个层次的概念。
- 在进行单元测试中,采用白盒测试,辅之以黑盒测试。
- 软件自动化测试的优点是:准确度和精确度高、速度快、效率高、能提高测试的质量。
- 软件测试是有限的排除软件缺陷的手段。
- 测试过程中,测试计划描述用于描述测试的整体方案,缺陷 告描述依据测试案例找出的问题。
- 动态测试的两个基本要素:被测试程序、被测试数据(测试用例)。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!