在软件测试中,什么是重现缺陷,再现缺陷,优化缺陷?
![[��ǩ:����] [��ǩ:����]](https://www.xuefen.net//file/upload/img/7/60.jpg)
重现缺陷就:当你测试的时候发现了问题,那么你需要提交,之后会有开发人员与你核实,或是你先和开发人员核实之后再提交的时候,需要和他们演示你发现的问题,这就要重现缺陷!至于再现缺陷应该就是问题出现争议之后,要项目经理来确认是否为缺陷的时候你演示缺陷的时候叫做再现缺陷!至于优化缺陷,应该是对于那些无法修复,或是修复成本太高,或是优先级别为低的时候,不全面修复这个缺陷,只是简单的处理,让他不影响其他软件的运行,和其他功能的实现! 我是根据自己的理解来回答的!希望对你会有点帮助!
测试有效性指标DDP的评估和优化
缺陷检测百分比DDP(Defect Detection Percentage)常常可以用来评判软件测试生命周期内某个阶段的测试有效性。但是,在实际评判测试有效性过程中,DDP也存在某些方面的欠缺。本文通过分析DDP的基本原理,笔者提出了更适合测试有效性评估的优化DDP(简称O-DDP)。
1)DDP
穷尽测试是不可能的,因此,不可避免有一些缺陷会遗漏到客户的使用现场,从而触发软件产品产生令用户不满意的失效或者各种问题。通常来说,在测试过程中判断测试人员的测试有效性是很困难的。但是通过用户反馈的缺陷数目,却可以直观的说明测试人员是否遗漏了比较多的问题,从而反映测试人员的测试有效性。缺陷检测百分比DDP(Defect Detection Percentage)就是基于这样的目的进行定义的,它可以用来评判软件测试生命周期内某个阶段的测试有效性,它以百分比的形式进行计算。其计算公式为:
DDP = [R1 / (R1 + R2)] * 100%
其中:
1)R1指的是被评估阶段发现所发现的缺陷数目;
2)R2是被评估阶段之后所发现的所有的缺陷数目;
DDP计算公式的分母并不是发现的总的缺陷数目,而是指该阶段之后所有发现的缺陷数目(包括该阶段的缺陷数目)。表1是计算DDP的一个例子(主要针对动态测试而言的):表1 DDP计算的例子
采用DDP作为测试有效性的评估指标,主要存在两个问题:第一个是DDP无法在测试过程中对测试有效性进行评估,必须要等待产品发布一段时间之后才能进行,例如:产品发布之后3个月;另一个问题是DDP计算过程中只考虑了用户反馈的缺陷的数目,而没有考虑每个缺陷的严重程度;单纯的缺陷的数目,并不能正确的反映遗漏到客户的缺陷对用户造成的影响程度。而测试的有效性,要求测试人员尽早发现尽量多的严重的问题,而不仅仅是尽量多的缺陷数目。
对于DDP的第一个问题,由于DDP本身的定义要求,无法提供好的建议来解决该指标对测试有效性评估的延后性。而对于第二个问题,本文将综合考虑用户反馈的缺陷数目和严重程度,对DDP计算实现优化,从而更好的评估测试有效性。
2)O-DDP
O-DDP的基本原理和DDP是一样的,只是在计算过程中,同时考虑了缺陷的数目和缺陷的严重程度。根据笔者所在组织和项目的特点,其定义的缺陷严重程度如下[2]:
1)严重程度1(致命的):产品在正常的运行环境下无法给用户提供服务,并且没有其他的工作方式可以补救;或者软件失效会造成人身伤害或危及人身安全;
2)严重程度2(严重的):极大地影响系统提供给用户的服务,或者严重影响系统要求或者基本功能的实现;
3)严重程度3(一般的):系统功能需要增强或存在缺陷,但有相应的补救方法解决这个缺陷;
4)严重程度4(轻微的):细小的问题,不需要补救方法或对功能进行增强;或者操作不方便,容易使用户误操作;
不同的缺陷严重程度,其定义的权重分别为w1 = 10、w2 = 4、w3 = 2和w4 = 1,分别对应严重程度1(致命的)、严重程度2(严重的)、严重程度3(一般的)和严重程度4(轻微的)。
下面通过案例的阐述,说明DDP和O-DDP计算得到的不同结果,以及根据结果分析得到的不同结论。在该案例中,评估的目标是系统测试的有效性,因此采用的缺陷数目分别来自系统测试发现的缺陷和在产品发布3个月之内用户反馈的缺陷。表1是根据DDP得到的结果:表2 DDP
我们从表1中得到的DDP = 89.54%结果来看,系统测试的有效性应该是非常不错的,因为遗留到用户现场的缺陷数目相对比较少。但是,在我们进行具体详细的分析用户反馈的缺陷的时候,发现用户对该产品的质量严重不满意。他们所反馈的缺陷,很多都是严重影响他们正常使用的问题。因此,上表中的DDP结果并不是让人信服的。
而后我们引入O-DDP,重新进行测试有效性的评估,其计算公式和DDP的公式一样,只是其中每个参数的计算进行了优化:
O-DDP = [R1 / (R1 + R2)] * 100%
其中:
1)R1是系统测试阶段发现的缺陷和它们不同严重程度权重乘积之和,具体计算公式是R1 = m1*w1 + m2*w2 + m3*w3 + m4*w4,其中m#指的是系统测试阶段不同严重程度的缺陷的数目;
2)R2是产品发布之后在用户现场发现的缺陷和它们不同严重程度权重乘积之和,具体计算公式是R2 = n1*w1 + n2*w2 + n3*w3 + n4*w4,其中n#指的是系统测试阶段不同严重程度的缺陷的数目
得到的详细数据如表2所示:表3 O-DDP
3)O-DDP和DDP比较
DDP的计算仅仅考虑了遗留到用户现场的缺陷的数目,完全没有考虑不同缺陷对用户的不同影响程度。而O-DDP的计算兼顾了缺陷的数目和缺陷的严重程度,相对于DDP而言,在判断测试人员的测试有效性方面O-DDP更加全面。
根据表1得到的DDP = 89.54%,而表2计算得到O-DDP = 80.31%,其中的差距差不多是10%。这里面说明了什么?我们可以对此进行简单的分析:
1)第一个可能是测试人员在进行系统测试的时候,发现的严重程度为1和2的缺陷占的比重较低;
2)第二个可能是在用户现场发现的缺陷严重程度为1和2的缺陷占比比较高;
3)不管是哪种情况,都应该引起测试人员的注意:测试人员在系统测试过程中遗漏了某些重要的缺陷,特别是用户特别关注的受到影响的缺陷。
软件测试和seo优化这两个行业哪个发展前景更好
我感觉还是SEO优化好点。软件测试学的东西相对深一些,SEO学的东西相对广泛一些。但是如果按应用来说还是SEO较吃香,SEO前途无量的。越来越多的人都认识到搜索引擎的重要性。应用的领域越来越宽广。
软件测试是做什么的?
软件测试描述一种用来促进鉴定软件的正确性、完整性、安全性和质量的过程。换句话说,软件测试是一种实际输出与预期输出间的审核或者比较过程。软件测试的经典定义是:在规定的条件下对程序进行操作,以发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。
软件测试主要工作内容是验证和确认,验证是保证软件正确地实现了一些特定功能的一系列活动, 即保证软件以正确的方式来做了这个事件
1.确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程。
2.程序正确性的形式证明,即采用形式理论证明程序符合设计规约规定的过程。
3.评审、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。确认是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件做了你所期望的事情。
4.静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性。
5.动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期间各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
软件测试必学基本理论知识-APP测试
业务功能测试
APP专项测试(兼容性测试、安装、卸载、升级、交叉事件、Push消息推送、性能测试、用户体验、极限、边界、权限
手机型号、操作系统、分辨率(Android:1080x1920,720x1280;IOS:2208x1242,1334x750)尺寸(4.7,5.5)、网络环境(Wi-Fi、2G、3G、4G、5G)
拨打接听电话
接收/发送短信
插拔耳机
网络切换
1.一定数量的真机上进行
2.借助testin等云平台
3.模拟器:Xcode、Genymotion(http://www.genymotion.net/)
第三方在线统计排名(腾讯移动分析、百度研究院)
官方数据(Android、IOS官网)
埋点技术(技术手段)
push消息应该按设定规则发送特定用户
APP在后台运行时,应能正常收到其push消息
设备锁屏状态下,应能正常收到APP的push消息
设置网络段断开后再一次建立连接是,应能收到push消息
系统设置不接收APP通知消息时,用户应该不再接收push消息
安装渠道:Android-应用商城、IOS-APP Store
正常情况 :
正常安装测试、检查是否安装成功
APP本本覆盖测试
回退版本测试
在不同型号、系统、屏幕大小、分辨率上的手机进行安装
安装完成后能否正常启动应用程序
异常情况
安装时内存不足
安装过程中的意外情况(强行断电、断网、来电话、查看信息)等
能否取消安装
正常情况:
用自己的卸载程序进行卸载,检查是否卸载干净
用第三方工具,检查是否卸载干净
不同系统、硬件环境、网络环境下进行卸载
卸载后再次安装、是否正常使用
异常情况:
卸载中出现异常情况能否恢复(比如手机关机、内存、没电等),程序是否还能运行
卸载后是否有残留,是否能够再次进行安装
是否可以取消卸载,软件恢复使用
更新版本需要提示用户
考虑是否进行强制升级(软件存在严重缺陷、软件不能够向前兼容)
是否能够跨版本升级
性能测试指标:内存、CPU、流量、电量、启动速度、界面切换速度
内存溢出与内存泄漏
1.内存溢出out of memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现溢出
2.内存泄漏out of leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄漏危害可以忽略,但内存泄漏堆积后果很严重,无论多少内存,迟早会被占光
3.二者的关系:内存泄漏会导致内存溢出
冷启动与热启动
1.指app被后台杀死后,在这个状态打开app,这种启动方式叫做冷启动
2.热启动:指app没有被后台杀死,仍然在后台运行,通常我们再次打开这个app,这种启动方式叫做热启动
用户体验
边界(极限测试)
权限测试
App的兼容性测试尤为重要:由于手机厂商生产的手机型号及相关软硬件存在千千万万的差异性,进而APP端需要着重考虑分辨率,系统版本,尺寸,主流机型等
App性能测试指标不一样,除了需要和web一样考虑APP客户端的性能外,我们还需要考虑电量、流量的消耗、GPU渲染等
APP网络测试场景的复杂性:如2G、3G、4G、5G、Wi-Fi、弱网环境等
APP基于手机载体存在的交叉事件测试、前后台切换,安装/卸载/升级测试
APP基于手机载体特有的一些用户操作习惯类测试,如横竖屏切换,多点触控,事件触发区域等
内测发布平台
工作流程:1.开发将打好的程序包上传到内测发布平台上2.内测分发平台基于上传的安装包生成唯一的二维码3.测试扫描二维码即可进行下载,安装并测试
蒲公英: https://www.pgyer.com/
fir.im(https://fir.im/
线上发布平台:
应用商店、APP Store
前置基础:瀑布模型(不适用快速变化的需求)、快速原型
互联网特点:请求创新、要求的高度不确定性
移动互联网的解决方案:快速的反馈机制、快速试错
基本可以和快速原型划等号。
scrum:提供了一套基于团队的敏捷方法。
角色:产品负责人(整理需求)、项目经理、开发团队
输出物:产品待办列表、迭代待办列表、产品增量(可工作的软件)
5个活动:迭代、迭代计划、每日站会、评审会、迭代回顾
1.需求分析与评审
2.编写测试计划(测试方案)
3.设计测试用例与评审
4.执行测试用例与缺陷跟踪
5.编写测试报告
兼容测试
交叉事件
弱网测试
极限边界
权限测试
删除请求:remove all
设置过滤
查看请求和响应数据
修改响应数据
辅助定位bug
构建模拟测试场景
APP弱网模拟测试
前端性能分析及优化
重定向、API接口测试
为什么抓包?
通过抓包工具截取观察网站的请求信息,帮助我们更深入了解系统
通过用抓包工具截取,观察网站的请求与返回信息,帮助我们进行bug的定位与描述
步骤
1.打开Fiddler,设置代理(tools-option-connection-勾选Allow remote computers to connect,并允许远程连接
2.手机连接电脑的热点网络或者在同一个局域网内
3.手机网络连接中,设置网络代理,IP是电脑的同网段IP地址,端口是8888
4.手机访问APP或者用手机浏览器访问网络,电脑Fiddler观察抓包情况
1.概念
在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wi-Fi
等多种手机网络连接方式,不同的协议、不同的制式、不同的速率使移动应用运行的场景更加丰富。
2.原理
通过Fiddler来模拟限速,提供客户端请求前和服务器响应前的回调接口,Fiddler的模拟限速是在客户端请求前自定义限速,通过延迟发送数据或接收数据的时间来限制网络的下载和上传速度,从而达到限速的效果
打开网速模拟模式开关(Rules-Performances-simulate Modem speeds)
自定义网络:rules-customize rules
(知识就是力量,我将会持续更新软件测试相关知识哟 )
上海交通大学有什么计算机的专业
《上海交通大学全计算机专业课程》百度网盘资源免费下载
链接: https://pan.baidu.com/s/1F0HVCyR6GBObBmY24h7Hig
?pwd=h6y6 提取码: h6y6 上海交通大学全计算机专业课程教学视频|应用软件开发技术|信息论与编码|微型计算机组成原理|微机原理与应用|网页设计与开发技术|网络与信息安全|网络与数据通信|网络系统建设、管理与维护|网络攻击与防御技术|数字逻辑|数据库系统及应用|数据结构|软件工程与软件测试优化技术|嵌入式系统及应用
如何学习软件测试
2016软件测试final免费下载
链接:https://pan.baidu.com/s/1s7e4vRIrHpuhwYbgJNZGEQ
提取码:rtpi
请问软件测试两个月能学会吗?
看你想要达到一个什么样的效果。两个月的时间,想要深入学习软件测试是不够的。
就比如蜗牛学院的测试开发课程。从周一到周六,每周足足六天时间排满,每天晚自习到八点半。都得花四个多月,将近五个月的时间。从通用核心技术,到系统测试,再到测试开发,最后自主开发测试框架,从底层原理再到高级应用,无所不包,涵盖全部测试开发核心技术,满足企业核心技术需求。重要的是理解测试原理,抛开工具束缚,对测试框架进行重构优化,达到知其然更知其所以然的程度。我们的目的绝不仅仅讲授工具或框架的应用,而是培养独立解决技术问题的能力。
所以,在任何技术的学习上,没有捷径可走,坚持死磕才是正道。
性能测试到底该怎么做?
作为一名开发者,我们最长听到的就是编程界的三高:
高性能、高并发、高可用。
听起来非常高大上,但是性能到底如何呢?又该如何评定呢?
这次我们谈一谈性能测试,看一看到底什么样才叫做高性能。
本文主要从以下几个方面进行讨论。
(1)性能测试是什么?
(2)为什么需要性能测试?
(3)性能测试如何做?
(4)有哪些性能测试的工具
老马曾经说过,你想理解一件事物,首先必须先定义它。
这里直接引用一下百科中的定义:
性能测试的定义也不难理解,往往定义本身阐述了性能测试的作用。
如果你是一名开发、测试,平时接手过不少需求,可能性能测试接触的也不多。
每一个需求,都有对应的功能性需求和肺功能性需求。
功能性需求是产品需求文档中最直接的,需要实现的功能目标。简称,能用就行。
非功能性需求则要宽泛的多,架构设计是否合理?是否便于后期拓展?是否便于监控?代码实现是否优雅?文档注释是否完整?
就像你写了一只鸟,鸟头做螺旋桨非能飞起来,但是在架构设计上可能是不合理的。
飞起来
一个查询功能,用户点击查询,10S 种才返回数据,功能上是满足的,但是性能上是不能接受的。
线上的交易功能平时各方面都很棒,节假日高峰期直接系统就瘫痪了。
那如何避免这些问题出现在生产上呢?
这就需要上线之前,首先做好对应的性能测试,避免再生产上出现问题,带来严重的生产事故。
性能要高,性能要硬,性能测试,又高又硬!
又高又硬
做一件事情之前,我们首先要确定好自己的目标。
性能测试,到底要测试什么?
有些类似于开发过程中的需求分析,常见的测试指标如下。
响应时间是指某个请求或操作从发出到接收到反馈所消耗的时间,包括应用服务器(客户端)处理时间、网络传输时间以及数据库服务器处理时间。
作为用户而言,在页面点击查询,等待了多久才能获取结果,这个就是响应时间。
用户不关心你后端经过了多少个服务,慢就是原罪。
对于微服务系统,链路监控就显得比较重要。可以帮助我们快速定位到底慢在哪里。
TPS(Transaction Per Second)是指单位时间(每秒)系统处理的事务量。
我看网上还有很多类似的概念:点击量/点击率、吞吐量/吞吐率、PV/UV,这里不做赘述。
个人看来本质上 TPS/QPS 就是去压测你应用的极限,当访问量较大的时候,程序能否活下来?
这里主要涉及到两个概念:高性能和高可用。
我们后面会简单讨论下这两点。
明确了测试指标之后,就需要进行测试的准备。
环境准备:比如你想压测数据库,那就需要准备对应配置的数据库资源。
脚本的准备:数据初始化脚本,调用脚本等。
这个可以类比开发过程中的代码开发。
ps: 性能压测一般不是很常用,所以环境准备流程会比较长,这一点需要注意。
当进行测试之后,测试的结果一定要给出一份报告出来。
是否通过压测要求?
最高的 QPS 是多少?
这样开发可以根据这份报告进行相应的优化。
提升性能的内容写一本书也不为过,这里简单罗列一些最常用的几点:
(1)慢 SQL
一般程序如果响应时间较长,可以首先看一下慢 SQL。
看下是否需要增加索引,或者进行 SQL 优化。
(2)缓存
针对查询,性能提升最显著的就是引入缓存。
当然,引入缓存会使架构变得复杂,这一点要结合自己的实际业务。
(3)硬件升级
如果程序优化的空间比较小,可以考虑升级一下硬件资源。
比如服务器配置翻倍,数据库配置翻倍。
什么?你说公司没钱升级?
没钱升级做什么压测?
这个时候测试报告的作用就显露了,直接用数据说话。
直接说 QPS 达不到生产要求,程序优化的空间很小,推荐硬件升级配置,升级到多少。
做人,要以德服人。
做测试,要用数据说话。
以德服人
测试最常用的工具当属 jmeter。
除此之外,还有一些其他的工具:
LoadRunner、QALoad、SilkPerformer和Ratio
nal Performance Tester。
下面对几个工具做下简单介绍
Apache JMeter 可以用于测试静态和动态资源(Web动态应用程序)的性能。
它可以用于模拟服务器、服务器组、网络或对象上的负载,以测试其强度或分析不同负载类型下的总体性能。
将负载测试集成到开发工具中:IDE、jUnit、nUnit、Jenkins、Selenium和Microsoft Visual Studio。
从12.55版本开始,您可以运行您的JMeter脚本,并在任何性能测试中集成JMeter和附加的脚本类型。
ps: 这个设计理念就非常好,可以和成熟的工具进行整合。站在巨人的肩膀上。
QALoad是客户/服务器系统、企业资源配置(ERP)和电子商务应用的自动化负载测试工具。
QALoad可以模拟成百上千的用户并发执行关键业务而完成对应用程序的测试,并针对所发现问题对系统性能进行优化,确保应用的成功部署。
ps: 这个工具本人没有接触过。
SilkPerformerV可以让你在使用前,就能够预测企业电子商务环境的行为—不受电子商务应用规模和复杂性影响。
可视化的用户化、负载条件下可视化的内容校验、实时的性能监视和强大的管理报告可以帮助您迅速将问题隔离,这样,通过最小化测试周期、优化性能以及确保可伸缩性,加快了投入市场的时间,并保证了系统的可靠性。
作为 DevOps 方法的一部分,IBM Ratio
nal Performance Tester 帮助软件测试团队更早、更频繁地进行测试。
它验证 Web 和服务器应用程序的可扩展性,确定系统性能瓶颈的存在和原因,并减少负载测试。
您的软件测试团队可以快速执行性能测试,分析负载对应用程序的影响。
ps: 这一款工具有 IBM 提供,质量值得信赖。
这么多工具可供使用,相信读到这里的小伙伴已经找到了自己心仪的测试工具。
别急,下面专门为做 java 开发的小伙伴们推荐一款性能测试工具。
男人有男人的浪漫,开发者当然也要有开发者的浪漫。
【男人的浪.jpg】
作为一名开发者,老马平时单元测试使用 junit 最多。
所以一直希望找到一款基于 junit 的性能压测工具,后来也确实找到了。
@JunitPerfCo
nfig 指定测试时的属性配置。(必填项)
使用如下:
@JunitPerfRequire 指定测试时需要达到的要求。(选填项)
使用如下:
对应的测试报告生成方式也是多样的,也允许用户自定义。
基于控台日志:
或者基于 HTML:
junitperf
本文对性能测试做了最基本的介绍,让小伙伴们对性能压测有一个最基本的理解。
测试和开发一样,都是一件费时费力,而且需要认真做才能做好的事情,其中的学问不是一篇就能说清的。
性能测试工具也比较多,本文重点介绍了专门为 java 开发者打造的 junitperf 工具。
下一节我们将从源码角度,讲解一下 junitperf 的实现原理。
我是老马,期待与你的下次重逢。
开源地址:https://github.com/houbb/junitperf
好了,以上就是小编整理的“在软件测试中,什么是重现缺陷,再现缺陷,优化缺陷?”详细内容,希望对您有所帮助。愿我们如花绽放,不负韶华,同学们,加油!(来源:学分高考 https://www.xuefen.net)文章共12097字