对软件测试的认识(理论基础知识)(一)
软件测试基础
1:什么是软件缺陷?
a.软件未达到产品设计规范表明的功能;
b.软件出现了产品设计规范指明不会出现的错误;
c.软件功能超出产品设计规范指明的范围;
d.软件未达到产品设计规范虽未指出但应达到的目标;
e.软件测试人员认为软件难以理解、不易使用、运行速度慢,或者最终用户认为不好。
2:为什么会出现软件缺陷?
a.需求变化 b.设计错误 c.软件复杂 d.开发工具
e.时间压力 f.缺乏交流 g.文档缺乏
3:优秀的软件测试人员应该具备的素质?
(一)a.沟通能力 b.技术能力 c.细心、信心、耐心
(二)软件测试员自身素质
a.应对软件测试感兴趣和对自己有自信。
b.善于怀疑,世界上没有绝对正确的,总有错误的地方,具有叛逆心理,别人认为不可能发生的事,我却认为可能发生。别人认为是对的,我却认为不是对的。
c.打破砂锅问到底的精神,对于只出现过一次的bug,一定找出原因,不解决誓不罢休。
d.保持一个良好的心情,否则可能无法把测试做好。不要把生活中的不愉快的情绪带到工作中来。
e.做测试时要细心,不是所有的bug都能很容易的找出,一定要细心才能找出这些bug。
f.灵活一些,聪明一点,多制造一些容易产生bug的例子。
g.在有条件的情况下,多和客户沟通,他们身上有你所需要的。
(三)
a.设身处地为客户着想,从他们的角度去测试系统。
b.不要让程序员,以“这种情况不可能发生”这句话说服你,相反,你应该去说服他,告诉他在客户心里,并不是这样的。
c.考虑问题要全面,结合客户的需求、业务的流程、和系统的构架,等多方面考虑问题。
d.提出问题不要复杂化,这一点和前面的有点矛盾,如果你是一新手,暂时不要管这一点,因为最终将有你的小组成员讨论解决。
e.追求完美,对于新测试员来说,努力地追求完美,这对你很好,尽管有些事无法做到,但你应该去尝试。
f.能和开发小组很好地沟通是关键。
6:什么是软件测试?(软件测试的概念)
a.1983年IEEE提出的软件工程术语中给软件测试下的定义是:“使用人工或自动的手段来运行或测定某个软件系统或系统部件的过程,其目的在于检验它是否满足规定的需求或弄清预期结果与实际结果之间的差别”。
b.软件测试是根据软件需求分析、设计说明和程序的内部结构而精心设计一批测试用例,并按照这些测试用例去运行程序,以发现程序错误的过程。简单地说就是找Bug,验证需求。
c.软件测试是为了发现错误而执行程序的过程。
d.软件测试是保证软件质量的重要手段。
7:软件测试的目标?
目标:是在软件分发到最终用户手中之前,尽早地、以最少的时间和人力找出软件中潜在的各种缺陷。
8:软件测试的原则?
a.应尽早地和不断地进行软件测试
b.测试用例应包含测试输入数据和与之对应的预期输出结果
c.程序员应避免检查自己的程序
d.设计测试用例时,应包括合理的输入条件和不合理的输入条件
e.充分注意测试中的群集现象。经验表明,测试后程序中残存的错误数目与该程序中已发现的错误数目成正比。
f.严格按照测试计划、测试用例执行,排除测试的随意性
g.应当对每一个测试结果做全面检查
h.妥善保存测试过程中的相关文档,为维护提供方便
9:软件测试的分类?以及它们的概念?
(一)软件测试方法分类
A.白盒测试:又称结构测试、逻辑驱动测试或基于软件本身的测试,白盒测试是对软件的内部细节做细致的检查,对软件的所有逻辑路径进行测试,而并不关心软件的功能要求,主要用于单元测试、集成测试。
B.黑盒测试:又称功能测试、数据驱动测试或基于软件需求的测试,通过黑盒测试可以知道软件是否符合用户的预期要求。黑盒测试不考虑软件内部的逻辑结构,主要适用于集成测试、系统测试、验收测试。
C.灰盒测试:是介于白盒测试和黑盒测试之间的一种测试方法,它不仅关注输入、输出的正确性,同时也关注软件的内部情况。多用于集成测试。
(二)软件测试阶段分类
A.单元测试:是指对软件中的最小可测试单元进行检查和验证。
B.集成测试:是在软件系统集成过程中所进行的测试,目的是检查软件单元之间的接口是否正确。
C.系统测试:是将整个软件系统看做一个整体进行测试,包括对功能、性能,以及软件所运行的软硬件环境进行测试。
回归测试:是指修改了代码后,重新执行测试。
D.验收测试:是以用户测试为主,或有测试人员等质量保障人员共同参与的测试,它也是软件正式交给用户使用前的最后一道工序。
E.验收测试又分为Alpha测试和Beta测试,其中Alpha测试指的是由用户、 测试人员、开发人员等共同参与,在非实际环境(开发环境或测试环境)下进行的内部测试;而Beta测试指的是内测后的公测,即完全交给最终用户,在实际环境中进行的测试。
(三)软件测试内容分类(一)
(1)功能测试:是对软件的各功能进行验证,以检查是否满足需求的要求。
(2)性能测试:是通过自动化测试工具模拟多种正常、峰值以及异常负载条件,来对系统的各项性能指标进行测试。
(2.1)软件的性能主要有时间性能和空间性能
A.时间性能:主要指软件的一个具体事务的响应时间。
B.空间性能:主要指软件运行时所消耗的系统资源。
(2.2)软件性能测试又分为:
A.一般性能测试:指的是让被测系统在正常的软硬件环境下运行,不向其施加任何压力的性能测试。
B.稳定性测试:也叫可靠性测试:是指连续运行被测系统检查系统运行时的稳定程度。
C.负载测试:是指让被测系统在其能忍受的压力的极限范围之内连续运行,来测试系统的稳定性。
D.压力测试:是指持续不断的给被测系统增加压力,直到将被测系统压垮为止,用来测试系统所能承受的最大压力。
(四)软件测试内容分类(二)
A.接口测试:广义上是指被测系统与外部系统之间的接口测试,狭义上是指对客户端与服务器端的接口测试,实际中大多数情况下指的是后者。
B.安全测试:检查系统对非法入侵的防范能力。
C.兼容性测试:是测试系统在不同软、硬件环境下是否能够正常运行。
D.易用性测试:是指从软件使用的合理性和方便性等角度对软件进行检查,来发现软件中不方便用户使用的地方。
E.界面测试:指的检查软件界面是否美观。
(五)、软件测试其他分类
A.动态测试:是指实际运行被测软件,输入相应的测试数据,检查输出结果和预期结果是否相符的过程。
B.静态测试:是指不实际运行被测软件,而只是静态地检查程序代码、界面或文档可能存在的错误的过程。
(B.1).静态测试包括:
a.对于代码测试:主要是测试代码是否符合相应的标准和规范。
b.对于界面测试:对于界面测试,主要测试软件的实际界面与需求中的说明是否相符。
c.对于文档测试:主要测试用户手册和需求说明是否真正符合用户的实际需求。
C.手工测试:是指手工操作软件,来进行的测试。
D.自动化测试:是指使用测试工具或编写好的测试脚本,自动运行操作软件,来进行的测试。
E.冒烟测试:在对一个新版本进行系统大规模测试之前,先验证一下软件的基本功能是否实现,是否具备可测性。
F.随机测试:是指测试中所有的输入数据都是随机的,其目的是模拟用户的真实操作,并发现一些边缘性的错误。
10:软件测试各阶段的主要测试内容?
测试阶段 主要依据 测试人员、测试方式 主要测试内容
测试阶段 | 主要依据 | 测试人员、测试方式 | 主要测试内容 |
单元测试 | 系统设计文档 | 由开发小组执行白盒测试 | 接口测试、路径测试 |
集成测试 | 系统设计文档 需求文档 |
由开发小组执行白盒测试和黑盒测试 |
接口测试、路径测试 功能测试、性能测试 |
系统测试 | 需求文档 | 由独立测试小组执行黑盒测试 | 功能测试、性能测试、用户界面测试、安全性测试、压力测试、可靠性测试、安装/反安装测试 |
验收测试 | 需求文档 | 由用户执行黑盒测试 |
11:软件测试的流程?
a.测试需求分析:根据软件需求,分析出测试点。
b.测试计划:确定测试范围、测试策略、测试人员时间安排。
c.测试用例设计及评审:根据测试需求分析,编写测试用例,并进行测试用例评审。评审分为内部评审及外部评审。
d.测试执行;执行测试用例,提交BUG,跟踪BUG,进行多轮测试。
e.测试总结,完成测试报告。
12:软件测试的模型?
(一)“V”型
这是一种古老的瀑布模型,反映了实际和测试之间的关系。
局限:仅仅把测试过程作为编码之后的一个阶段,忽视了测试对需求分析,系统设计的验证,如果前面设计错误,得一直到后期的验收测试才被发现,耗时耗力。
(二)“W”型
特点:【活动串行】测试与开发同时进行,在V模型的基础上,增加了在开发阶段的同步测试
局限:仍然不支持迭代,减少了一定错误发生率,但是需按照流水线进行设计、编码和测试
(三)“H”型
特点:【活动并行】过程活动完全独立,贯穿于整个产品的周期,与其他流程并发地进行,某个测试点准备就绪时,就可以从测试准备阶段进行到测试执行阶段;软件测试可以进行尽早的进行;软件测试可以根据被测物的不同而分层次进行。
13:开发人员与测试人员矛盾?(面试题)
开发人员和测试人员的目标是一致的:要让最终用户对软件的质量满意,所以不是敌对关系。可以通过制定相关的规范流程来方便大家的工作。如:《提测标准》、《bug等级定义》、《提测单》等。
测试人员的注意事项:
发现缺陷时不要嘲笑开发人员,别说他的程序真臭、到处是Bug。应及时记录到bug跟踪系统,看法不一致时,可以找产品经理或项目经理来裁定。
在开发人员压力太大时或心情不好时不要火上浇油,发现缺陷时别大声嚷嚷。
不要相互讽刺对方,例如:
A对B说:你唯一的特点就是无能。
B对A说:你唯一的特点就是粗鲁
版权声明:本文为kellen-fang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。