51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1180|回复: 2
打印 上一主题 下一主题

[讨论] 软件测试浅谈

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2022-7-26 12:33:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1 软件测试的必要性和重要性
勒索病毒:据火绒监测,勒索病毒主要通过三种途径传播:漏洞、邮件和广告推广。其中漏洞发起的攻击占攻击总数的87.7%:由于win7、xp等老旧系统存在大量无法及时修复的漏洞,而政府、企业、学校、医院等局域网机构用户使用较多的恰恰是win7、xp等老旧系统,因此也成为病毒攻击的重灾区,病毒可以通过漏洞在局域网中无限传播。
2020年勒索病毒造成的直接经济损失高达400亿美元—亚信安全《2020年无文件攻击技术的新型勒索病毒专题分析报告》
运行商网络断网事件:
2022-07-08日 加拿大最大电信运营商之一罗杰斯电信,这家拥有约 1000 万无线用户和 225 万零售互联网用户的运营商在遭遇了持续近 19 小时的断网故障,人们因此无法拨打报警电话、无法在超市刷卡结账、无法从自动取款机取钱……2022-07-24日 罗杰斯电信表示,将在未来三年内投资100亿加元(522.52 亿人民币)用于人工智能 (AI) 以及更多的针对网络的测试和监督
2022-07-02日 日本第二大移动运行商KDDI突发通信故障,全日本3915万(几乎其全部的移动用户,相当于日本1/3人口)手机用户超40小时无法正常通信,日本总务省称这是通信事业法层面的重大事故,本次通信事故造成的损失加在一起至少200亿日元(约9.9亿人民币)

医疗事故:
Therac-25是加拿大Atomic Energy of Canada Limited所生产的一种辐射治疗的机器。由于其软件设计存在缺陷,致命地超过剂量设定导致在1985~1987年之间,六件已知的医疗事故中,患者死亡或严重辐射灼伤
事后的调查发现整个软件系统没有经过充分的测试,而最初所做的Therac-25分析报告中有关系统安全分析只考虑了系统硬件,没有把计算机故障(包括软件)所造成的隐患考虑在内。
以上真实发生的质量事故,都充分的表明了软件测试的必要性以及重要性

2 结合敏捷谈测试
1、软件测试的目的是为了更块、更好的、更早的将问题缺陷找出来,并及时修正,最终向客户提供高质量(功能、可靠性、用户友好性、性能、兼容性等)的软件产品,尤其在当今VUCA时代-动荡性、不确定性、复杂性、模糊性,尽早、持续交付有价值的软件来满足客户的需求才能为客户今早创造价值,抢占市场先机
2、敏捷宣言12大原则当中:
     第一条-我们的最高目标是,通过尽早持续交付有价值的软件来满足客户的需求
     第三条-要经常交付可用的软件,周期从几周到几个月不等,越短越好
3、如果团队不重视质量,那么久无法快速发布任何有价值的软件。在敏捷XP-极限编程当中有很多优秀的实践
      1)持续集成:频繁的进行总体测试,确保整个软件按照预期正确的工作
      2)在不同层面测试:端到端的系统测试、模块间的单元测试、SDV测试、SIT、Beta测试等
      3)TDD/BDD:产品开发之前编写自动化测试,可以提高开发、设计人员检错的效率,尽早收到反馈并作出改进
问题:如何在有限的时间内设计出有价值的、性价比高的测试用例用以找出软件系统的绝大部分缺陷,同时基于用例编写出有价值的脚本?就必须依赖有效的软件测试方法

3 常用的软件测试设计方法
软件测试有名的门派有分析门派、标准门派、质量门派、敏捷门派、上下文驱动门派-《软件测试:经验与教训》,还有其他的知名度较低的门派。各大门派观念不同,至今没有单独门派能一江湖。
同样的软件测试方法也是多种多样,在实际测试过程中没有任何一种方法能够做到独立有效的完全覆盖,往往是多种方法结合在一起
参考《软件测试方法与技术》当中的描述,从哲学观点来看方法有两种
1 黑盒测试
   不了解内部结构以及运行机制,把被测对象看做一个整体,通过通过预先设想的输入,观察输出结果是否正确,观察功能是否满足设计要求、规范要求
   常见的黑盒测试方法有:
   等价类划分、边界值划分—针对单个测试因子;
   判定表、因果图、Pair-wise组合测试—针对多个测试因子的组合,常见的性价比较高的是Pair-wise成对组合测试

2 白盒测试
   与黑盒测试相反,充分的了解内部结构以及运行机制,通过剖析程序内结构,检验每条基本的通路是否都能够正常运行、是否满足设计规格要求
   常见的白盒测试方法有:
   逻辑覆盖-判定覆盖、语句覆盖、条件覆盖、判定条件覆盖、条件组合覆盖、基本路径覆盖
2.1 语句覆盖
语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语句至少被执行一次(这里说的是“可执行语句”,不包括像C++的头文件声明,代码注释,空行等),这是最常用也是最常见的一种覆盖方式。
语句覆盖只考虑覆盖代码中的执行语句,却不考虑各种分支的组合等等,因此被认为“最弱的覆盖”。

2.2 判定覆盖
判定覆盖法的基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。

2.3 条件覆盖
条件覆盖的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次

2.4 判定条件覆盖
判定-条件覆盖是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可能结果至少执行一次

2.5 条件组合覆盖

条件组合覆盖的基本思想是设计足够的测试用例,使得判断中每个条件的所有可能至少出现一次,并且每个判断本身的判定结果也至少出现一次。
它与条件覆盖的差别是它不是简单地要求每个条件都出现“真”与“假”两种结果,而是要求让这些结果的所有可能组合都至少出现一次


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-24 23:56 , Processed in 0.067938 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表