实 习 报 告
实习名称:神州数码BD解决方案部测试工程师
学院: 中山大学南方学院
专业: 电子信息科学与技术
班级: 电子2班
学生姓名: 李泽乔
学号: 102012067
实习地点: 广州
指导教师: 李宁智
实习时间:20xx年7月 19日至 2013 年12月10日
第二篇:软件测试概述
软件测试概述
博创华宇(北京)科技有限公司
1、什么是软件?
第一印象:软件是一段代码 完整的说明:软件是一段代码,这段代码对数据进行某些操作,进而实现某些功能。 软件 = 代码 + 数据 -》 实现功能
2、什么是软件测试?
在了解什么是软件测试之前,需要先了解什么是软件开发?软件开发的工作就是一行一行编写代码,让软件从无到有的建设过程(当然具体工作包括分析需求功能、设计数据库及框架、详细的算法设计以及编写代码)。软件开发工程师的主要工作就是编写代码。
了解了软件开发,再来了解软件测试。
既然软件是工程师一行一行写的,就很有可能会产生问题(从测试角度来说也就是会有bug),因为凡是人参与的工作就肯定会有产生问题的风险,例如有些功能没有实现(点击按钮或者菜单没反应,或者根本没有这个菜单),有些功能实现的不对(和用户的要求不符合),点击某个按钮报404错误等等。
测试工程师的主要工作就是要发现这些问题(bug),并和开发人员沟通,让开发人员修改这些问题(bug),并再次验证这些问题(bug)是否已经修改完成。这个活动一直持续到所有问题(bug)修改完成或者达到项目质量的目标要求,才能交付给用户。
开发和测试就像是一对双胞胎,从不同的角度看待同一个软件。就像是在一堵墙的两边,开发人员在一边不断添砖加瓦,建设软件;测试人员在另外一边
不断的敲敲打打,发现问题(bug)
注意:测试人员的心态是破坏性的,就是说你要认为软件一定是有bug的,然后尽力发现它。(可以不择手段的破坏软件)
3、软件测试流程
了解了软件测试的概念后,我们来了解软件测试具体流程。
既然软件测试和软件开发是双胞胎,那么还是先看看软件开发流程和测试流程的关联
从测试流程可以看出,测试工程师有两个非常重要的工作: 一、编写测试用例并执行; 二 、发现bug并和开发人员沟通、解决bug。
4、编写测试用例:
什么是测试用例?
测试用例是工程师在测试执行前编写的测试文档,其中包括针对功能点执行的一些操作以及操作的数据。测试用例和需求对应,要保证所有的需求都有测试用例对应。
操作很容易理解,针对需求描述执行操作,例如打开文件、导出文件、点击菜单、按钮等。
操作数据非常重要,在测试执行开始前一定要设计一套贴近用户使用的数据,不能见到输入框就aaaa、sdf等,一定要有一套完整的接近真实的数据,从最开始的输入数据到最终运行的预期结果数据,从而保证最终软件的功能是正确的。
如果把测试主要活动再细分,可以分成测试用例设计和测试用例执行。整个测试活动最具技术要求的就是测试用例设计,而用例执行,真的是体力活了。
测试用例一般具有如下属性:
1.编号 :一般的测试用例长百上千,必须要有编号
2.对应需求 :测试用例一定要对应某个需求,不能有和软件需求无挂的测试用例,也 不能某些需求没有用例,一般要求测试用例对需求覆盖率达到100%
3.操作 :针对这个需求的操作和数据
4.实际结果 :执行测试用例后的实际结果,这个结果在测试执行后填写
5.预期结果 :这个操作和数据的预期结果,或者说按照需求应该的结果
6.是否通过 :对比实际结果和预期结果,如果两者一致,则用例通过,如果不一致, 证明有bug
7.备注 :记录一些其他需要记录的内容
为什么要写测试用例?
编写测试用例是为了更好地管理测试活动。简单的说,就是为了保证每一个功能点都会被测试到,不会某些功能点被测试多遍,有些功能点又被忽略没测试到,所以所有的测试执行活动都应该按照测试用例有组织的执行,最终保证所有测试用例都被执行并且发现的bug都被修复。
举一个例子,要测试一个软件,一定要有把握的感觉,就像把一个苹果握在手里,你能感知苹果的大小、颜色、重量。。。。反之,想象一下,如果你是一只虫子,在这个苹果里吃来吃去,即使你吃完了所有的果肉,你也不能把握这个苹果,而且你也不可能吃掉所有的果肉。
编写测试用例的目的就是为了让我们把握这个苹果,掌握它的各个属性,并且吃掉它的所有果肉(发现软件的所有bug)
5、测试技术:
前面说测试的主要活动是编写测试用例,编写测试用例也是测试活动最具技术含量的工作,那么设计测试用例到底能用到哪些技术?
软件测试的主要技术有等价类划分、边界值分析,其他还有因果图、正交试验法等,用的比较少,这里我们主要介绍前两种。
等价类法:
简单的说,等价类法是指把软件可能的输入或者操作进行分类,在一个类别里所有的成员软件都有相同的响应。程序能够正常响应的是一类(有效类),程序不能正常处理的是一类(无效类)。
有效等价类指的是对程序的规格说明是有意义的、合理的输入数据所构成的集合,软件对这个集合的所有成员都能正确响应。在具体问题中,有效等价类可以是一个,也可以是多个。
无效等价类指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能有多个
例如:
程序的规格说明中提到的输入条件包括“…项数可以从1到999…,”则可以取有效等价类“1<项数<999”。无效等价类为“项数<1”及“项数>999”。
又如:
程序规格说明中提到“…学生允许选修2至4门课…”,有效等价类可取“选课2至4门”,无效等价类为“只选一门或未选课”及“选课超过4门”
边界值:
实践表明,在设计测试用例时,对边界附近的处理必须给予足够的重视,为检验边界附近的处理专门设计测试用例,常常取得良好的测试效果。
边界值和等价类很相似,只不过在边界处理更加复杂一些。例如如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围的边界外的值,或是分别对最大、最小个数及稍小于最小、稍大于最大个数作为测试用例。
例如:
以等价类中第一例子为例:以从1到999…。
如果使用等价类,则可以生成3个测试用例:
1. 1~999,
2. 小于1,
3. 大于999
如果使用边界值,则可以生成6个测试用例:
1.
2.
3.
4. 小于1, 等于1, 大于1, 小于999,
5. 等于999,
6. 大于999
无论是什么类型的测试,这两种测试方法都是基础,都是生成测试用例的指导思想。
6、bug管理
执行测试用例后,就会发现bug,那么到底什么是bug?
bug英文是虫子,其由来就是:第一代的计算机是由许多庞大且昂贵的真空管组成,并利用大量的电力来使真空管发光。可能正是由于计算机运行产生的光和热,引得一只小虫子(Bug)钻进了一支真空管内,导致整个计算机无法正常工作。研究人员费了半天时间,总算发现原因所在,把这只小虫子从真空管中取出后,计算机又恢复正常。
后来,Bug这个名词就沿用下来,用来表示电脑系统或程序中隐藏的错误、缺陷、漏洞等问题。
bug是测试工程师最重要的工作产出。编写完测试用例后,在开发人员提交测试版本后,测试人员开始测试执行,也就是执行测试用例,发现测试用例中逾期结果和实际结果不一致时,就需要填写bug
bug一般具有如下属性:
1.编号 :一般大一点的软件整个开发过程中会有成百上千的bug,一定要有编号。
2.测试工程师 :记录谁发现的这个bug
3.bug简述 :类似bug的标题,简单一点的bug就在简述描述就可以了
4.bug详细描述 :复杂的bug需要有详细描述,记录发现bug的详细操作及数据,必要时 贴图
5.严重级别 :一般软件分三类:
严重:导致用户主要功能不能实现的bug,例如蓝屏、报错
一般:导致用户一般功能不能实现的bug,例如一般功能404错误等 微小:不影响功能实现,但是影响用户使用的bug,例如不美观、错 别字
6.复现程度 :是否每次都出现,一般是每次必现、偶尔和只出现一次
7.解决状态: :一般有四类状态:
待修复:测试人员新发现的bug,需要开发人员修改
待验证:开发人员已经修改了,需要测试人员验证是否解决,没解决 就再改成待修复,解决了就改成已解决
已解决:经测试bug已经修复
遗留:项目结项,这类bug不再修改或后续修改
8.版本号 :记录发现当前bug的软件版本,或者解决bug的版本
bug生命周期:
7、测试类型:
从是否接触代码的角度看:
黑盒测试:所谓黑盒测试,就是不考虑软件内
部的实现算法,只考虑软件的输入、输出数据的测
试类型,主要是根据需求设计测试用例。一般的测
试都属于黑盒测试。
白盒测试:所谓白盒测试,就是需要考虑软件开发时采用
的开发工具、算法等实现方法,需要查看软件的代码,并编写
相应的代码驱动被测软件,主要根据软件需求和代码设计测试
用例。
从定义看黑盒测试不需要测试人员接触代码,也不需要掌
握开发语言和工具,要求较低。白盒测试需要测试人员掌握开发语言和工具,了解开发所采用的算法,对测试人员要求较高。
8、测试阶段:
单元测试:在软件开发过程中进行测试,这时候软件还没有完成,只是完成了一个一个的模块,这时候需要测试人员编写一些代码调用这些模块,并进行测试。数据分析,一个bug发现的越早,修改这个bug所用的成本越低,但是单元测试对测试人员要求很高。单元测试属于白盒测试。
集成测试:也是在软件开发过程中,把一个一个经过单元测试的模块逐步集成在一起,并且进行测试的阶段。这个时候软件也没有开发完成。也需要测试人员掌握开发语言。 确认测试(也叫系统测试):在整个软件开发完成后进行完整的测试,属于黑盒测试类型。这时候需要模拟用户的软、硬件环境,尽量和用户使用环境一样。验证需求、发现bug的最主要的阶段。
验收测试:主要是由用户进行的测试,他们一般不写测试用例,就是按照自己的经验使用软件,有很大的随机性。
测试与软件开发各阶段的关系:
确认测试报告
9、软件质量特性:
任何事物都是具有某些属性的,例如一个苹果有颜色、重量、形状、味道等特性,软件也不例外。
ISO9126把软件质量划分为6个大类,27个小类。
这个软件质量标准可以作为测试工程师在设计测试用例时的一个指导。可以按照质量特性的类别逐个编写测试用例。
例如:
功能一:
功能性测试用例:
1、xxxx
2、xxxxx
可靠性测试用例:
1、xxxx
2、xxxxx
易用性测试用例:
1、xxxx
功能二:
功能性测试用例:
1、xxxx
2、xxxxx
可靠性测试用例:
1、xxxx
2、xxxxx
易用性测试用例:
1、xxxx
10、其他一些测试名词
压力测试(性能测试):
主要是针对软件的效率特性进行测试,例如测试网站的响应速度、能同时容纳的用户数量等。压力测试有专用的测试工具,loadrunner用的比较多。执行压力测试一般对数据库、网络知识有一定要求。
自动化测试:
自动化测试更多的是一个思想,尽可能的把重复性的工作让计算机来执行,例如大数据录入,大量相同的操作等。可以使用专用自动化工具进行测试,也可以自己开发工具。
回归测试:
回归测试是在测试结束前,把已经执行过的测试用例都执行一遍,或者把之前已经修复的bug再重新验证一遍。
11、总结:
用一句话总结测试工作:
软件测试工程师使用黑白盒测试技术设计测试用例,然后针对软件执行测试用例,发现bug后管理bug并和开发人员进行沟通,最终修复bug。