1. 软件缺陷与软件故障
一、 软件缺陷与软件故障案例
2. 软件缺陷产生的原因
软件缺陷从哪来?第一大原因就是软件产品规格说明书,很多情况下,说明书没有写,或写的不够全面,
经常更改,或者开发小组没有很好的沟通,造成对说明书理解的不一致。第二大原因是软件设计,没有做
设计或设计不好,经常变动等和产品规格说明书一样的问题,第三个原因才是编写代码和其它原因;前两
个原因至少占了 80%以上。如图1-1所示
图1-1 软件缺陷产生的原因分布
通过大量的测试理论研究及测试实践经验的积累,典型的软件缺陷产生的原因被归纳为以下几种类型:
(1) 需求解释有错误;
(2) 用户需求定义错误;
(3) 需求记录错误;
(4) 设计说明有误;
(5) 编码说明有误;
(6) 程序代码有误;
(7) 测试错误;
(8) 问题修改不正确;
(9) 不正确的结果是由于其他的缺陷而产生。
3. 软件测试和缺陷修复的代价
缺陷发现的越早,则修复这个缺陷的代价就越小,在需求、设计、编码、测试、发布等不同的阶段,
发现缺陷后修复的代价都会比在前一个阶段修复的代价提高10倍(参见图1-2)。
4. 新人如何融入一个项目团队
5. 优秀的测试人员的基本素质
1、参与需求讨论,制订测试计划,确保测试能顺利执行并完成。
2、负责项目的功能性测试、用户体验测试、兼容性测试以及性能测试
3、负责测试用例的编写;编写测试报告和对测试结果分析,
4、与开发人员、产品经理沟通和协作,推动整个项目的顺利进行;
5、负责软件开发团队项目进度管理工作,
6.熟悉Linux常用命令,熟悉常用数据库,熟练使用基本的SQL语句;
7.熟练使用Loadrunner,Jmeter等至少一种性能测试工具
6. 软件工程的目的
成本:项目的开销,人工成本,工具成本,设备成本,错误成本(BUG)
进度:时间,计划
质量:软件对顾客需求的满意程度,一个低质量的软件,即使生产成本很低,进度控制良好,顾客也难以接受。
7. 程序测试包含哪些内容
程序测试包括程序逻辑功能,界面,性能,易用性,兼容性,安装等测试,当然文档测试也算,排版,字
体大小,也算程序测试的内容
8. 测试环境
测试环境=硬件+软件+网络
硬件环境:笔记本,台式机,服务器
软件环境:不同的操作系统 windows10 windows8 windows7 Linux Mac,
不同浏览器:IE firefox chrom
网络:局域网还是互联网
9. 测试流程
10. 软件测试分类
10.1. 黑盒测试和白盒测试
黑盒测试(Black Box -Test)指的是把被测试的软件看做一个黑盒子,我们不去关心盒子里边的结构是
不需要了解程序的源代码,通过使用整个软件功能来验证程序是否满足需求的测试方法
白盒测试(White Box Testing)
是一种按照程序内部逻辑结构和编码结构设计测试数据并完成测试的测试方法
10.2. 静态测试和动态测试
静态测试,是指不实际运行被测试软件,而只是静态的检查程序代码、界面或者文档中可能存在的错误的过程。
动态测试:是指实际运行被测程序,输入相应的测试数据,检查实际输出结果和预期结果是否相符的过程。
10.3. 功能测试和性能测试
1.1.1. 功能测试
是黑盒测试的一部分,它检查实际软件的功能是否符合用户的需求。
功能测试可以细分逻辑功能测试,界面测试,易用性测试,安装测试和兼容性测试。
逻辑功能测试:测试应用是否符合逻辑,比如应该先注册账号之后,才能进行登录,登录之后才能看我的购物车
界面测试:窗口大小,按钮大小,点击按钮弹出什么样的提示框,是否有滚动条,下拉菜单是否有展示内容...
易用性测试:从软件使用的合理性和方便性等角度对软件系统进行检查,比如,软件窗口长宽比例是否合适,颜色色彩是否赏心悦目,字体大小是否合适
兼容性测试:硬件兼容性测试和软件兼容性测试
硬件兼容性:比如一款软件在pc机,笔记本,主机上是否兼容
软件兼容性测试:比如一款软件在windows8和windows10上是否兼容
1.1.2. 性能测试
时间性能:软件的一个具体事务的响应时间。比如点击一个登陆按钮,到登录成功(失败)的反应时间,浏览器非常常见,ANR(Application not responding 应用程序无响应)2/5/8
空间性能:软件运行时所消耗的系统资源,比如对内存和cpu的消耗 80%
一般性能测试:软件正常运行,不向其施加任何压力的测试
稳定性测试:也叫可靠性测试,是指连续运行被测系统,检查系统运行时的稳定程度。
负载测试:让被测系统在其能够忍受的压力范围之内连续运行,来测试系统的稳定性。(测试载重)
压力测试:持续不断的给被测试的系统增加压力,直到被测试的系统压垮为止,用来测试系统所承受的最大压力。(测试强度)
10.4. 回归测试、冒烟测试、随机测试
1.1.3. 回归测试
是指对软件的新版本进行测试时,重复执行上一个版本测试时的用例,比如在1.0版本中,有一个bug,到了2.0版本中,再重新测试1.0中这个bug(回归测试是指修改了旧代码后,重新进行测试以确认修改没有引入新的错误或导致其他代码产生错误。)
1.1.4. 冒烟测试
指对一个软件进行系统大规模的测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
测试小组在正式测试一个新版本之前,先指派一两个测试人员测试一下软件的主要功能,如果没有实现,则打回开发组重新开发,这样做可以节省大量的时间成本和人力成本。
1.1.5. 随机测试
是指测试中所有的输入数据都是随机生成的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
10.5. 单元测试、集成测试、系统测试和验收测试
1.1.6. 单元测试
单元测试(unit testing),是指对软件中的最小可测试单元进行检查和验证。对于单元测试中单元的
含义,一般来说,要根据实际情况去判定其具体含义,如C语言中单元指一个函数,Java里单元指一个
类,图形化的软件中可以指一个窗口或一个菜单等。总的来说,单元就是人为规定的最小的被测功能模块。
单元测试当一段代码完成之后,是由白盒测试工程师或者开发人员自行测试,比如java中执行单元测
试叫做junit测试。
目前大部分公司单元测试由开发人员简单编译和调试一下自己的程序,没有相应的单元测试计划。
单元测试方式:先静态地观察代码是否符合规范,然后动态地运行一下代码,检查运行的结果。
1.1.7. 集成测试
集成测试是单元测试的下一个阶段,是指将通过测试单元模块组装成系统或者子系统,再进行测试,重点测试不同模块的接口部分。
l 在把各个模块连接起来的时候,穿越各个模块的接口的数据时候会丢失
l 一个模块的功能是否会对另一个模块的功能产生不利的影响
l 各个子功能组装完成后,能否达到预期的父功能
l 全局数据结构是否有问题
l 单个模块产生的误差累计起来是否会放大
例如:模块接口测试
l 应对通过所测模块的数据流进行测试
l 调用所测模块时的输入参数与模块的形式参数的个数、属性和顺序是否匹配
l 所测模块调用子模块时,输入子模块的参数与子模块的形式参数在个数、属性和顺序上是否匹配。
l 输出给标准函数的参数的个数、属性和顺序是否正确
1.1.8. 系统测试和验收测试
集成测试完成之后,就是系统测试和验收测试。
系统测试:指的是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环
境进行测试。
系统测试由黑盒测试人员在整个系统集成完毕后进行测试,前期主要测试系统的功能是否满足需求,后期
主要测试系统运行的性能是否满足需求,以及系统在不同的软硬件环境的兼容性等。
版权声明:本文为weixin_51118163原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。