软件测试之Bug篇
Posted 504 Gateway Time-out
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试之Bug篇相关的知识,希望对你有一定的参考价值。
前面已经提到了什么是Bug,Bug即软件错误。当软件规格说明书存在且正确时,若程序与规格说明书不一致则视为软件错误,对于软件规格说明书中没有提到的部分功能,则以用户需求与预期为主,不符合用户合理预期的视为软件错误;
对于一名测试人员而言,可以狭义的认为其工作就是不断地发现bug和提交bug,本文将进一步介绍与Bug相关的内容:
描述一个bug
一般情况下,一个合理的bug描述主要包含下面几个部分:
- 发现问题的版本
对于开发人员而言,只有清楚测试人员提出bug时的对应版本,才可以根据相应的版本对应的代码来查找问题出处; - 问题出现的环境
对于web项目而言,环境就代表浏览器的版本、客户机的操作系统等;若是APP项目,环境则包含了操作系统的版本、APP安装的机型等; - 发现的问题的步骤
为了让开发人员更快更好地复现bug,就需要测试人员在bug的描述中清楚体现Bug出现的详细步骤; - 预期结果的描述
预期结果的描述是bug为什么是bug的有力证明,也是为了让开发人员清楚什么样的是正确的,需要得到什么样的效果才是修改成功; - 错误行为的描述
对实际情况进行描述,也是证明Bug的有力证据;
要清楚创建bug的目标是为了让开发人员或其他人员可以复现以此来修改,因此对于bug的描述要尽可能清楚明了,一般包括但不限于上面几点,一般还会根据不同企业的具体要求增加其他要素;
Bug的级别
关于bug的定级,一般不同的企业要求不同,这里只做普遍情况下的简单介绍:
- 崩溃
直接导致开发或测试工作无法开展,系统崩溃,死机,数据库数据丢失,主要功能模块缺失等; - 严重
系统主要功能部分丧失,功能设计与需求严重不符,安全存在问题,系统稳定性存在问题等; - 一般
功能实现不完全但又不影响正常使用,一般级别大致就是存在问题但又不影响正常使用; - 次要
功能可以正常使用,但可以进一步优化,用户体验一般,进行优化更好;
Bug的生命周期
测试人员在提交一个bug之后,应该持续关注bug的状态转换,直到其生命周期结束;下面是bug的状态转换图:
new:测试人员新发现的bug;
open:确认时bug,交由开发人员进行修改;
rejected:不被认为是bug,开发人员拒绝修改;
fixed:开发人员进行修改;
delay:因为一些原因延后修改bug;
closed:经测试人员再次测试,确认修改成功,关闭bug;
reopen:经测试仍未修改成功,重新开启bug;
与开发产生争执的解决办法
不可否认的是,测试人员每提出一个bug,对于开发人员就意味着工作量的增加,因此由于bug的提出而与开发产生争执在所难免,下面提供了一些解决思路:
- 对自己提出的bug进行确认,是否描述不够清楚,是否提出了一个无效bug;
- 检查自己的bug定级是否合理,参考bug级别和用户体验;
- 以用户的角度引导开发人员,作为用户是否可以容忍这样的bug存在;
- 尽可能提高自己的业务水平,在提出bug的同时,可以给出bug修改的参考意见(只是建议,不可以喧宾夺主);
- 经上述流程,依然不被开发认为是有效bug,可以发起bug评审(邀请产品代表、开发代表、测试代表参加),共同沟通,解决bug如何修改以及如何避免此类问题发生等问题;
over!
入门篇ANDROID开发之BUG专讲
话说诸葛亮是一个优秀的程序猿,每一个锦囊都是应对不同的case而编写的!但是优秀的程序猿也敌不过更优秀的bug!六出祈山,七进中原,鞠躬尽瘁,死而后已的诸葛亮只因为有一个错误的case-马谡,整个结构就被break了!
BUG真的是一个很讨人厌烦的东西,它总是在你以为自己已经战胜它的时候跳出来嘲笑你。如何才能拿下这些烦人的BUG呢?我想要从DEBUG开始。这里给刚刚接触编程的新手们介绍一下Debug的方法,学会了这些方法后反复练习,当你积累了上万的有效代码量以后自然会发现你的水平将大大精进。
工具介绍
Android Studio:几乎所有的编译器都会带上自己的DEBUG调试器,所以先来讲讲这个。我这里就以Android studio为例,Android studio是谷歌推出的专门同来进行Android开发的软件,由于针对性比eclipse强所以里面集成了很多插件个人觉得比eclipse方便不少。现在多数安卓开发者都在使用这款IDE了。
Android Studio自带模拟器:简单讲Android不像C或者C++甚至是单纯的Java编程。它从设计到编写程序到调试,都离不开手机,Android Studio自带一款强大的模拟器,他能在电脑上模拟出一台手机,如果你不考虑程序在真实设备上的兼容性,这款模拟器已经非常棒了,一般程序在开发阶段的需要都能用模拟器来满足。
云手机:模拟器也有缺点,它的效率比较低,并且程序在真机上的运行情况,远比模拟器要复杂,所以开发者的程序写好后还需要用真机调试。我不太不愿意用自己手机调试,所以会用Testbird的云手机,它们会在云端提供好几百款主流手机,你可以直接用Android Studio等IDE,去远程连接这些机器做调试,简直就是为调试Android程序量身定做的,感兴趣的同学可以注册使用,现在免费开放注册
建立一个初始程序
首先在建立一个默认的空白工程之后,我们先在工程里面加点儿东西,这样我们才有东西可调。因为这篇文章是写给新手们看的(调试都不会你敢自称老手?),大家都知道Android编程里非常重要的一个概念就是MVC,MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。其中模型(model)大家可以不管,因为这涉及到结构和数据类型,本例还涉及不到。
View可以这么概括——你在手机上所看见的都是view或者由view组成的,但这句话反过来是错的,View并不都是可见的。至于controller控制器你可以将其理解为你的控制逻辑。在Android studio默认工程里面本来是有一个TextView和一个信封样的按钮,我们可以对这个默认工程作出如下修改:添加一个Button按键,在用户按下该按键之前那个TextView显示的内容为默认的“Hello world!”。当用户按下按钮以后该TextView变成“->按下的次数”。我把具体步骤贴在这儿:
以Design形式打开content_main.xml,拖出一个Button控件,再进入content_main.xml的Text形式,在button里面加入这样一句话:android:onClick="Btn1_Click",然后进入MainActivity.java文件,依次加入下面的语句:
import android.widget.*; // 引入JAVA包
…
TextView textView;//创建一个TextView对象
Button button; // 创建一个button对象
int count = 0;
…
在onCreate()方法中添加如下语句:
button = (Button)findViewById(R.id.button);
textView = (TextView)findViewById(R.id.textView);//这两句话将View和controller联系了起来,也就是说你对手机上view的操作有了这两句话才能反映到你的控制逻辑也就是程序中来~
public void Btn1_Click(View view)//按键后要作出反映的函数。
{
String str = "---->" + count;
textView.setText(str);
count++;
}
然后运行程序就可以了,按一下数字就会增加一个。这里先上一张图(我用的是云手机,大家有条件的可以用自己的手机或者模拟器):
DEBUG的第一步,设置断点
现在初始程序就算是完成了,接下来说说调试,Android调试首先你得知道自己在哪儿打断点,它不像C语言那样只有C文件在你想打哪儿打哪儿。Android主要有两种形势的文件,一种是.java文件一种是.xml文件。打断点只能打在.java文件里面,因为.java文件就是控制逻辑。而.xml文件大家可以理解成视图文件或者叫布局文件,程序走逻辑流程是永远不会走到那儿的,就算到了也没有任何的意义。打断点的方式也非常简单,只是在某一行代码前用鼠标左键点一下出现了红圆点就表示打断点成功了。如下图:
打点是使用DEBUG的第一步,那么接下来就只需要点击run->debug”run”就可以了。当你的程序运行到断点所在的位置的时候程序就会自动暂停,如下图:
如果你是通过DEBUG运行程序手机也会有提示,大家可以看看。
然后程序如果运行到断点处你就会看见某行处于被选中的状态,这个时候程序已经暂停了。
这个时候你可以选择继续运行到下一个断点或者自己一步一步的跟踪调试下去:
一步步调试(F8)
直接运行到下一个断点(F9)
Debug的操作核心就只有这简单的三步:打断点,通过DEBUG运行程序,按自己的需要选择调试方式(调试途中也可以打断点)。
今天主要给大家简单的介绍了一下Debug,是基本使用方式,下一节将为大家具体讲解DEBUG的用法和特性。
以上是关于软件测试之Bug篇的主要内容,如果未能解决你的问题,请参考以下文章
VS2010 C++单元测试之gtest与OpenCppCoverage实践