发布新日志

  • 提问的艺术

    2009-02-10 13:53:34

     

    摘至 百度知道 http://zhidao.baidu.com/question/43559121.html

     
    在当今世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度, 同样取决于你提问的方法 。

    不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上 。

    提问之前

    在提出技术问题前,检查你有没有做到:

    1. 通读手册,试着自己找答案
    2. 在FAQ里找答案
    3. 在网上搜索
    4. 向你身边精于此道的朋友打听

    当你提出问题的时候,首先要说明在此之前你干了些什么;这将有助于树立你的形象:你不是一个妄图不劳而获的乞讨者,不愿浪费别人的时间。如果提问者能从答案中学到东西,我们更乐于回答他的问题。

    怎样提问

    用辞贴切,语法正确,拼写无误

    我们从经验中发现,粗心的写作者通常也是马虎的思考者 ,回答粗心大意者的问题很不值得,我们宁愿把时间耗在别处。更一般的说,如果你的提问写得象个半文盲,你很有可能被忽视。

    使用含义丰富,描述准确的标题

    大约50字以内的主题标题是抓住资深专家注意力的黄金时机。
    1. 谨慎明确的描述症状。
    2. 提供问题发生的环境。
    3. 说明你在提问前是怎样去研究和理解这个问题的。
    4. 说明你在提问前采取了什么步骤去解决它。
    5. 罗列最近做过什么可能有影响的硬件、软件变更。

    话不在多

    你需要提供精确有效的信息。这并不是要求你简单的把成吨的出错代码或者数据完全转储摘录到你的提问中。如果你有庞大而复杂的测试条件,尽量把它剪裁得越小越好。

    明白你想问什么

    漫无边际的提问近乎无休无止的时间黑洞。最能给你有用答案的人也正是最忙的人。如果你明确表述需要回答者做什么,就最有可能得到有用的答案。这会定出一个时间和精力的上限,便于回答者集中精力来帮你。

    别问应该自己解决的问题

    这些问题得由你来搞定,你会从中学到东西。你可以要求给点提示,但别要求得到完整的解决方案。

    去除无意义的疑问

    别用无意义的话结束提问,例如“有人能帮我吗?”或者“有答案吗?”。
    首先:如果你对问题的描述不很合适。其次:由于这样问是画蛇添足,别人会很厌烦你,而且通常会用逻辑上正确的回答来表示他们的蔑视,例如:“没错,有人能帮你”或者“不,没答案”。

    谦逊绝没有害处,而且常帮大忙

    彬彬有礼,如果你有很多问题无法解决,礼貌将会增加你得到有用答案的机会。
  • 测试用例检查单

    2009-02-06 11:22:27

    测试用例检查单

     ------摘至《全程软件测试》142页

    1.      在设计测试用例前,是否先画好UML时序图、状态图或数据流程图等?

    2.      是否有常见错误表供编写测试用例使用?

    3.      测试用例的设计思路合理吗?与产品设计、技术设计吻合吗?

    4.      测试用例的结构层次清晰、合理吗?

    5.      软件需求的所有功能点是否都有正常功能用例对应?

    6.      是否每个正常用例都有对应的异常用例?

    7.      测试用例是否覆盖了所有已知的边界值,如特殊字符、最大值、最小值?

    8.      测试用例是否覆盖了已知的无效值,如空值、垃圾数据和错误数据操作等?

    9.      测试用例是否覆盖了输入条件的各种组合情况?

    10.  测试用例是否覆盖了各种安全性问题?

    11.  测试用例是否覆盖了负载平衡和故障转移等方面的可用性问题?

    12.  是否考虑了兼容性测试用例?如是否测试了新版本同以前版本的数据、接口的兼容性?

    13.  是否考虑了关联功能的测试用例?例如,用户修改了自己的邮件地址,那么提醒、报告等是否会发生到新的地址?

    14.  是否所有的接口数据都有对应的测试用例?

    15.  测试用例的前提条件、操作步骤描述是否明确、详尽?

    16.  当前测试用例是否最小程度地依赖于先前测试或步骤生成的数据和条件?

    17.  测试用例检查点(验证点)描述是否明确、完备?

    18.  是否重用了以前的测试用例?

  • 軟件評測師教程學習(1)

    2008-08-05 13:57:11

    第1章    软件测试概论

    1.1    概述

    1957年,软件测试才开始与调试区别开来,成为一种发现软件缺陷的活动;

    20世纪80年代早期,软件测试定义发生了改变,测试不单纯是一个发现错误的过程,而且包含软件质量评价的内容;

    20世纪90年代后,测试工具开始盛行,软件测试理论与技术飞速发展。

    1.2    发展趋势

    软件测试的发展有如下几个趋势:

    测试工作将进一步前移;

    软件架构师、开发工程师、QA人员、测试工程师将进行更好的融合;

    测试职业将得到充分的尊重;

    设置独立测试部门越来越成为共识;

    测试外包服务快速增长。

    第2章    软件测试基础

    2.1 软件测试与软件质量

    2.1.1什么是软件测试

    在规定条件下对程序进行操作,以发现错误,对软件质量进行评估。

    使用人工和自动化手段来运行或测试某个系统的过程,其目的在于检验它是否满足规定的需求或是弄清预期结果与实际结果之间的差别。

    2.1.2什么是软件质量

    软件特性的总和,软件满足规定或潜在用户用户需求的能力。(1999年国际标准ISO 14598经典定义)

    2.1.3软件测试与质量保证的区别

    软件测试『质量控制(QC)』:关注的不是过程的活动,而是对过程的产物以及开发出的软件进行剖析。

    质量保证(QA):关注的是软件生命周期的管理以及验证软件是否满足规定的质量和用户的需求,着眼于软件开发活动中的过程、步骤和产物。

    2.2 软件测试的目的

    以最少的人力、物力和时间找出软件中潜在的各种错误和缺陷,通过修正各种错误和缺陷提高软件质量,回避软件发布后由于潜在的软件缺陷和错误造成的隐患所带来的商业风险。

    Grenford J.Myers就软件测试目的提出了以下观点:

    测试是程序的执行过程,目的在于发现错误;

    一个好的测试用例在于能够发现至今未发现的错误;

    一个成功的测试是发现了至今未发现的错误的测试。

    2.3 软件测试的原则

    所有的软件测试都应该追溯到用户需求;

    应该把尽早地和不断地进行软件测试作为软件测试者的座右铭;

    完全测试是不可能的,测试需要确定最佳终止时间;
    测试只能证明软件存在错误而不能证明软件没有错误;

    充分注意测试中的集群现象;『所谓的80/20原则

    避免自己编写的测试自己测试;『所谓的定势思维问题

    尽量避免测试的随意性。『体现软件测试过程的重要性

    2.4 软件测试的对象

    软件测试并不仅仅是程序测试,软件测试应该贯穿于整个软件生命周期中。『一切与软件有关的内容(比如过程中的文档、代码等等)都应该是被测试的对象

    为了把握各个环节的正确性,需要进行验证和确认(verification&validation)工作。

    验证(verification)是保证软件正确实现特定功能的一系列活动和过程,目的是保证软件生命周期中的每一个阶段的成果满足上一个阶段所设定的目标。

    确认(validation)是保证软件满足用户需求的一系列活动和过程,目的是在软件开发完成后保证软件与用户需求相符合。

    2.5软件测试分类

    2.5.1 按照开发阶段划分

    按照开发阶段划分软件测试可分为:单元测试、集成测试、系统测试、确认测试和验收测试。

    单元测试(也称模块测试)——是针对软件设计的最小单位程序模块进行正确性检验的测试工作。

    集成测试(也称组装测试)——在单元测试的基础上,将所有的程序模块进行有序的、递增的测试。『将经过测试的单元组合在一起进行测试,验证其集成后工作是否正常

    冒烟测试(也称版本验证测试、提交测试)——是在集成测试完成后,提交下一阶段测试时都需要进行的对程序主要功能进行验证的过程。

    确认测试——通过检验和提供客观证据,证实软件是否满足特定预期用途的需求。

    系统测试——在真实或仿真系统运行的环境下,检查完整的程序系统能否和系统(包括硬件、外设、网络和系统软件、支持平台等)正确配置、连接,并满足用户需求。

    验收测试——按照项目任务或合同、供需双方约定的验收依据文档进行的对整个系统的测试与评审,决定是否接收或拒收系统。

    2.5.2 按照测试实施的组织划分

    按照测试实施的组织划分,软件测试可分为开发方测试、用户测试(β测试)、第三方测试。

    第三方测试——由在技术、管理和财务上与开发方和用户方相对独立的组织进行的软件测试。『测试外包公司主要涉及的就是该种测试

    2.5.3 按照测试技术划分

    按照测试技术划分,软件测试可分为白盒测试、黑盒测试、灰盒测试;也可分为静态测试和动态测试。

    静态测试——是指不运行程序,通过人工对程序和文文件进行分析与检查,包括:走查、符号执行、需求确认等。

    动态测试——是指通过人工或使用工具运行程序进行检查、分析程序的执行状态和外部表现。

    白盒测试(也称结构测试)——通过对程序内部的分析、检测来寻找问题。『就如一个透明的盒子一样,清楚其内部程序结构和处理过程。

    黑盒测试——通过程序的外部表现来发现其缺陷和错误。『就如一个黑盒子一样,完全看不到程序内部的处理过程,只通过界面回馈进行分析。

    灰盒测试——关注输出对于输入的正确性,同时也关注内部表现,但这种关注不像白盒测试那么详细、完整,只是通过一些表征性的现象、事件、标志来判断内部的运行状态。

    2.6 软件测试过程模型

    软件开发几十年的实践过程中,出现了很多的开发模型,比如瀑布模型、原型模型、螺旋模型、增量模型、V模型、W模型等等

    由于模型需结合图形表述较为合适,所以该处就暂不作说明。


     

Open Toolbar