精华内容
下载资源
问答
  • 男子用手机软件检测出自家卧室床上电磁辐射爆表
    千次阅读
    2021-07-27 10:40:30

    2c3ea5a23edd2c53ff71907a237f0562.png

    ↑用手机软件在房间里检测的数据

    随后,李先生又将手机放置在电脑旁,数值为60μT,在李先生父母的床上,辐射值又达到了100μT,李先生再次将手机移动到客厅,数值又变为了40μT,李先生告诉记者,“这会儿在客厅显示的数值才属于正常范围,而家里每个部位的辐射值都不一样,卧室里的数值有时正常有时又显示超标。”

    24be7600291cd4b9ab71fc228d3478d2.png

    ↑用手机软件在楼顶检测的数据

    李先生又带记者到楼顶的通信基站检测,两部手机检测到的数值分别为49μT和45μT。

    李先生告诉记者,自己几个月来晚上睡觉一直睡不安稳,经常感觉头晕胸闷。记者询问其是否就医缓解时,李先生拿出了自己制作的防辐射工具一面镜子和一顶套有锡纸的帽子。“我每天晚上睡觉都把锡纸放在浴帽里,然后戴在头上,胸前会放一块镜子。”李先生称自己想到的缓解办法的确能起到一些作用“戴上帽子以后整个人要舒服很多,这样做可以把辐射削弱。”

    手机电磁探测软件并不专业

    数值并不可靠

    14日下午,记者将采访的视频内容交由绵阳市无线电监测站副站长梁军,他认为,这款手机软件可能是利用手机本身一些器件的某个效能,在感应到相关的环境后作出的一个数据反映,并不具备无线电专业的监测功能,仅凭下载的一个手机转件检测出来的辐射值并不可靠。

    梁军介绍,就即便是李先生反映的有人发射无线电波,那么在他家中或者是周边监测的数值是相对统一的,偏差不会太大,至少不会只在床上“爆表”。

    至于李先生谈到的电磁波影响到到自己身体,梁军告诉记者,人们接触的无线电波分为不同的频段,一般常见的有收音机、手机信号、微波炉等。如家用电器主要是磁辐射,频段分为工频段与射频段。工频段主要有电视、电脑、吹风机、冰箱等;射频段主要有手机、微波炉等。这些东西都是通过了国家标准,对身体是没有影响的。李先生手机软件监测的数据不一定能真实反映辐射值,所以不存在对身体有影响的说法。

    更多相关内容
  • 软件工程导论—软件测试

    万次阅读 多人点赞 2020-05-13 21:26:49
    1. 软件测试基础 2. 单元测试 3. 集成测试 4. 确认测试 5. 白盒测试技术 6. 黑盒测试技术 7. 调试 8. 软件可靠性

    1. 软件测试基础

    1.1. 软件测试的目的和准则

    测试是为了发现程序中的错误而执行程序的过程,好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,成功的测试是发现了至今为止尚未发现的错误的测试。

    一般来说,软件测试有以下几条准则:

    1. 所有测试都应该能追溯到用户需求;
    2. 应该远在测试开始之前就制定出测试计划;
    3. 把Pareto原理应用到软件测试中;
    4. 应该从“小规模”测试开始,并逐步进行“大规模”测试;
    5. 穷举测试是不可能的;
    6. 为了达到最佳的测试效果,应该由独立的第三方从事测试工作。

    1.2. 软件测试方法和步骤

    软件测试方法主要分为黑盒测试和白盒测试:

    1. 黑盒测试(功能测试)
      把程序看作一个黑盒子,完全不考虑程序的内部结构和处理过程,而是在程序接口进行的测试;
    2. 白盒测试(结构测试)
      把程序看成装在一个透明的盒子里,测试者完全知道程序的结构和处理算法,按照程序内部的逻辑测试程序,检测程序中的主要执行通路是否都能按预定要求正确工作。
    黑盒测试白盒测试
    优点适用于各阶段测试
    从产品功能角度测试
    容易入手生成测试数据
    可构成测试数据使特定程序部分得到测试
    有一定的充分性度量手段
    可获较多工具支持
    缺点某些代码得不到测试
    如果规格说明有误,则无法发现
    不易进行充分性测试
    通常不易生成测试数据
    无法对未实现规格说明的部分进行测试
    工作量大,通常只用于单元测试,有应用局限
    性质一种确认技术,回答"我们在构造一个正确的系统吗?"一种验证技术,回答"我们在正确地构造一个系统吗?"

    一般来说,测试的按照以下步骤进行:

    1. 模块测试(单元测试)
      模块测试主要发现的往往是编码和详细设计的错误,目的是保证每个模块作为一个单元能正确运行;
    2. 子系统测试
      子系统测试把经过单元测试的模块放在一起形成一个子系统来测试,着重测试模块的接口。
    3. 系统测试
      把经过测试的子系统装配成一个完整的系统来测试,发现的往往是软件设计中的错误,也可能发现需求说明中的错误。不论是子系统测试还是系统测试,都兼有检测和组装两重含义,通常也称为集成测试。
    4. 验收测试(确认测试)
      验收测试是在用户积极参与下进行的,而且可能主要使用实际数据(系统将来要处理的信息)把软件系统作为单一的实体进行测试进行测试,它发现的往往是系统需求说明书中的错误
    5. 平行运行
      同时运行新开发出来的系统和将被它取代的旧系统,然后比较新旧两个系统的处理结果。平行运行可以在准生产环境中运行新系统而又不冒风险,同时用户能有一段熟悉新系统的时间,用户可以趁这段时间验证用户指南和使用手册之类的文档。以准生产模式对新系统进行全负荷测试,可以用测试结果验证性能指标。

    详细步骤说明如下表所示:

    测试阶段主要依据测试人员测试方法测试内容
    单元测试系统设计文档开发小组白盒测试接口测试
    路径测试
    子系统测试系统设计文档
    需求文档
    独立测试小组白盒测试
    黑盒测试
    接口测试
    路径测试
    功能测试
    性能测试
    系统测试需求文档独立测试小组黑盒测试功能测试、健壮性测试
    性能测试、用户界面测试
    安全性测试、压力测试
    可靠性测试、安装/卸载测试
    验收测试需求文档用户黑盒测试功能测试、健壮性测试
    性能测试、用户界面测试
    安全性测试、压力测试
    可靠性测试、安装/卸载测试

    1.3. 测试内容

    1. 接口测试
      每个接口可能有多个输入参数,每个参数有 “典型值”、“边界值”、“异常值”之分,根据接口的定义,可以推断某种输入应当产生什么样的输出。输出包括函数的返回值和输出参数。 同时要观察是否有程序语句从来没有被执行过,特别留意函数体内的错误处理程序块。
    2. 路径测试
      路径测试就是测试程序的流程路径,想遍历全部路径几乎是不可能的,不测试或者胡乱找几条路径测试却又不行,输入与对应的输出之间的路径是唯一的。由于接口测试时的输入要有代表性的,因此相应的路径也具有代表性,制定的路径测试检查表应该包括:数据类型、变量值、逻辑判断、循环、内存管理、文件I/O、错误处理。
    3. 功能测试
      功能测试的基本方法是构造一些合理输入(在需求范围之内),检查输出是否与期望相同。有两种比较好的测试方法:等价划分法和边界值分析法,等价划分是指把输入空间划分为几个“等价区间”,在每个“等价区间”中只需要测试一个典型值就可以了;边界值测试法是对等价划分法的补充。除了典型值外还要用边界值作为测试用例。
    4. 健壮性测试
      健壮性是指在异常情况下,软件能正常运行的能力。它有两层含义:(1)容错能力,容错性测试通常构造一些不合理的输入来引诱软件出错;(2)恢复能力,恢复测试重点考察系统能否重新运行、有无重要的数据丢失、是否毁坏了其它相关的软件硬件。
    5. 性能测试
      性能测试即测试软件处理事务的速度,一是为了检验性能是否符合需求,二是为了得到某些性能数据供人们参考,有时人们关心测试的“绝对值” ,有时关心测试的“相对值” 。
    6. 用户界面测试
      绝大多数软件拥有图形用户界面,图形用户界面的测试重点是正确性、易用性和视觉效果,在评价易用性和视觉效果时,主观性非常强,应当考虑多个人的观点。
    7. 信息安全测试
      信息安全性是指防止系统被非法入侵的能力,既属于技术问题又属于管理问题。主要有如下步骤:(1)为非法入侵设立目标、(2)邀请一些人扮演黑客,让他们想尽办法入侵系统,实现“目标”、(3)如果有人成功了,请他详述入侵的过程。
    8. 压力测试
      压力测试也叫负荷测试,即获取系统能正常运行的极限状态。 主要任务是:构造正确的输入,使劲折腾系统却让它刚好不瘫痪。 压力测试的一个变种是敏感测试,敏感测试目的是发现什么样的输入可能会引发不稳定现象。
    9. 可靠性测试
      可靠性是指在一定的环境下、给定的时间内、系统不发生故障的概率。软件可靠性测试可能会花费很长时间。 比较实用的办法是,让用户使用该系统,记录每一次发生故障的时刻。计算出相邻故障的时间间隔,注意要去掉非工作时间。然后统计出不发生故障的“最小时间间隔”、“最大时间间隔”和“平均时间间隔”。
    10. 安装/卸载测试
      目前市面上有非常流行的、专门制作安装/卸载程序的一些工具,如Install Shelled。主要的测试工作是:(1)至少在标准配置和最低配置两种环境下测试;(2)如果有安装界面,应当尝试各种选项,如选择“全部”、“部分”、“升级”等。

    1.4. 测试阶段的信息流

    测试阶段输入的信息有两类: 软件配置测试配置,其中软件配置包括需求说明书、设计说明书和源程序清单等,测试配置包括测试计划和测试方案。

    在这里插入图片描述

    2. 单元测试

    单元测试和编码属于软件过程的同一个阶段,它应用人工测试和计算机测试这样两种不同类型的测试方法对模块进行集中检测。单元测试主要使用白盒测试技术,对多个模块的测试可以并行地进行。

    人工测试的方法由审查小组进行,其主要使用白盒测试技术进行代码审查,审查的重点是模块接口、局部数据结构、重要的执行通路、出错处理通路和边界条件,一般来说可以查出30%~70%的逻辑设计错误和编码错误,这可以减少系统验证的总工作量。

    审查小组一般由一名审查组长,带领程序的设计人员、编码人员和测试人员共同进行。

    计算机测试的方法必须为每个单元测试开发驱动程序和(或)存根程序,驱动程序是一个“主程序”,它接收测试数据,传送给被测试的模块,并且输出有关的结果。

    存根程序代替被测试的模块所调用的模块。它使用被它代替的模块的接口,可能做最少量的数据操作,输出对入口的检验或操作结果,并且把控制归还给调用它的模块。

    3. 集成测试

    3.1. 集成测试概述

    集成测试是测试和组装软件的系统化技术,主要目标是发现与接口有关的问题。

    由模块组装成程序时有两种方法:

    1. 非渐增式测试方法
      先分别测试每个模块,再把所有模块按设计要求放在一起结合成所要的程序。非渐增式测试一下子把所有模块放在一起,并把庞大的程序作为一个整体来测试,测试者面对的情况十分复杂,在庞大的程序中想要诊断定位一个错误是非常困难的,改正错误更是极端困难,而且一旦改正一个错误之后,马上又会遇到新的错误。
    2. 渐增式测试方法
      把下一个要测试的模块同已经测试好的那些模块结合起来进行测试,测试完以后再把下一个应该测试的模块结合进来测试,每次增加一个模块,实际上同时完成单元测试和集成测试。把程序划分成小段来构造和测试,在这个过程中比较容易定位和改正错误;

    而渐增方式也有两种集成策略:自顶向下集成和自底向上集成,下面分别对它们进行介绍

    3.2. 自顶向下集成

    从主控制模块开始,沿着程序的控制层次向下移动,逐渐把各个模块结合起来,就是自顶向下的集成。
    在这里插入图片描述
    在把附属于主控制模块的那些模块组装到程序结构中去时,可以使用深度优先的策略或者使用宽度优先的策略。

    所谓深度优先,就是先组装在软件结构的一条主控制通路上的所有模块;宽度优先就是沿软件结构水平地移动,把处于同一个控制层次上的所有模块组装起来。

    在这里插入图片描述
    然后按照下述4个步骤完成把模块结合进软件结构的过程:

    1. 对主控制模块进行测试,测试时用存根程序代替所有直接附属于主控制模块的模块;
    2. 根据选定的结合策略(深度优先或宽度优先),每次用一个实际模块代换一个存根程序(新结合进来的模块往往又需要新的存根程序);
    3. 在结合进一个模块的同时进行测试;
    4. 为了保证加入模块没有引进新的错误,可能需要进行回归测试(即,全部或部分地重复以前做过的测试);
    5. 不断地重复2~4步,直到构造起完整的软件结构为止。

    自顶向下的测试能够在测试的早期对主要的控制或关键的抉择进行检验,如果选择深度优先的结合方法,可以在早期实现软件的一个完整的功能并且验证这个功能。但是由于存根程序代替了低层次的模块,在软件结构中没有重要的数据自下往上流。

    3.3. 自底向上集成

    在这里插入图片描述
    用下述步骤可以实现自底向上的结合策略:

    1. 把低层模块组合成实现某个特定的软件子功能的族;
    2. 写一个驱动程序(用于测试的控制程序),协调测试数据的输入和输出;
    3. 对由模块组成的子功能族进行测试;
    4. 去掉驱动程序,沿软件结构自下向上移动,把子功能族组合起来形成更大的子功能族。
    5. 不断重复2~4步,直到构造起完整的软件结构为止。
      在这里插入图片描述

    3.4. 不同集成测试策略的比较与回归测试

    集成测试策略优点缺点
    非渐增式没有错误隔离手段
    主要设计错误发现迟
    潜在可重用代码测试不充分
    需要驱动程序和存根程序
    自顶向下具有错误隔离手段
    主要设计错误发现早
    不需要驱动程序
    潜在可重用代码测试不充分
    需要存根程序
    自底向上具有错误隔离手段
    潜在可重用代码能充分测试
    不需要存根程序
    主要设计错误发现迟
    需要驱动程序
    混合具有错误隔离手段
    主要设计错误发现早
    潜在可重用代码能充分测试
    较少

    所谓混合集成测试策略,主要有两种:

    1. 改进的自顶向下测试方法
      基本上使用自顶向下的测试方法,但是在早期使用自底向上的方法测试软件中的少数关键模块。该策略能在测试的早期发现关键模块中的错误;测试关键模块时需要驱动程序。
    2. 混合法
      对软件结构中较上层使用的自顶向下方法与对软件结构中较下层使用的自底向上方法相结合,该策略兼有两种方法的优缺点,当被测试的软件中关键模块比较多时,这种混合法可能是最好的折衷方法。

    每一轮集成测试后都要尽可能的进行回归测试,用于保证由于调试或其他原因引起的变化,不会导致非预期的软件行为或额外错误的测试活动,可以通过重新执行全部测试用例的一个子集人工地进行,也可以使用自动化的捕获回放工具自动进行。

    4. 确认测试

    4.1. 确认测试概述

    确认测试也称为验收测试,它的目标是验证软件的有效性(即软件的功能和性能是否符合用户预期)。

    需求分析阶段产生的软件需求规格说明书,准确地描述了用户对软件的合理预期,因此是软件有效性的标准,也是进行确认测试的基础。

    4.2. 确认测试的范围和软件配置复查

    确认测试必须有用户积极参与,或者以用户为主进行,使用用户界面输入测试数据并且分析评价测试的输出结果,在验收之前通常要由开发单位对用户进行培训,一般来说确认测试分为Alpha和Beta测试。

    确认测试的一个重要内容是复查软件配置。复查的目的是保证软件配置的所有成分都齐全,质量符合要求,文档与程序完全一致,具有完成软件维护所必须的细节。

    4.3. Alpha和Beta测试

    Alpha测试就是由开发者“指导”用户在开发环境下进行的测试。Alpha测试是在受控的环境中进行的。

    Beta测试就是由软件的最终用户们在一个或多个实际生产环境下进行的测试。开发者通常不在Beta测试的现场,因此,Beta测试是软件在开发者不能控制的环境中的“真实”应用。

    5. 白盒测试技术

    5.1. 白盒测试技术概述

    白盒测试应包含完整的测试方案,所谓测试方案包括具体的测试目的(例如,预定要测试的具体功能),应该输入的测试数据和预期的结果。通常又把测试数据和预期的输出结果称为测试用例。
    在这里插入图片描述

    5.2. 逻辑覆盖

    有选择地执行程序中某些最有代表性的通路是对穷尽测试的惟一可行的替代办法。从覆盖源程序语句的详尽程度分析,大致有以下一些不同的覆盖标准:

    1. 语句覆盖
      选择足够多的测试数据,使被测程序中每个语句至少执行一次。语句覆盖对程序的逻辑覆盖很少。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。
    2. 判定覆盖
      不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
    3. 条件覆盖
      不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也有反例,总之,判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。
    4. 判定/条件覆盖
      使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。
    5. 条件组合覆盖
      要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到,是从对程序路径的覆盖程度分析的逻辑覆盖标准。
    6. 点覆盖
      选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。
    7. 边覆盖
      选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。通常边覆盖和判定覆盖是一致的。
    8. 路径覆盖
      选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次。

    在这里插入图片描述

    5.3. 控制结构测试

    控制结果测试分为基本路径测试和循环测试,具体如下

    1. 基本路径测试
      基本路径测试是Tom McCabe提出的一种白盒测试技术。首先计算程序的环形复杂度,以该复杂度为指南定义执行路径的基本集合,从该基本集合导出的测试用例可保证程序中的每条语句至少执行一次,而且每个条件在执行时都将分别取真、假两种值。
    2. 循环测试
      循环测试是一种白盒测试技术,它专注于测试循环结构的有效性。在结构化的程序中通常只有3种循环,即简单循环、串接循环和嵌套循环。
      (1)简单循环
      应该使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数:
      跳过循环、只通过循环一次、通过循环两次、通过循环m次,其中m<n-1、通过循环n-1,n,n+1次。
      (2)嵌套循环
      从最内层循环开始测试,其他循环都设置为最小值。对最内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值。然后继续进行下去,直到测试完所有循环。
      (3)串接循环
      如果串接循环的各个循环都彼此独立,则可以使用测试简单循环的方法来测试串接循环。如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。

    在这里插入图片描述

    6. 黑盒测试技术

    6.1. 黑盒测试概述

    黑盒测试着重测试软件功能,主要的错误类型为: 功能不正确或遗漏了功能、界面错误、数据结构错误或外部数据库访问错误、性能错误、初始化和终止错误

    黑盒测试的公认标准主要有两个:(1)测试用例尽可能少;(2)一个测试用例能指出一类错误。

    6.2. 等价划分

    使用等价划分法设计测试方案首先需要划分输入数据的等价类,等价划分是一种黑盒测试技术,把程序的输入域划分成若干个数据类,据此导出测试用例。设计测试方案时尽量设计出能发现若干类错误的测试用例,从而减少测试用例的数目,每类中的一个典型值在测试中的作用要与这一类中所有其他值的作用相同。此外常常还需要分析输出数据的等价类,以便根据输出数据的等价类导出对应的输入数据等价类。

    等价类划分的启发式规则

    1. 如果规定了输入值的范围,则可划分出一个有效的等价类(输入值在此范围内),两个无效的等价类(输入值小于最小值或大于最大值);
    2. 如果规定了输入数据的个数,则类似地也可划分出一个有效的等价类和两个无效的等价类;
    3. 如果规定了输入数据的一组值,而且程序对不同输入值做不同处理,则每个允许的输入值是一个有效的等价类,此外还有一个无效的等价类(任一个不允许的输入值);
    4. 如果规定了输入数据必须遵循的规则,则可以划分出一个有效的等价类(符合规则)和若干个无效的等价类(从各种不同角度违反规则);
    5. 如果规定了输入数据为整型,则可以划分出正整数、零和负整数等3个有效类;
    6. 如果程序的处理对象是表格,则应该使用空表,以及含一项或多项的表。

    使用等价划分法设计黑盒测试的方案时可以按照如下两个步骤进行:

    1. 设计一个新的测试方案以尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步骤直到所有有效等价类都被覆盖为止;
    2. 设计一个新的测试方案,使它覆盖一个而且只覆盖一个尚未被覆盖的无效等价类,重复这一步骤直到所有无效等价类都被覆盖为止。

    6.3. 边界值分析

    经验表明,处理边界情况时程序最容易发生错误。例如,许多程序错误出现在下标、纯量、数据结构和循环等等的边界附近。使用边界值分析方法设计测试方案首先应该确定边界情况。选取的测试数据应该刚好等于、刚刚小于和刚刚大于边界值。

    通常设计黑盒测试方案时总是联合使用等价划分和边界值分析两种技术。

    6.4. 错误推测

    不同类型不同特点的程序通常又有一些特殊的容易出错的情况。因此必须依靠测试人员的经验和直觉,从各种可能的测试方案中选出一些最可能引起程序出错的方案。它的基本想法是列举出程序中可能有的错误和容易发生错误的特殊情况,并且根据它们选择测试方案。

    7. 调试

    7.1. 调试概述

    调试是在测试发现错误之后排除错误的过程,软件错误的外部表现和它的内在原因之间可能并没有明显的联系,调试就是把症状和原因联系起来的尚未被人深入认识的智力过程。

    7.2. 调试过程和途径

    调试发生在测试之后,调试过程从执行一个测试用例开始,评估测试结果,如果发现实际结果与预期结果不一致,则这种不一致就是一个症状,它表明在软件中存在着隐藏的问题。

    调试过程试图找出产生症状的原因,以便改正错误。
    在这里插入图片描述
    调试可以通过下列途径进行:

    1. 蛮干法
      蛮干法可能是寻找软件错误原因的最低效的方法。其他方法都失败时才使用这种方法,这种方法印出内存的内容,激活对运行过程的跟踪,在程序中到处都写上WRITE(输出)语句。更多情况下这种方法只会浪费时间和精力。必须首先进行周密的思考,有明确的目的,尽量减少无关信息的数量。
    2. 回溯法
      回溯是一种相当常用的调试方法,当调试小程序时这种方法是有效的。具体做法是,从发现症状的地方开始,人工沿程序的控制流往回追踪分析源程序代码,直到找出错误原因为止。但是随着程序规模扩大,应该回溯的路径数目也变得越来越大,以至彻底回溯大程序变成完全不可能了。
    3. 原因排除法
      (1)对分查找法
      如果已经知道每个变量在程序内若干个关键点的正确值,则可以用赋值语句或输入语句在程序中点附近“注入”这些变量的正确值,然后运行程序并检查所得到的输出,如果输出结果是正确的,则错误原因在程序前半部分;反之,错误原因在程序后半部分,对错误原因所在的那部分重复使用这个方法,直到把出错范围缩小到容易诊断的程度为止。
      (2)归纳法
      归纳法是从个别现象推断出一般性结论的思维方法。首先把和错误有关的数据组织起来进行分析,以便发现可能的错误原因,然后导出对错误原因的一个或多个假设,并利用已有的数据来证明或排除这些假设。
      (3)演绎法
      演绎法从一般原理或前提出发,经过排除和精化的过程推导出结论。首先设想出所有可能的出错原因,然后试图用测试来排除每一个假设的原因。

    8. 软件可靠性

    8.1. 软件可靠性相关的几个概念

    软件可靠性:程序在给定的时间间隔内,按照规格说明书的规定成功地运行的概率。

    软件的可用性:程序在给定的时间点,按照规格说明书的规定,成功地运行的概率。

    稳态可用性(Ass):如果在一段时间内,软件系统故障停机时间分别为 t d o w n 1 t_{down1} tdown1 t d o w n 2 t_{down2} tdown2,…,正常运行时间分别为 t u p 1 t_{up1} tup1 t u p 2 t_{up2} tup2,…,则系统的稳态可用性为:

    A s s = T u p T u p + T d o w n Ass=\frac{T_{up}}{T_{up}+T_{down}} Ass=Tup+TdownTup

    其中 T u p = ∑ t u p i T_up=\sum t_{upi} Tup=tupi T d o w n = ∑ t d o w n i T_down=\sum t_{downi} Tdown=tdowni

    平均维修时间(MTTR):是修复一个故障平均需要用的时间,它取决于维护人员的技术水平和对系统的熟悉程度,也和系统的可维护性有重要关系。

    平均无故障时间(MTTF):是系统按规格说明书规定成功地运行的平均时间,它主要取决于系统中潜伏的错误的数目,因此和测试的关系十分密切。稳态可用性也可以表示为:

    A s s = M T T F M T T F + M T T R Ass=\frac{MTTF}{MTTF+MTTR} Ass=MTTF+MTTRMTTF

    8.2. 估算平均无故障时间的方法

    1、相关量的符号
    E T ET ET——测试之前程序中错误总数;
    I T IT IT——程序长度(机器指令总数);
    τ \tau τ——测试(包括调试)时间;
    E d ( τ ) E_d(\tau) Ed(τ)——在 0 0 0 τ \tau τ期间发现的错误数;
    E c ( τ ) E_c(\tau) Ec(τ)——在 0 0 0 τ \tau τ期间改正的错误数。

    2、基本假定
    在类似的程序中,单位长度里的错误数 E T I T \frac{ET}{IT} ITET近似为常数。通常: 0.5 × 1 0 − 2 ⩽ E T I T ⩽ 2 × 1 0 − 2 0.5×10^{-2} \leqslant \frac{ET}{IT} \leqslant 2×10^{-2} 0.5×102ITET2×102

    失效率正比于软件中剩余的错误数,而平均无故障时间MTTF与剩余的错误数成反比。

    假设发现的每一个错误都立即正确地改正了,则 E d ( τ ) = E c ( τ ) E_d(\tau)=E_c(\tau) Ed(τ)Ec(τ),剩余的错误数为 E r ( τ ) = E T - E c ( τ ) E_r(\tau)=ET-E_c(\tau) Er(τ)ETEc(τ),单位长度程序中剩余的错误数为: e r ( τ ) = E T I T - E c ( τ ) I T er(\tau)=\frac{ET}{IT}-\frac{E_c(\tau)}{IT} er(τ)ITETITEc(τ)

    3、估算平均无故障时间
    经验表明,平均无故障时间与单位长度程序中剩余的错误数成反比,即: M T T F = 1 K ( E T I T − E c ( τ ) I T ) MTTF=\frac{1}{K(\frac{ET}{IT}-\frac{E_c(\tau)}{IT})} MTTFK(ITETITEc(τ))1其中K为常数,典型值是200。

    估算平均无故障时间的公式,可以评价软件测试的进展情况,其公式为 E c = E T - I T K × M T T F Ec=ET-\frac{IT}{K×MTTF} EcETK×MTTFIT

    因此,也可以根据对软件平均无故障时间的要求,估计需要改正多少个错误之后,测试工作才能结束。

    4、估计错误总数的方法
    程序中的错误总数 E T ET ET与程序规模、类型、开发环境、开发方法论、开发人员的技术水平和管理水平等都有密切关系。

    估计ET的两个方法:

    1. 植入错误法
      在测试之前由专人在程序中随机地植入一些错误。测试之后,根据测试小组发现的错误中原有的和植入的两种错误的比例,来估计程序中原有错误的总数 E T ET ET
      假设人为地植入的错误数为 N s N_s Ns,经过一段时间的测试之后发现 n s n_s ns个植入的错误,此外还发现了 n n n个原有的错误。如果可以认为测试方案发现植入错误和发现原有错误的能力相同,则能够估计出程序中原有错误的总数为: N = n / n s × N s N=n/n_s×N_s N=n/ns×Ns
      在这里插入图片描述
    2. 分别测试法
      植入错误法的基本假定是所用的测试方案发现植入错误和发现原有错误的概率相同,这个基本假定可能有时和事实不完全一致。如果有办法随机地把程序中一部分原有的错误加上标记,然后根据测试过程中发现的有标记错误和无标记错误的比例,估计程序中的错误总数,那就可以做分别测试。
      分别测试法使用两个测试员(小组),彼此独立地测试同一个程序的两个副本,把其中一个测试员发现的错误作为有标记的错误。
      τ \tau τ表示测试时间,设:
      τ = 0 \tau=0 τ=0 时错误总数为 B 0 B_0 B0
      τ = τ 1 \tau=\tau 1 τ=τ1时测试员甲发现的错误数为 B 1 B_1 B1,测试员乙发现的错误数为 B 2 B_2 B2,两个测试员发现的相同错误数为 b c bc bc
      如果认为测试员甲发现的错误是有标记的,即程序中有标记的错误总数为 B 1 B_1 B1,则测试员乙发现的 B 2 B_2 B2个错误中有 b c bc bc个是有标记的。假定测试员乙发现有标记错误和发现无标记错误的概率相同,则错误总数为 B 0 = B 2 b c × B 1 B_0=\frac{B_2}{bc}×B_1 B0=bcB2×B1
      在这里插入图片描述
    展开全文
  • 我们在生活工作中很经常使用数据传输,有的是用手机向电脑传送文件,有的是电脑互传文件等等,这些都是数据传输,而一款好用的数据传输软件,不仅大大提高传输效果,也可以保证数据的安全性,这样就不会怕被追踪了,...

    我们在生活工作中很经常使用数据传输,有的是用手机向电脑传送文件,有的是电脑互传文件等等,这些都是数据传输,而一款好用的数据传输软件,不仅大大提高传输效果,也可以保证数据的安全性,这样就不会怕被追踪了,那么哪些数据传输软件是好的呢,下面小编就为大家介绍一些好用的数据传输软件,希望可以帮到大家哦。

    一、迅雷快传

    迅雷快传是一款提供大文件高速上传的服务。采用多点上传技术,支持断点续传,支持超大文件的上传,支付多文件上传,不限上传空间。是目前支持文件大小最大,上传速度最快的上传软件之一。迅雷会员专享带宽,高速下载。

    99fbcbe8bdf5b20973ba18ef192c0414.png

    功能介绍

    极速下载体验 依托迅雷雄厚的云下载技术,让您轻松快捷 下载文件。

    支持断点续传 您只要使用客户端或安装插件,即可支持断点续传功能。

    多文件分享更容易 一条下载地址可容纳多个文件,从此和繁琐的链接分享说88。

    下载地址:迅雷快传

    二、Http File Server(http服务器软件)

    Http File Server是专为个人用户所设计的 HTTP 文件服务器,如果您觉得架设 FTP Server 太麻烦,那么这个软件可以提供您更方便的档案传输系统,下载后无须安装。

    1171cb3ac64dedad7ca042317e008409.png

    使用方法

    运行主程序,在“虚拟文件系统”窗格下按鼠标右键,即可新增/移除文件夹。或者直接将欲加入的档案拖曳至此窗口,便可架设完成个人 HTTP 文件服务器。可以选择将设置保存在注册表或者ini文件。主程序提供卸载功能,并会自动删除自身。所以使用起来不会对操作系统做什么改动。

    下载地址:Http File Server

    三、tb传输精灵

    tb传输精灵此软件是辅助android版本tb传输精灵的电脑端,安装此软件之后,你可以轻松的实现在电脑端和手机端互传文件,免除数据线的麻烦。

    120ecf111c27e9dbc5eef69db909c9f8.png

    tb传输精灵的特色

    【丢掉数据线,让文件传输更简单】免去了连接不同设备需要多次插拔的重复性操作,让文件分享的体验变得简单、轻松。

    【数据随心转递,享受科技生活】人性化的交互方式,超高的易用性,让用户1分钟内,开始体验文件分享的乐趣。

    【更方便的多种设备文件传输方案】PC和任意安卓手机或平板之间,无缝传输。任何设备都轻松拥有你想要的文件。

    【手机变身大容量无线移动硬盘】可以在软件的支持下,让手机拥有移动硬盘的功能,并且再不用为忘记带数据线而烦恼。

    【独创精灵小管家随时为您服务】小精灵管家免教程设计,让操作提示信息更友善,享受服务的同时获得更人性化体验。

    【超高安全性,周密的隐私保护】基于独创的设备安全性信任方式,让您分享文件的同时充分保证您的文件安全不被泄露。

    下载地址:tb传输精灵

    四、喔喔兔局域网传输软件

    局域网内文件一键传输软件,支持右击发送文件给同事。无需安装,双击即用。

    1bb08a286e1c13b84b510cf4d7b5c9fc.png

    第一步:姓名设置,拖曳文件到窗口。

    第二步:右击文件发送。

    下载地址:喔喔兔局域网传输软件

    五、局域网共享软件

    局域网共享工具下载,可快速设置你的xp、win7系统的文件共享设置,使其它局域网用户访问,共享你的目录或资源。

    e9f8a0836a72d2dc977e15539c9a2165.png

    功能介绍

    一键获局域网在线计算机。

    一键共享文件夹和磁盘。

    一键设置共享打印机。

    一键开启远程和链接到远程桌面。

    一键设置文件夹属性,让你共享文件更安全!

    一键设置共享密码,让知道密码的人才能访问你共享的东西。

    下载地址:局域网共享软件

    展开全文
  • 近日,有安全研究人员指出,使用著名加密聊天软件Telegram的“附近”功能可以暴露用户的确切位置,且该功能长期存在。要知道,Telegram作为一款高度匿名软件,一旦暴露所处位置,...


    近日,有安全研究人员指出,使用著名加密聊天软件Telegram的“附近的人”功能可以暴露用户的确切位置,且该功能长期存在。要知道,Telegram作为一款高度匿名软件,一旦暴露所处位置,可能会当场社会性死亡,目前,启用此功能的人可以看到是十几千米内的其他用户列表,从而可以添加附近的人进行聊天。


    而该安全研究员通过伪造自己的Android设备位置,分别定位到三个不同点的距离,然后使用三角定位法来精确定位目标的位置,从而能够使用此方法检索确切的家庭住址。当年国内各种社交APP没有对用户位置距离限定的比较严格的时候曾经被多方使用过这项技术。

    详细原理如下:


    打开Telegram,点击附近的人,可以选择查看人们离你的所在位置有多远。(此处可伪造)

    单击它之后,它将显示附近的人的列表,如下所示:

    如图所见,Telegram会告诉每个人离自己有多远。

    这里提一下三角定位法,其原理是利用2台或者2台以上的探测器在不同位置探测目标方位,然后运用三角几何原理确定目标的位置和距离。

    应用到定位领域可以见下图。

    (网图,侵权删除)

    因此可以通过伪造自己位置以获得三个点,这三个点以三角分布进行选取,这样每伪造一个位置,就获取一下你想要获取的目标地址现在显示的距离有多远,这里距离作为半径,最后用这些数据绘制三个三角剖分圆。其中伪造手机定位方法有很多种,详细可以搜索伪造定位。

    Telegram最多可以获取在7英里(11千里)半径范围内的用户列表。这里研究员发现目标用户住在贝里奇(Bay Ridge),所以把地址欺骗到贝里奇(Bay Ridge)地区。然后收集那个人离自己伪造的点的距离。重复三遍,如下所示:


    最后打开Google Earth Pro,搜索位置的纬度和经度,然后使用标尺从每个位置绘制一个带有目标用户目的地的圆。结果如下:

    三个圆圈的交点是用户的位置。为了验证这一点,研究员添加了一个用户,并询问他们是否住在附近。

    结果显然,该用户确实住在那。

    目前,Telegram方面认为这不符合他们的漏洞赏金计划中,并表示如果不使用该功能的时候可以禁用他,所以不打算修复,因此这个方法有可能一直有效。

    值得一提的是,该安全研究员在Line应用程序中报告了同样的问题,Line方面给了他1000美元,而解决办法是,他们通过向用户的目的地添加随机数从而使得上述提及的方法不再准确。

    此外,目前有人发帖称,他已经在许多主要城市使用Telegrams API运行了一个自动化脚本,已收集数以万计的用户几个月的运动数据,其还希望Telegram不要修复这个功能。

    最后,黑鸟看了一下Telegram的APP,发现需要自己点击允许位置权限等才会开启该功能,为了生命安全,建议勿要开启。


    参考链接:

    https://blog.ahmed.nyc/2021/01/if-you-use-this-feature-on-telegram.html

    上期:国家级黑客使用iMessage漏洞攻击记者,无需点击即可触发

    没更新的日子都在知识星球更新情报,欢迎订阅

    展开全文
  • 软件工程复习

    千次阅读 2021-06-17 20:29:16
    1.1 软件危机 1.1.1 计算机软件的四个发展阶段 程序设计阶段、程序系统阶段、软件工程阶段、面向对象阶段 1.1.2 软件危机(考点) 软件危机是指在计算机软件的开发和维护过程种所遇到的一系列严重问题。 1.1.3 软件...
  • 软件测试工程师经典面试题

    万次阅读 多人点赞 2018-10-27 23:55:52
      软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较广的。前期面试实习生或者一年左右的岗位,问的也主要是一些基础性的问题比较多。涉及的知识主要有MySQL数据库的使用、Linux...
  • 风控EA控制面板.ex5

    2021-10-22 16:32:58
    很多操盘习惯性不止损, 重仓,或者疏忽下错手数。执行力不够,到达止盈和止损位时,舍不得平仓了结。 总想赚得更多, 或者再等一等浮亏就会回来,这种赌徒的心理最终会害了自己的。该软件解决交易员执行力问题。 ...
  • 风控EA控制面板.ex4

    2021-10-22 16:32:58
    很多操盘习惯性不止损, 重仓,或者疏忽下错手数。执行力不够,到达止盈和止损位时,舍不得平仓了结。 总想赚得更多, 或者再等一等浮亏就会回来,这种赌徒的心理最终会害了自己的。该软件解决交易员执行力问题。 ...
  • java 实现搜索附近人功能

    万次阅读 多人点赞 2017-04-17 16:01:44
    方案一:现在很多手机软件都用附近搜索功能,但具体是怎么实现的呢》在网上查了很多资料,mysql空间数据库、矩形算法、geohash我都用过了,当数据上了百万之后mysql空间数据库方法是最强最精确的(查询前100条数据只...
  • 辨别捆绑软件教程

    千次阅读 2020-05-21 08:53:43
    不想对电脑造成伤害?今天我就来教大家如何辨别捆绑软件
  • Od软件破解

    千次阅读 2018-03-02 13:11:43
    【文章标题】:算法分析与注册机编写【文章作者】:hahaya【软件名称】:Free Internet Window Washer【软件大小】:1177KB【保护方式】:注册码【软件介绍】:无【下载地址】:...:无壳【编写工具】:Borland ...
  • 软件工程

    万次阅读 多人点赞 2021-01-24 17:13:02
    软件工程——原理、方法与应用(学习笔记)
  • 软件工程-软件测试和系统运维

    千次阅读 2021-06-05 21:28:52
    程序员避免测试自己设计的程序:测试工作应避免由原开发软件或小组来承担(单元测试除外) 不仅要包括合理、有效的输入条件,也要包括不合理、失效的输入条件 不仅要确定输入数据,而且要从系统的功能出发...
  • 软件工程】 期末考试 重点复习

    千次阅读 多人点赞 2019-12-04 13:33:08
    文章目录第一章:软件工程概述1、什么是软件工程2、软件工程的基本原理3、什么是软件危机? 什么原因导致了软件危机?4、消除软件危机的途径第二章:软件过程1、软件生命周期的基本任务2、瀑布模型3、快速原型模型4...
  • 所谓千里马常有而伯乐不常有,对于那些有梦想却没有地方去实现的千万不要觉得难过,因为总有“伯乐”会出现在你的面前,悄悄的掏空你的腰包,最后还得给别人说一声谢谢。 正常面试流程 “你好,请问下是何先生...
  • 山寨版“滴滴”,竟是招嫖软件

    千次阅读 2021-08-19 00:17:36
    他们通过微信附近寻找猎物,利用虚拟定位软件在繁华地带发布各种信息,引诱单身男,所以我奉劝广大单身男孩要在外面保护好自己。 这些嫩模,实际是几百台手机自动海量发布的黄图,其实都不是本人,都是网络搜刮...
  • 引发C++软件异常的常见原因分析

    千次阅读 多人点赞 2021-10-30 17:58:00
    引发C++软件异常的常见原因分析。
  • 软件测试工程师,和开发工程师相比起来,虽然前期可能不会太深,但是涉及的面还是比较...今天这篇帖子主要讲解之前面试自己面试过程中或者周围面试过程中经常被问到且比较经典的面试题,一家之言,如有异议或者有想问
  • 1)**软件过程描述为为了开发出客户需要的软件,什么、在什么时候、做什么事以及怎么做这些事以实现某一种的具体目标。**ISO9000把过程定义为:“使用资源将输入转化为输出的活动所构成的系统”。(《软件工程导论...
  • 软件测试工程师常见的面试题大全

    千次阅读 2021-12-07 11:50:56
    软件测试工程师常见的面试题大全
  • 基督信仰与电脑软件 随笔

    千次阅读 2020-10-27 23:54:06
    记得当时我一位朋友,我去网吧上网。这家伙一上机,就同时开了好几个QQ聊天窗口,与不同的网友聊得不亦乐乎,我当时真的好羡慕他,看着他十个手指在键盘上运指如飞,觉得他真的好厉害啊。但是他太忙了,根本没有...
  • 在这个智能手机的时代,一个不止一台智能手机。智能手机虽然无所不能,但没有网络,也形同虚设。但是智能手机上网走流量,流量费又很贵。智能手机只有连接wifi,才会有用不尽的流量,这样会给我们省下不小的流量费...
  • ASAP光学设计软件

    千次阅读 2020-06-19 14:03:20
    欧美光学行业标准软件 ASAP(Advanced Systems Analysis Program)软件是美国 Breault Research Organization(BRO) 公司研发的一款在 3D空间通过非序列光线追迹来模拟光学系统表现度的软件。多年以来,广泛应用在...
  • 软件测试概述

    万次阅读 多人点赞 2018-07-05 19:35:37
    通过手工或自动化的手段来运行或测定某个软件产品系统的过程,目的在于检测软件产品是否满足规定的需求,或者弄清楚预期结果与实际结果之间的差别。 软件测试的目的 是为了发现程序中存在的错误而执行程序; 是...
  • 问答 | 我适合做软件开发吗?

    千次阅读 2016-01-20 07:10:53
    一套实操方法,帮助确认自己是否适合走上软件开发的道路……
  • 软件体系结构

    万次阅读 2018-12-18 20:37:41
    原文作者:Petter Liu ... 架构风格是一组原则。你可以把它看成是一组为系统家族提供抽象框架的粗粒度模式。... 常见的软件体系结构风格涉及: 设计词汇表是什么?或者构件和连接器的类型是什么? 可容许...
  • 所以,每天从天府三街地铁站下站的特别多,这里面大概率聚集了天府软件园中最有钱的一批员工: 需要说明一下的是这篇文章不聊技术,这就是一整期的荒腔走板。文章里面我会提到成都蚂蚁金服,但是更多的,我想聊的...
  • 软件测试规范

    千次阅读 2016-10-25 14:55:24
    1. 软件测试基础 1.1. 什么是软件测试 软件测试是为了发现错误而执行程序的过程。或者说,软件测试是根据软件开发各阶段的规格说明和程序的内部结构而精心设计一批测试用例(即输入数据及其预期的输出结果...
  • 软件工程及应用》课后答案一级目录二级目录三级目录 一级目录 二级目录 三级目录
  • 用户使用软件可以实现位置模拟给”不同地域“的附近打招呼,发送任何想要传达的信息、自动给通讯录的每个好友发送定制消息;自动通过批量电话号码、QQ号码添加为微信好友;自动将每个群里的成员添加为微信好友...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 21,090
精华内容 8,436
关键字:

带附近的人的软件

友情链接: ModuleCheck.zip