《The art of software testing》的一个例子

     这几天一直在看一本书,《The art of software testing》,里面有一个例子挺有感触地,写出来和大家分享一下:

[问题]

     从输入对话框中读取三个整数值,这三个整数值代表了三角形三边的长度。程序显示提示信息,指出该三角形究竟是:不规则三角形/等腰三角形/等边三角形。

[测试]

     下面是一个测试人员要想得问题,你测试一下自己,如果是你设计测试用例,你可以想到多少个测试用例?每想到一个1分。看答案之前最好先想想。

[答案]

1,是否有这样的测试用例,代表了一个有效的不规则三角形?234

2,是否有这样的测试用例,代表了一个有效的等要三角形?223

3,是否有这样的测试用例,代表了一个邮箱的等边三角形?222

4,是否至少有三个这样的测试用例,代表有效的等腰三角形,从而可以测试到两等边的所有三种可能情况?223 232 322

5,是否有这样的测试用例,某边的长度等于0? 012

6,是否有这样的测试用例,某边的长度等于负数?-123

7,是否有这样的测试用例,三个整数都大于0,其中两个整数之和等于第三个?123

8,是否至少有三个第七类的测试用例,列举了一边等于另外两边之和的全部可能情况?123 132 312

9,是否有这样的测试用例,三个整数都大于0,其中两个整数之和小于第三个整数?124

10,是否至少有三个第9类的测试用例,列举了一边大于另外两边之和的全部可能情况?124 142 412

11,是否有这样的测试用例,三边都是0?000

12,是否有这样的测试用例,输入的边为非整数?2.5 3.5 5.5

13,是否有这样的测试用例,输入的边的个数不对?

14,对于每一个测试用例,除了定义输入值之外,是否定义了程序针对该输入值得预期输出值?

[分析]

作者说:高水平的专业程序员平均得分7.8。 这只是一个衡量标准,你可以达到更高的水平。

[小结]

作者在书中还挺出了几个测试的原则,记录以下,以更好的鞭策自己:

  •  测试用例中一个必须部分是对预期输出或结果进行定义
  •  程序员应当避免测试自己编写的程序
  •  编写软件的组织不应当测试自己编写的软件
  •  应当彻底检查每个测试的执行结果
  •  测试用例的编写不仅应当根据有效和预料到的输入情况,而且也应当根据无效和未预料到的输入情况
  •  检查程序是否“未做其应该做的”仅是测试的一半,测试的另一半是检查程序是否“做了其不应该做的”
  •  应避免测试用例后即弃,除非软件本身就是一个一次性的软件
  •  计划测试工作时不应默许假定不会发现错误
  •  程序某部分存在更多错误的可能性,与该部分已发现错误的数量成正比
  •  软件测试是一项极富创造性,极具智力挑战性的工作

[感悟]

什么都有一个刚刚开始,我也是刚刚开始,所以在认真做事的基础上,不要着急,慢慢学习,相信会有所获。

                                                              如果青春一场固执的游戏,而你就是我最在乎的坚持

                                                                                    TT

转载于:https://www.cnblogs.com/xt0810/p/3414588.html

### Android 14 中 ART 虚拟机的工作原理与特性 #### 工作原理 ART(Android Runtime)作为现代 Android 设备的主要运行环境,其工作原理主要围绕 **AOT (Ahead-of-Time)** 和 **JIT (Just-in-Time)** 编译技术展开。自 Android 7.0 开始,ART 引入了 JIT 编译器以优化性能并减少存储空间占用[^3]。 在 Android 14 中,ART 继续改进编译策略,通过动态调整 AOT 和 JIT 的平衡点来提升应用启动速度和运行效率。具体而言: - **AOT 编译**:在安装阶段将字节码转换为本地机器码,从而显著提高首次加载的速度。 - **JIT 编译**:针对频繁执行的代码片段实时生成高效的机器指令,并将其缓存到设备上以便后续调用时重用。 此外,ART 使用分代垃圾回收机制(Generational Garbage Collection),能够更高效地管理内存资源。这种机制将堆分为年轻代(Young Generation)、老年代(Old Generation)等多个区域,分别采取不同的清理算法以降低停顿时间[^2]。 #### 主要特性 以下是 Android 14 中 ART 虚拟机的关键特性和增强功能: 1. **Profile-Guided Optimization (PGO)**: PGO 是一种基于实际使用情况的数据驱动方法,用于指导编译过程中的决策制定。通过对常用路径进行优先级排序,可以进一步缩短冷启动时间和热路径延迟[^4]^。 2. **并发标记清除(Concurrent Mark-Sweep, CMS)GC 改进**: 新版 ART 提升了 CMS 垃圾收集器的表现力,减少了全局暂停的时间窗口长度以及频率。这使得用户体验更加流畅无卡顿现象发生[^5]^。 3. **内存分配优化**: ART 实现了一种新型的对象布局方案——Compact Object Layouts,它允许更好地利用 CPU 缓存行大小来进行连续数据访问操作,进而改善整体吞吐量表现[^6]^。 4. **安全性加强措施**: - 加密 Dex 文件传输流程防止中间人攻击; - 扩展验证链路至第三方库级别确保供应链安全; 5. **调试支持扩展**: 提供更为丰富的诊断工具集帮助开发者快速定位问题所在位置及其根本原因分析能力得到极大程度上的强化[^7]^。 ```python # 示例 Python 伪代码展示如何模拟简单的 GC 行为 class SimpleGarbageCollector: def __init__(self): self.objects = [] def add_object(self, obj): if not any(o is obj for o in self.objects): # 检查是否存在相同引用 self.objects.append(obj) def remove_unreferenced_objects(self): global_vars = globals().values() referenced_objs = set(global_vars).union(*(vars(x).values() for x in global_vars)) unreferenced = [o for o in self.objects if id(o) not in map(id, referenced_objs)] for u in unreferenced: del u gc_instance = SimpleGarbageCollector() def test(): a = {"key": "value"} gc_instance.add_object(a) test() print(len(gc_instance.objects)) # 输出应为 0,因为 'a' 在函数作用域结束后被销毁 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值