谈谈对软件测试的认识
测试目的第一是确认软件的质量;第二是提供信息,比如提供给开发人员或程序经理的反馈信息;第三软件测试不仅是在测试软件产品本身,而且还包括软件开发的过程。
软件测试的基本方法1黑盒测试,也称为功能测试或数据驱动测试,着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。
2白盒测试,也称为结构测试和逻辑驱动测试,主要用于软件验证,全面了解程序内部结构,对所有逻辑路径进行测试。
3ALAC(act-like-a-customer)测试,是一种基于客户使用产品的知识开发出来的测试方法。
学习软件测试需要什么基础
首先,要有宽泛的计算机基础知识。
微机原理,数据结构,数据库,操作系统原理,编译原理,逻辑,编程语言,网络,等等,都要系统地学习过。
都精通不大可能,因为人的兴趣都不相同,但是,这些功课的基本知识点是应当了解的。
我们在谈到职业的类别的时候,我们可以说C程序员,C#程序员,Java程序员,而没有C测试员,C#测试员,Java测试员,程序员可以只擅长某一门编程语言,测试员却不行。
为什么呢?测试员是代表用户的,在做测试的时候,他(她)需要考虑到方方面面的事情。
例如对于一个用C写的上网拨号程序,测试员需要考虑:(1) 程序的功能是否正确;(要求计算机知识)(2) 是否符合用户的使用习惯;(要求界面设计知识和换位思考能力)(3) 性能是否满足要求,例如长时间使用;稳定性;(要求深入的计算机知识)(4) 是否能够满足用户可能的不同操作系统的要求;(要求计算机知识)(5) 如果在全球发布,是否满足不同语言和文化的需求;(要求软件国际化测试知识)(6) 如何搭建测试环境;(动手能力,硬件知识)(7) 做代码检查;(比较深入的C语言知识)(8) …所以,各方面都了解一点,你在做测试的过程当中你会感觉顺手的多。
如果某写方面还差一些,没有关系,计算机行业的特点就是边做边学,只要是个有心人,学习是很快的。
其次,要掌握一门编程语言。
有的朋友可能会说,我就是不愿意做编程才来做测试的,怎么测试还有这么一个要求?我要尝试说服你:)。
我的理由有两个:1. 只有知道怎么做一个软件产品,才能真正懂得这个产品。
而只有真正懂得了产品,才能做好测试。
一行代码不会,你会始终是个门外汉。
不要满足于点鼠标,而去尝试着打开我们面前的黑盒子。
2. 自动化测试技术需要编程技术。
自动化测试是软件测试的一个发展方向,一方面很多测试工具都需要人工干预,编写代码;另一方面在有的情况下需要自己编写测试工具。
对于测试员来说,编程技术不要求精通,但要会。
再次,学好英语。
在现阶段,我们只能承认,在计算机方面,英语国家领先。
有很多的资料都是英语的,如果仅仅局限在中文资料方面,会影响你的渊博程度:)。
举一个简单的例子,Windows操作系统会捕捉到一些程序或者操作系统内部的异常,你可以根据这个异常到微软网站上去查找错误原因和解决办法,其中有很大一部分资料就是英文的,因为还没有翻译过来或者以后也不会翻译的。
以上所说的几点看法,都是在计算机行业里面打转,下面说几个“虚”的要求吧。
1. 锻炼出一双测试的眼睛。
我的一个朋友,她也是做软件测试的,她说,有一次她和她老公去买笔记本电脑,她一眼就看出液晶屏上有几个坏点,而她老公却看不出来。
她说,这要归功于她有一双测试的眼睛。
测试的眼睛,就是对问题特别敏感,能够发现常人发现不了的问题。
测试员就是要找软件中的问题,有了这双眼睛会让你收益非浅。
耐心,细心和经验,会有助于我们到达这个要求。
2.平和的心态。
从心理学上说,每个人都不喜欢别人对自己挑毛病,程序员也是这样。
所以,要以平和的心态去看待发现的软件问题,以平和的心态去和程序员交流。
千万不要以为自己发现了几个问题,就可以责怪程序员,或者冲过去骂他们一顿。
也不要在背后谈论谁谁谁不行,bug太多。
一个项
软件测试的重要性是什么?
在信息时代,我们的日常生活也和各种各样的电器产品联系的越来越紧密,这些电子产品是如何发挥他们的作用呢?这就要说到它们身体里的软件。
人的思考活动都离不开大脑,电子产品想要很好的运作就离不开软件,软件就如同电子产品中的大脑。
在软件被植入电子产品中我们需要对它进行一系列的检测,我们为什么要检测,软件检测的目的是什么同样也成为我们所关注的问题,柠檬班软件测试培训为您解答。
什么是软件测试,软件测试是指软件产品在使用的过程中我们对他进行所有的检查,测评和对他进行活动能否正常的运行。
同时我们对软件检测目的也是为了让客户能够有更好的使用。
简单的说,在软件被推入市场前我们提前检测也就是替客户受用,让一些问题暴露出来我们在进行改正。
尽可能的在把软件交给客户使用前解决所有的问题并进行改正,以最好的状态交给客户。
使用时我们要对其系统运行的效率和性能进行检查,好的软件的运行效率和性能都要非常的流畅。
在使用软件时弹跳的界面要友好要方便客户的使用。
这样的软件产品才是好的合格的产品,这样就能达到我们软件检测的目的。
用户最关心的不是你的技术有多么先进功能的多么强大,而是你的软件能够给他们带来什么好处和利益。
用户最关心的是能够从这个软件中得到什么,并且这个软件能为他带来什么利益。
对于相对很复杂的软件系统来说零错误是一种理想,但是做到更好是我们的目标。
在测试的时候我们一定要充分和负责任,但是重复的检测也是一种浪费,我们在检测前要有目的的并且进行计划。
制定最低的测试通过标准和测试内容,然后我们对具体的问题具体的分析,对于问题要及时解决把软件做到更好。
通过介绍我们知道,在我们使用软件的时候,检测人员进行了一次又一次的检测只为了给客户更好的使用感觉。
软件检测的目的同样也是为了客户,为了做更好的软件。
只有我们认识到检测的重要性,才能从源头把问题解决掉,不要让客户在使用后发现问题,然后我们再去解决。
如何带好软件测试新人&测试新人如何学习
1、熟悉工作环境,认识新同事2、制定学习计划、跟进学习进度(1)了解新人的情况,制定出尽量适合新人的学习计划,计划制定的要细致,包括各个阶段要学习的内容、学习时间、学习资料、学习产出。
(2)找个机会和新人一起看下学习计划,讲解计划内容以及认真听取新人的意见,根据新人反馈的信息适当的调整计划。
和新人的沟通可以让自已更能了解新人,制定尽量适合新人的计划能让新人带着合理的目标去学习,而不会让新人感到迷茫和困惑。
(3)跟进学习进度是让自已了解前期制定的计划是不是适合新人,并且可以通过这种方式了解新人的学习情况和遇到的问题,及时根据具体情况协助新人解决。
在新人执行计划前,告诉新人以日报的形式反映学习进度、遇到的问题、心得。
3、讲解概念性的问题,让新人从整体上有个大概了解(2)发布流程方面:告诉新人发布流程的学习网址,告知流程平台的作用。
(3)业务方面:● 告诉新人业务的学习网址,告知业务学习是根本,虽然一进来是做接口测试,但是只有在了解业务的情况下才能更好的胜任测试的工作。
● 新人有一定的经验后可以给予新人整理某块业务的机会,这样有助于她对这块业务更深层次的了解。
由于我带的新人所分配的工作任务是做接口测试和偶尔做功能测试,其实在做功能测试的时候她已经了解了一些业务,所以我会整理出相关业务的一级业务点和底层对应的接口,然后让新人查找知识沉淀或者功能基线用例库把该业务的所有业务点画出mm图,让她试着根据阅读接口的实现代码进行完善mm图。
(5)测试技术方面:● 给新人找个稍微有点业务逻辑的接口让她测试,这样她可能通过对这个接口测试了解到相关的业务,也可以了解更复杂点的开发代码(1)新人问问题是一件非常正常的事情,反而没有问题可以问这才叫人干着急,所以当新人问问题的时候,尤其前几次问师傅问题时,师傅态度要诚恳,要有耐心,要是一个很好的听众。
这点是从我师傅宋缺和文朗那学到的,我觉得做好一个师傅,要善于听取新人的问题和意见,这样新人才敢抛出问题,不会把问题烂到肚子里,从而才能解决问题,这样也可以提升以后的工作效率。
5、信任和鼓励对方、让新人更加自信(2)新人来到新的环境工作,心里或多或少会有点压力,在工作中偶尔问问新人工作和生活情况,关心下新人,会让她感觉到新环境的温暖,也许可以让她更轻松更快乐的工作。
(3)多鼓励别人是一种美德,因为这是你对新人的认可,会让新人更有信心和激情去胜任手头上繁忙的工作。
(4)当新人成长了,达到自已的预估目标时,我觉得要让新人独立的去承担一些工作,可能新人会很有压力,心里会担心万一业务理解的有偏差遗漏了问题怎么办,万一在发布之前测不完怎么办。
其实这种心态是很正常的,所以师傅要把握好这个度,要做好review工作,要在适当的时候问问新人进展过程中有什么风险需不需要帮助。
当新人独立的完成了测试工作,体会到整个测试并没有延期,并没有遗漏的问题时,新人会更自信的面对以后的工作。
工作两年的前辈对于软件测试是怎么理解的呢?
软件测试就是通过一系列的有计划的操作来尽可能地发现软件中存在的缺陷和问题。
测试是一种系统的工程,有一套科学的理论和知识体系的。
软件测试能够证明软件存在问题,而不能证明软件没有问题。
建议你学好软件测试的一些基本理论和概念,比如软件测试的基本类型,以及每种类型的区别和测试的着重点;软件测试在软件研发生命周期中的作用,测试用例的设计方法及必须的要素,error的要点等等,了解了这些,相信你的面试官也不会为难你了,呵呵
人们对软件测试工程师有什么看法?
人们普遍对软件测试工程师认识不足:1. 包括一些从事软件测试工作的初级人员。
2. 不知道整天忙个不停在干点嘛,软件bug该出仍然会出。
3. 有些学软件专业的说做不了开发,就去做测试。
4. 专业测试人才很少,具有具大的需求量。
5. 测试工作没思路,抓不住重点,瞎忙,关键问题不关心,小毛病找出来一大堆,揪住不放最后变成开发眼了的挑刺儿的人,项目经理眼里的摆设兼背锅侠!
如何成为一个优秀的软件测试工程师
1、基本理论具有扎实的计算机专业知识,作为一名测试工程师,不能仅仅从使用者的角度来测试软件产品,而且还要从技术的角度来设计测试用例,这里所说的技术包括基础的与专业的,基础方面应需要学习过以下的课程:软件技术基础、C语言、面向对象设计、C++、数据库理论、计算机网络技术、软件工程、数据结构与算法、离散数学等;专业方面应掌握:软件测试技术概论、测试管理、测试工具、软件质量管理、CMM、RUP等等。
软件工程理由能够从事软件一切工作最基本的前提,是软件工程最基本的素质,这要求软件工程师必须精通高等数学、离散数学、电子学、编程语言、数据结构等课程。
软件本地化技术与软件国际化技术紧密相关,软件本地化又具有软件工程技术的通用特征,所以,有必要了解这些基础专业知识。
1)软件本地化/国际化的基本知识,包括:软件本地化/国际化的概念,软件本地化的作用,发展历史和行业前景等。
这些知识可以加深对该行业的认识,增加工作的主动性。
2)软件本地化工程的基础知识,包括软件本地化的一般工作流程,软件本地化资源文件的类型、作用和处理过程,计算机字符编码的知识,包括Unicode和双字节字符集(DBCS)知识,软件的图形用户界面(GUI)的类型和作用等。
2、基础技能包括熟练的计算机基础知识和良好的语言技能:1)装和配置常用操作系统知识软件本地化过程可能会在多种操作系统上执行,例如,经常需要在多个操作系统中对本地化软件进行测试。
熟练安装和配置常用操作系统是基本要求。
例如,操作系统Windows,Unix,Linux,Solaris。
2)计算机网络基础知识为了便于资源共享,需要在计算机网络环境下完成。
此外在与客户的交流过程中也需要因特网技术。
例如,下载软件本地化指导文档和其他相关文件,提交工作任务,测试某些软件功能。
因此,需要了解局域网和因特网基础知识,通信软件的使用和常用通信协议的基本知识。
3)通用软件的使用知识软件本地化需要使用多种软件工具,例如常用办公软件,包括字处理软件,表格处理、数据库管理和邮件管理软件等。
熟练安装和使用这些通用软件,可以提高工作效率和质量。
4) 良好的语言技能软件本地化是与语言密切相关的技术,涉及多种语言理解、表达和转换的多方面知识。
软件开发商提供的文档以英文为主,良好的阅读理解能力和基本的英语写作基础是从事本软件地化工作的基础技能。
如果与软件开发商直接联系,还需要英语听说表达能力。
3、 基础专业知识主要要是技术能力,如软件工程师需要1)编码能力:基础软件工程师的一个重要职责是把用户的需求功能用某种计算机语言予以实现。
编码能力直接决定了项目开发的效率。
这就要求软件工程师至少精通一门编程语言,比如当前国内企业常用的C/C++、VB和国际上最流行的Java语言,熟悉它的基本语法、技术特点和API(应用程序接口)。
2) 认识和运用数据库的能力信息是以数据为中心的,因此与数据库的交互在所有软件中都是必不可少的,了解数据库操作和编程是软件工程师需要具备的基本素质之一。
目前常用的数据库软件有甲骨文公司的Oracle数据库和微软公司的SQLServer等。
3)具有一定的编程经验测试工程师有时候需要对源码进行检查,有时候也会从程序结构的角度来测试软件,有时候需要写一些自动测试的工具软件,有时候需要写测试脚本,显而易见,会写简单代码,能读懂源码对测试人员来说是必须的,而且如果有一定的编程经验,可以帮助你对软件开发过程有较深入的理解,从编程人员的角度来正确地评价;但这一点在国内大部分公司里面是很难实现的,因为这意味着测试人员的salary要高于开发人员,很多BOSS会想不通的,而且也没那么高的觉悟。
4)具有软件工程的概念基础软件工程师处于软件企业人才金字塔的底层,是整个人才结构的基础,虽然他们从事的工作相对于系统分析师和高级程序员要单纯一些,但是他们是整个软件工程中重要的一环,因此,基础软件工程师同样要具有软件工程的概念。
从项目需求分析开始到安装调试完毕,基础软件工程师都必须能清楚地理解和把握这些过程,并能胜任各种环节的具体工作,这样的能力正好符合了当前企业对基础软件工程师的全面要求。
软件测试中如何保证软件质量
由此看来每一个阶段的质量都起着决定性的作用。
以上提及的四个阶段的质量将引出以下几个软件质量保证的关键要素。
完备的需求分析 需求分析的目的是让项目组明白要做什么,是决定所开发出来的软件应当是“长什么样的”,显然完备的需求分析是高质量软件的前提。
如果所开发出来的软件与用户所希望的并不一致,那不可能让用户说“这个软件的质量很好” 。
如果方向不对,软件开发得再“好”也没有意义。
需求分析失误所带来的开发成本是高昂的,这一点在《软件工程》这类书籍中都会提及,因此,整个行业对于需求分析的重要性都具有足够的认识。
当然,知道其重要性与如何获得完备的需求分析又是两回事,至于如何做好需求分析请读者参考相关书籍。
需求分析如果出现失误的话有一个特点—— 它一定会暴露!只不过存在是暴露在软件开发过程中还是在用户手中之别。
因此,需求分析所造成的问题尽管严重,但它能被发现进而能得到项目组的重视,从而也一定能被修复,只是不同阶段发现这类问题所花费的成本将有所不同。
设计 设计阶段是通过设计方法找出软件实现更好的方法,注意这里是“更好”两个字,而不是强调最好。
不良设计并不会象需求分析失误那样很容易暴露出其本质,相反,它所暴露出的更多是表象,比如逻辑复杂、维护时举步为艰等等。
如果参与者不具备一定的洞察力以发现隐藏在现象背后的不良设计本质,则很有可能身受其害却不能自拔,还以为“本来就有那么复杂”。
项目的开发是一个逐步演进的过程,项目组成员对于需求的理解也是逐步加深的,一开始合适的设计到后面看来很有可能就不够全面或显得力不从心,如果仍沿用以前的设计则自然将暴露出它的不足,进而会出现需要更高的维护成本。
重构思想的提出,就是用于帮助项目演进设计的,当然,在运用重构方法时,应尽可能保证项目有足够的单元测试用例,以预防重构时又引入新的缺陷。
重构不只是一个词,其核心应当是一个方法论,一个用于优化设计的方法论。
编程好习惯 设计阶段输出的结果就是蓝图,但好的蓝图并不能保证最后的质量一定就好。
拿造房子打个比方,图纸设计得再好,如果建造时用的材料不过关,那最终的房子一定好不了。
那软件开发中的“建筑材料”又是什么呢?就是程序员所编写的代码。
如何保证其质量呢?这需要通过良好的编程习惯去保证。
在现实的项目中,设计有可能与编码会有一定的揉合,即通过进行一定的编码来辅助设计。
这种实践方式并不影响这里将设计与编码分为两个质量保证关键要素。
验证 验证很容易让人想到质量保证的常用方法之一,即测试。
但验证应当包含更多的内涵,比如求证软件需求是用户所希望的就是其中的一种。
对于验证的理解仍需要拿房屋的建造作为一个比方,以便加深理解。
在房屋的建造过程中,当建筑材料到了工地以后,需要对其进行检验,以保证它的质量是合格的,否则不能用于建造。
对应于软件开发,这个阶段就是单元测试。
当软件工程师编写了代码以后如何保证代码的行为是其所希望的呢?那只能通过单元测试去验证。
房子建造好了以后,还得对房子进行整体的验收以确保其最终是合格的。
比如抽查墙壁所使用的水泥与沙的配比是合适的。
虽然水泥和沙在进入工地时都经过了质检且是合格的,但在建造的过程中需要按一定的比例混合它们以作建筑粘合剂,而混合比例将确定粘合强度。
在软件开发过程中,软件集成测试就如同房子在建造好了以后的验收。
从上面的比方能得出几个结论。
第一,在软件开发过程中单元测试是必不可少的。
它的缺少如同将没有检验过的建筑材料用于建造一样。
第二,单元测试应当在集成测试之前完成。
有的项目在一开始时并没有单元测试流程,但后来发现需要增加这个环节,于是出现了集成测试完成了以后,再进行单元测试这种情形。
这种情形还是有点怪怪的,这如同房子已造好了,再将墙打掉去检查里面的砖是否是好的一样。
“将墙打掉检查砖”这种行为的勇气虽然可佳,但是如果尽早地在项目中部署单元测试就能避免这种怪现象的发生。
集成(包括开发集成和系统集成)测试在软件行业被广泛采用以保证软件质量,但单元测试对于软件质量保证的重要性在整个行业还缺乏广泛的、深刻的认识,其更多地被当作是负担而不是一种有效的质量保证手段。