热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考”...

从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考”最近比较忙,而且情绪上有些浮动,但控制的非常好。这几天协会搞

从测试的角度来重新反思我们自己的程序以及我们的程序员之路——“通过追本溯源来进行前瞻性思考” 

 

最近比较忙,而且情绪上有些浮动,但控制的非常好。这几天协会搞一个编程比赛,部分的题目是我出的,所以最后大家决定让我做测试人员,对协会的比赛进行评测。我虽然已不担任协会职务,却毅然接受了。

首先,我了解了测试相关的概念,阅读了《软件测试》、《软件测试的艺术》、《微软的软件测试之道》、《软件测试经验与教训》等,并结合自身的测试经历来做一些记录,希望抛砖引玉。

虽然协会测试用不上这些,既然让我做了,我就应当力求公正公平,准确有效。在做好这个工作的余下时间里,作了一些浅薄的思考,现在拿出来跟大家一起分享。

 

微软虽然有很多不足,制作的程序漏洞不少,但不可否认,在其快速开发的进程中,将测试放在比较重要的位置,也是其获得较多正面评价的原因之一:

微软的组织结构:

 

 

 

微软的“大公司小团队”战略,小团队布局:

 

 

以下是读书心得,摘抄:

软件测试或系统测试大约占用50%的项目时间和超过50%的总成本。

测试是为发现错误而执行程序的过程。(人类的行为总是倾向于具有高度的目标性,确立一个正确的目标有利于实现这一目标,这里我们确立我们的目的是发现错误)

软件测试的大多数问题都是心理学问题。

程序员应当避免测试自己的程序。

一个测试用例必须包括两个部分:1、对程序的输入数据的描述2、对程序在上述输入数据下的正确输出结果的精确描述。

黑盒测试主要将重点集中放在发现程序不按其规范正确运行的环境和条件。

白盒测试主要是对程序的逻辑结构进行检查,从中获取测试数据。

检查程序是否“未做其应该做的”仅仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”。

程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比。

 

至少编写足够的测试用例,使得每一种可能均被测试,每个入口点都至少被调用一次。

经验证明,考虑了边界条件的测试用例与其他没有考虑边界条件的测试用例相比,具有更高的测试回报率。所谓边界条件,是指输入和输出等价类中那些恰好处于边界、或超过边界或在边界以下的状态。

错误猜测,是一种通过举出测试用例,找出程序漏洞的方法。

模块(单元)测试:是对程序中的单个子程序、子程序或过程进行测试的过程。

系统测试:将系统或程序与其初始目标进行比较,包含两方面的含义1、系统测试并不局限于系统,如果产品是一个程序,那么系统测试就是一个视图说明程序作为一个整体是如何不满足其目标的额过程。2、根据定义,如果产品没有一组书面的、可度量的目标,系统测试也就无法进行。

容量测试:使程序经受大容量数据的检验,其目的是为了证明程序不能处理目标文档中规定的数据容量。

强度测试:使程序承受高负载或强度的检验,所谓高强度是指在很短的时间间隔内达到的数据或操作的数量峰值。

易用测试:发现人为因素或易用性问题。(用户智力、背景、输入输出是否简介有效、错误诊断是否直接、语法风格问题、信息是否冗余不利于安全、确认信息是否需要)

安全性测试:是否达到安全目标。

可恢复性测试:故意将程序错误的置入某个系统中,判断系统是否可以从中恢复。

测试结束准则:1、用完了安排的测试时间后,测试便结束2、当执行完所有的测试用例都没有发现错误,测试便结束。

调试:是执行一次成功的测试之后要进行的工作。

 

所有的测试都是基于模型。

不要将实验与测试混淆起来。

 

威胁建模:威胁模型就象功能计划或设计文档一样,是一种规格说明。而最大的不同在于威胁模型的意图是找出一个应用程序能被攻击的所有可能的方法,然后根据概率和可能的危害来排优先级。好的威胁建模需要分析和调研技能—这两种技能使得测试在这过程中很适用。

 

测试用例的设计:

 

在实际测试过程中的心得:

1、许多同学对于题目没有读的很严谨,在输出上没有严格按照规范,输出错误是严格判错的。

2、有一个非常重要的问题是,对于边界条件没有把握好,我设计的每一种情况的边界情况考察2次,较多同学没有做好这一项,可能是时间比较紧,另外就是没有养成良好的测试和思考习惯,有的溢出、有的呈现出错误的结果等等。

3、对于程序输入值,有同学没有考虑输入完全错误和输入越界的情况。

4、还有同学图省事,简单的使用某些看似等价的语句,一测试,立刻原形毕露。

 

测试完毕后的对自己程序设计的反思:

1、要严格考察输出是否满足程序功能需求。

2、对于边界条件一定要小心,要经过严密的思考,在编程中也要注意思考的逻辑与程序逻辑的等价性。

3、对于程序的输入,严防各种类型的输入。

4、每一个语句的有效性非常重要,它们的流程在某些情况下是正常的,在另一种情况下可能出现错误,不能简单的等效之(有不同的触发因素:环境变量、特殊的值)。

5、软件测试是非常重要的一个环节,测试别人的程序,能够提高自己的编程意识。软件测试是非常严谨的,不容出错的。

 

   程序员有时候犯的最大错误,不是说写错了某个程序,而是当程序出错后,简单的调试成功,或者在外力下被迫调试成功,就再没有对出错的原因进行深入的分析,这样做没有从思想和方法上防止类似的情况发生。如果我们换一个思考的角度,通过不断调试自己或别人的程序,从反面来思考,是否对我们的编程具有一定的“前瞻性思考”呢? 

  我们有时候总是说,自己工资不够高,现在还是码农,是否是因为我们缺乏优秀的思维角度,不具有这样的一种“前瞻性思考”呢?是否也应该从此处来反省我们的程序员之路?

 

最后附上微软的聘人标准:

   问题的分析和解决能力:这个能力对测试人员非常重要,因为对问题进行解剖和找出问题的症结是提高产品质量的关键。 

 

    面向客户的创新:应聘者是否以客户为本,是否能够充分理解软件如何才能帮助客户解决问题,并对此充满兴趣和热情。 

 

    精湛的技术:我们注重的是应聘者是否通晓网络和操作系统,不仅能写代码,而且能够优化代码。 

 

    项目管理:对测试人员来说,这个能力是指如何有效支配个人的时间,以及如何策划和确保一个有许多互相牵制成分的计划得以按时完成。 

 

    对质量的执着追求:如果不具备这个素质,应聘者就无法胜任任何工程技术工作,更不必说测试工作了。 

 

    战略远见:新员工刚开始这方面比较弱,但是如果我们旨在聘用能够帮助我们找到突破 

 

     自信:在微软,测试人员找出的软件错误并不一定都能得到修正,在必要时,测试人员需要有自信而去据理力争。 

 

    冲击力和影响力:影响力来自于自信和经验,冲击力来自于敢于革新。多数应聘者在谈到如何给自己的公司带来变革,或者如何在学校带领团队出色地完成项目时,都会体现这个特征。 

 

    跨界合作:创新往往来之于各部门之间的合作,只顾埋头自己的项目,甘做井底之蛙的员工是不会成功的。 

 

人际意识:主要指自我意识,许多优秀的应聘候选人能够认识到自己的不足之处,并且知道如何不断地提高自己,也就是有一个不断提升自身素质的计划。 

 

很多人对职业发展有困惑,现在附上微软的职业发展轨道>

 

 

结合现在学长学姐这几年的职业发展,我想指出的是,其实自己的职业发展,依赖于你所选择的公司。你自己的能动性,并没有你想象的那么大,除非你想一直跳槽下去。

 

                      


转载于:https://www.cnblogs.com/zdcaolei/archive/2012/03/26/2417903.html


推荐阅读
  • CEPH LIO iSCSI Gateway及其使用参考文档
    本文介绍了CEPH LIO iSCSI Gateway以及使用该网关的参考文档,包括Ceph Block Device、CEPH ISCSI GATEWAY、USING AN ISCSI GATEWAY等。同时提供了多个参考链接,详细介绍了CEPH LIO iSCSI Gateway的配置和使用方法。 ... [详细]
  • 本文介绍了绕过WAF的XSS检测机制的方法,包括确定payload结构、测试和混淆。同时提出了一种构建XSS payload的方法,该payload与安全机制使用的正则表达式不匹配。通过清理用户输入、转义输出、使用文档对象模型(DOM)接收器和源、实施适当的跨域资源共享(CORS)策略和其他安全策略,可以有效阻止XSS漏洞。但是,WAF或自定义过滤器仍然被广泛使用来增加安全性。本文的方法可以绕过这种安全机制,构建与正则表达式不匹配的XSS payload。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • SAP羞辱国产软件商:技术停在10年前
    SAP中国研究院总裁芮祥麟表示,国产软件厂商过于热衷概念炒作,技术水平停留在10年前的客户端架构水平。他认为,国内厂商推出基于SOA的产品或转型SAAS模式是不可能的,研发新架构需要时间。当前最热门的概念是云计算,芮祥麟呼吁国产厂商应该潜心研发底层架构。 ... [详细]
  • IT方面的论坛太多了,有综合,有专业,有行业,在各个论坛里混了几年,体会颇深,以前是论坛哪里人多 ... [详细]
  • 本文讲述了孙悟空写给白骨精的信件引发的思考和反省。孙悟空在信中对自己的行为进行了反思,认识到自己胡闹的行为并没有给他带来实际的收获。他也揭示了西天取经的真相,认为这是玉皇、菩萨设下的一场陷阱。他还提到了师傅的虚伪和对自己的实心话,以及自己作为师傅准备提拔的对象而被派下来锻炼的经历。他认为路上的九九八十一难也都是菩萨算计好的,唐僧并没有真正的危险。最后,他提到了观音菩萨在关键时刻的指导。这封信件引发了孙悟空对自己行为的思考和反省,对西天取经的目的和自己的角色有了更深入的认识。 ... [详细]
  • Windows2003 IIS上设置301定向,实现不带www域名跳转带www域名的方法
    打开IIS,建一个网站,主机头用不带www的域名,随便指向一个目录。然后在这个网站上点右键,属性--主目录--重定向到URL如图ÿ ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • REVERT权限切换的操作步骤和注意事项
    本文介绍了在SQL Server中进行REVERT权限切换的操作步骤和注意事项。首先登录到SQL Server,其中包括一个具有很小权限的普通用户和一个系统管理员角色中的成员。然后通过添加Windows登录到SQL Server,并将其添加到AdventureWorks数据库中的用户列表中。最后通过REVERT命令切换权限。在操作过程中需要注意的是,确保登录名和数据库名的正确性,并遵循安全措施,以防止权限泄露和数据损坏。 ... [详细]
  • 本文分析了Wince程序内存和存储内存的分布及作用。Wince内存包括系统内存、对象存储和程序内存,其中系统内存占用了一部分SDRAM,而剩下的30M为程序内存和存储内存。对象存储是嵌入式wince操作系统中的一个新概念,常用于消费电子设备中。此外,文章还介绍了主电源和后备电池在操作系统中的作用。 ... [详细]
author-avatar
佳君旭博21
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有