2017-07-25 10:32:00 weixin_30594001 阅读数 44

对软件测试可从以下三方面理解:

1、软件测试的定义,现在好像并没有统一的定义,以下列出三种供参考:

  a、使用人工或自动的手段运行某个系统的过程,以验证其是否满足规定的需求

  b、软件测试是为了发现缺陷而执行的过程

  c、弄清楚预期结果与实际结果之间的差别

2、软件测试的目的

  a、验证软件是正常的

  b、发现缺陷

  c、预防缺陷(管理质量,规范流程)

3、软件测试的原则

  1. 所有的测试都应追溯到用户需求
  2. 尽早启动测试工作
  3. 穷尽测试是不可能的
  4. 测试是有风险的
  5. 并非所有的缺陷都是值得修复的
  6. 群集效应
  7. 测试应由独立的第三方进行
  8. 二八法则(80%的缺陷存在于20%的模块中)
  9. Good-enough,即不做过份的测试也不要不充分的测试
  10. 前进两步后退一步

以上三点即是个人对软件测试的理解。

转载于:https://www.cnblogs.com/youding/p/7232539.html

2015-06-19 23:10:23 lineuman 阅读数 4953

       很少分配时间用来思考自己的职业规划问题,今天总算让自己的心静了下来,去考虑我要从事什么工作,以及我要怎么去向这方面努力,还有就是我到底喜不喜欢这份工作。要做好职业规划首先要想好我正在进行的培训的事情,软件测试,我也算是接触了一个月的时间,期间学写了linux系统,学习了oracle,学习了c语言,这说明软件测试不仅仅是理论的,也是需要了解it基础知识的,也就是说测试不是简单地用一用,而是系统地充分的检查软件。软件测试,在现在的我看来是需要耐心,更需要用心的,能够设计出充分覆盖的用例来测试软件。

    有些人选择软件测试是因为软件测试是it行业,是软件测试比一般的工薪高,但是并非出于兴趣。我不清楚我到底对软件测试有没有兴趣,因为兴趣这个东西,并不是天生的,很多的兴趣是需要后天培养的,也是要时间来检验的。下面谈谈我的职业规划,我的职业规划并不是十分的清晰,因为我不清楚某个行业到底是在做什么,需要哪些技能。我只能慢慢调整,让自己的职业规划与自己现在做的事情相互适应。在接触了软件测试这个领域之后,我觉得首先我没有排斥或者说畏惧这个工作,我想这一点来说是好事,因为我在做销售的时候我是畏惧的,虽然我很想锻炼自己的能力,但是我在面对客户时我是紧张的,我并不认为这是我的长处。我可以朝着软件测试的方向去努力,我认为我应该给自己五年的时间去检验自己,正如同一万小时定律说讲,一万小时的付出才能成为某一个领域的专家。我觉得做软件测试能够接触的面更广泛,能够从更高的角度去考察一个软件,能够从整体上把握一个软件,当我软件测试弄清楚的时候,我可以在回过头来看细节,看每一个点是怎么实现的,我可以转向开发也可以转向管理,因为我了解的东西是一个整体,而非一个细节,我的头脑里有东西,我才能够有自信。 

    现在最基本的目标就是能够进入恒生,能够学习恒生的项目,从百度上看恒生电子也是一家不错的公司,无论是氛围还是待遇都很好,那么努力让自己通过恒生的面试就成为最重要的事情,也是优先级最高的事情,然后去看去学习人家是怎么工作的,人家具体在做什么,然后踏踏实实的工作,利用工作之余学习一下基础和开发,五年也许太长,但五年以后只要你还健康,你的收入一定上万,现在看起来遥不可及,是因为你还没有全力以赴,人的大脑是非常精密的,想想你学到了多少个汉字,多少个成语,多少个英文,你就可以明白,软件测试这些东西你一定可以学会,只要你每天都去学习总结。

    人生本就是一个漫长的成长过程,许多东西从难变简单,不是你变聪明了,而是你知道的多了。知道的越多,你也就越有底气,也许有一天你可以去任何你想去的城市,做你想做的自由的事情,但这个前提是你要学会成长,学会在工作中进步,更要找到工作。

后记:

马上就要五年了,人的思想是会变的,我想我不愿意去恒生了。但是我为之奋斗过,我变强了。

2016-03-09 09:58:14 wuxiaobingandbob 阅读数 1127

http://www.cnblogs.com/zhanghairong/archive/2012/07/11/2586341.html


从开发人员角度对软件测试的些许理解

 对软件测试的认识:

    软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲,这是很有道理的。特别是一个相对复杂的系统,开发人员在刚刚开发完成的时候,尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的功能通过性测试。很难发现错误。
    测试是为发现错误而执行程序的错误。一个人发现别人身上的不足很容易,但发现自己身上的错误便不那么容易了。所谓“吾能指人之失而不能见己之失,吾能指人之小失而不能见己之大失”者是也。一个软件开发人员需要养成一种习惯,正视自己开发的软件,特别是刚刚完成的软件。要看到它的不足,知道他能做什么,不能做什么。在不能做的时候是如何处理的。对边界条件是否做了严格的判断及约束。其实大道相通,有没有这样的意识往往跟一个人为人处世的心态,对自己的认知有密切的联系。一个追求完美,经常反思自己的人往往有一种虚怀若谷的情怀,“战战兢兢、如履薄冰、如临深渊”者是也。所谓的方法、套路仅仅是方便于那些不怎么思考,只会人云亦云、亦步亦趋的人设计的。
    说了一些心态方面的,再来从方法学上说一下软件测试的要点,对开发人员来说,白盒测试要比黑盒测试更重要,这决定着你的系统上线后你能不能安心的睡觉;测试的阶段主要在单元测试与集成测试方面。

 

软件测试的分类:

    分类如下图所示(该图为大学 软件测试课程上面的图片)

 

   

开发人员测试要点:

    对于开发人员来说,我只强调单元测试、集成测试两点。
    单元测试主要 测试编写的类、类中的函数等。这是测试的最小单元。常用的测试工具有java的JUnit、BoostTest等。
    集成测试侧重于 系统的整体功能性测试,这需要模拟各种可能的请求情况,特别是边界条件。在多系统中,单个系统的测试完了后还需要各个系统之间的联调。  

    测试目标方面,除了一般的功能测试之外还需要稳定性测试、性能测试、可靠性测试、适用性测试、易用性测试、安全性测试。

    下面详细介绍一下各个测试要点的测试内容。


    1.   功能性测试要点

     在软件测试领域的通用理解是:“功能测试是基于产品功能说明书,是在已知产品所应具有的功能,从用户角度来进行功能验证,以确认每个功能是否都能正常使用、是否实现了产品规格说明书的要求、是否能适当地接收输入数锯而产生正确的输出结果等。功能测试,包括用户界面测试、各种操作的测试、不同的数据输入、逻辑思路、数据输出和存储等的测试。”    对于开发人员来说,功能性测试主要是对系统所支持的功能点的测试,对数据的测试,包括数据边界的测试、数据包长度限制的测试、各个功能模块数据的正确性测试以及容错处理。该项测试要先把系统的功能点全部列出来,对异常数据的处理也算在内。


     2. 稳定性测试要点

    测试在压力情况下内存使用情况,cpu使用情况,是否有内存泄露,各个模块功能是否正常,能否正常提供服务,是否会在高压情况下卡死等。这也需要用各种可能数据进行压力测试,要测试边界条件下,收到攻击时还能否正常工作,系统有没有自清理功能等。个人的理解,该项测试类似于可靠性测试,要点在于测试系统在极端情况下是否正常。比如一个房子在高强度地震下的抗震能力。


     3.  性能测试要点

    测试程序(一般是服务器),每秒能正常处理的请求数。这项测试一般是寻找系统的性能瓶颈,看看能否满足实际的需求。当下,一个服务器每天处理5000万的请求便可以了。当然,通过优化对性能的追求是没有止境的。


     4.  安全性测试要点

    安全性测试的主要目的是 确保软件不会去完成没有预先设计的功能。这一点很重要,需要开发人员在开发时对可能出现的情况作细致的判断。常见的安全性测试内容有:畸形的文件结构、畸形的数据包、用户输入的验证、验证资源之间的依赖关系、配置文件等的格式等。因为开发人员常常假定他所获取的资源内容是符合一定标准或规则的。附录十常见的web安全性测试的内容。


     5. 适用性测试要点

     在软件测试领域的通用理解是“适用性主要是用户体验的评估活动”。个人理解,对于开发人员,这方面主要跟易用性测试联系起来,开发软件产品是为了更方便的为人服务,一个系统要尽可能的简单,尽可能减少人工的操作。比如,在配置文件方面,有配置是为了减少代码的改动性,但是配置要尽可能的简单,可以由一个配置项解决的问题不要再添加另外一项配置。
    


附: WEB安全性测试
       一个完整的WEB安全性测试可以从部署与基础结构、输入验证、身份验证、授权、配置管理、敏感数据、会话管理、加密。参数操作、异常管理、审核和日志记录等几个方面入手。
1.        安全体系测试

  1.1)  部署与基础结构
          网络是否提供了安全的通信
          部署拓扑结构是否包括内部的防火墙
          部署拓扑结构中是否包括远程应用程序服务器
          基础结构安全性需求的限制是什么
          目标环境支持怎样的信任级别

  1.2)  输入验证

    A.  是否清楚入口点

    B.  是否清楚信任边界
    C.  是否验证Web页输入
    D.  是否对传递到组件或Web服务的参数进行验证
    E.  是否验证从数据库中检索的数据
    F.  是否将方法集中起来
    G.  是否依赖客户端的验证
    H.  应用程序是否易受SQL注入攻击
    I.   应用程序是否易受XSS攻击


  1.3)  身份验证
    是否区分公共访问和受限访问
    是否明确服务帐户要求
    如何验证调用者身份
    如何验证数据库的身份
    是否强制试用帐户管理措施

  1.4)  授权
    如何向最终用户授权
    如何在数据库中授权应用程序
    如何将访问限定于系统级资源

  1.5)  配置管理
    是否支持远程管理
    是否保证配置存储的安全
    是否隔离管理员特权

  1.6)   敏感数据
    是否存储机密信息
    如何存储敏感数据
    是否在网络中传递敏感数据
    是否记录敏感数据

  1.7)  会话管理
    如何交换会话标识符
    是否限制会话生存期
    如何确保会话存储状态的安全

  1.8)  加密
    为何使用特定的算法
    如何确保加密密钥的安全性

  1.9)  参数操作
    是否验证所有的输入参数
    是否在参数过程中传递敏感数据
    是否为了安全问题而使用HTTP头数据

  1.10)  异常管理
    是否使用结构化的异常处理
    是否向客户端公开了太多的信息

  1.11)  审核和日志记录
    是否明确了要审核的活动
    是否考虑如何流动原始调用这身份

 

2.        应用及传输安全
  WEB应用系统的安全性从使用角度可以分为应用级的安全与传输级的安全,安全性测试也可以从这两方面入手。
  2.1)应用级的安全测试

  主要目的是查找Web系统自身程序设计中存在的安全隐患,主要测试区域如下:

  2.1.1)注册与登陆:现在的Web应用系统基本采用先注册,后登录的方式。

      A. 必须测试有效和无效的用户名和密码
      B. 要注意是否存在大小写敏感,
      C. 可以尝试多少次的限制
      D. 是否可以不登录而直接浏览某个页面等。

  2.1.2)在线超时:Web应用系统是否有超时的限制,即,用户登陆一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。

  2.1.3)操作留痕:为了保证Web应用系统的安全性,日志文件是至关重要的。需要测试相关信息是否写进入了日志文件,是否可追踪。

  2.1.4)备份与恢复:为了防范系统的意外崩溃造成的数据丢失,备份与恢复手段是一个Web系统的必备功能。备份与恢复根据Web系统对安全性的要求可以采用多种手段如数据库增量备份、数据库完全备份、系统完全备份等。出于更高的安全性要求,某些实时系统经常会采用双机热备或多级热备。除了对于这些备份与恢复方式进行验证测试以外,还要评估这种备份与恢复方式是否满足Web系统的安全性需求。

  2.1.5)传输级的安全测试是考虑到Web系统的传输的特殊性,重点测试数据经客户端传送到服务器端可能存在的安全漏洞,以及服务器防范非法访问的能力。一般测试项目包括以下几个方面。
    

  2.2)HTTPS和SSL测试

  默认的情况下,安全HTTP(Soure HTTP)通过安全套接字SSL(Source Socket Layer)协议在端口443上使用普通的HTTP。HTTPS使用的公共密钥的加密长度决定的HTTPS的安全级别,但从某种意义上来说,安全性的保证是以损失性能为代价的。除了还要测试加密是否正确,检查信息的完整性和确认HTTPS的安全级别外,还要注意在此安全级别下,其性能是否达到要求。

 

 

注:该文章最初写于2011年3月8日,今天搬到博客园来。

2017-05-15 16:22:19 Brave_insist 阅读数 3605
软件测试基础
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说:你唯一的特点就是粗鲁。
2017-06-27 09:05:08 JohnWang1124 阅读数 650

测试的目的:测试主要是要保证代码质量,保证发布的代码高质量的发布给客户。

所以测试人员工作的目的是发现尽可能多的系统缺陷,可以叫bug或者是defect。测试不仅仅是需要测试技术,更需要职业道德

测试的真理是,通过了测试,不代表代码就没有缺陷,通不过测试,缺陷肯定存在。

常用的软件测试内容及方法:

不论是对于软件的模块还是系统而言,总有共同的内容需要测试。

1.正确性测试:正确性测试也称功能性测试,功能测试属于黑盒测试,在测试方法中相对简单,以完成代码最基本的功能为主,所以也最重要。

基本的方法是构造一些合理的输入输出,检查是否得到输入输出。核心思想是寻找等价区间。

还有一个方法是边界值测试

2.容错性测试:检查程序在异常情况下的执行情况,来保证程序能够在不满足运行条件的情况下,正常结束。

 比如通过不合理的输入来引诱软件出错


3.性能与效率测试:主要是验证软件的运行速度和对资源的利用率。

4.*文档测试(看文档描述的功能是否都能实现)

5.改错,测试发现出来的错误,需要让程序员去改错,否则测试工作没有意义


如何做好测试,

规范测试流程,提高测试用例质量,提供测试工具效率,提高测试人员对与测试重要性的认知及技能的提高

对软件测试的理解

阅读数 19048

没有更多推荐了,返回首页