测试理论

一、软件测试的原则

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

二、测试用例的设计

    合理的测试用例设计策略:通过使用特定的面向黑盒测试的测试用例设计方法,而后使用白盒测试方法对程序的逻辑结构进行检查以补充这些测试用例,借此来设计一个相当严格的测试。

1、白盒测试

    白盒测试,又称为逻辑驱动的测试。使用这种测试方法时,允许我们检查程序的内部结构。这种测试策略对程序的逻辑结构进行走查,从中获取测试数据(遗憾的是,常常忽略了程序的规范)。
    白盒测试的主要方法:语句覆盖判定覆盖条件覆盖判定/条件覆盖多重条件覆盖

2、黑盒测试

    黑盒测试,又称为数据驱动的测试输入/输出驱动的测试。使用这种测试方法时,将程序视为一个黑盒子。测试目标与程序的内部机制和结构完全无关,而是将重点集中放在发现程序不按其规范正确运行的环境条件
在这种方法中,测试数据完全来源于软件规范(换句话说,不需要去了解程序的内部结构)。
    黑盒测试的主要方法:等价类划分边界值分析因果图分析错误猜测

3、错误猜测

   错误猜测主要是一项依赖于直觉的非正规的过程,其基本思想列举出可能犯的错误或错误易发情况的清单,然后根据清单编写测试用例。
   由于无法给出一个规程来,次优的选择是讨论错误猜测的实质,最好的做法是举出实例。比如测试一个排序程序,要探讨的情况如下:
  • 输入列表为空;
  • 输入列表仅包含一个类目;
  • 输入列表所有类目的值都相同;
  • 输入列表已经排过序;
    换言之,上面列举出的这种特殊情况可能在程序设计时被忽略。

4、测试策略

    可以采用白盒测试+黑盒测试的用例设计方法,组合起来为一个整体的策略。这是因为,每一种方法都可以提供一组具体的有用的测试用例,但是都不能单独提供一个完整的测试用例集。
一组合理的策略如下:
  1. 如果规格说明中包含输入条件组合的情况,应首先使用因果图分析方法
  2. 在任何情况下都应使用边界值分析方法。应记住,这是对输入和输出边界进行的分析。边界值分析可以产生一系列补充的测试条件,但是,多数甚至全部条件都可以整合到因果图分析中。
  3. 应为输入和输出确定有效和无效等价类,在必要情况下对上面确认的测试用例进行补充;
  4. 使用错误猜测技术增加更多的测试用例;
  5. 针对上述测试集检查程序的逻辑结构。应使用判定覆盖、条件覆盖、判定/条件覆盖或多重条件覆盖准则。如果覆盖准则未能被前4个步骤中确定的测试用例所满足,并且满足准则也并非不可能,那么增加足够数量的测试用例,以使覆盖准则得到满足;
   上面策略并不能发现所有的错误,但是实践证明这是一个合理的折中方案。同时,它也代表了客观的艰巨工作量,虽然没人说软件测试是一件容易的事。

三、模块(单元)测试


四、更高级别的测试

1、功能测试

2、系统测试

  1. 能力测试
  2. 容量测试
  3. 强度测试
  4. 可用性测试
  5. 安全性测试
  6. 性能测试
  7. 存储测试
  8. 配置测试
  9. 兼容性/转换测试
  10. 安装测试
  11. 可靠性测试
  12. 可恢复行测试
  13. 服务/可维护性测试
  14. 文档测试
  15. 进程测试
  16. 系统测试的执行

3、验收测试

4、安装测试

5、测试的计划与控制

6、测试结束准则

五、可用性(用户体验)测试


六、调试


七、敏捷开发模式下的测试


八、互联网应用测试


九、移动应用测试








全部评论

相关推荐

03-13 00:04
已编辑
吉林大学 Java
约面的挺突然。。狠下心接了1.自我介绍2.讲讲JAVA的反射3.可以继续讲讲AOP,动态代理[ 因为讲反射不小心吟唱到了例如AOP的动态代理,但是这块记忆的非常不熟,结果磕磕绊绊 ]4.项目我看你写了AOP和注解,具体怎么实现滑动窗口限流的[ 梦到什么说什么,吟唱八股发散千万不要散到自己不熟悉的区域 ]5.也讲讲为什么另一个项目选择令牌桶,具体流程6. OK,讲讲 Redis 的数据类型?还有吗?就了解这五种嘛[ 把5个的基础类型从应用对比到历届底层全都吟唱了一遍。一句还有吗直接没力气了,简历就写了理解5种,别的我是真一点没看TT ]7.讲讲Redission分布式锁实现8.这个指数退避怎么实现的9.在这里有考虑去保障幂等性嘛10.这里为什么使用指数退避呢? 什么时候用均匀重传[已经晕过去了说不了解,刚说了后就意识到,估计应该说指数退避能缓解压力防止下游服务器雪崩之类的]11.ok,那讲讲JMM12.讲讲RocketMQ如何保证的不丢消息13.讲讲RocketMQ延迟消息原理14.讲讲项目Redis实现会话记忆这一块15.如果ai调用function calling出现幻觉,有考虑怎么解决吗?[ 不了解,面试官说什么接口幂等化,高危操作人工防护,没在听,感觉人已经飞升了TT ]16.mcp了解嘛?和function calling有什么区别[ 依旧不了解,只能说了个前者规范架构抽象解耦,后者耦合高只能算个工具调用]17.AI生成代码的代码质量怎么保障,那平时如何review的呢18.算法。lc215  数组中最大第k个元素19.打算考研还是本科就业20.反问1️⃣有哪里不足,有哪些需要提高的部分。[主要说知识广度不够,多刷算法,让我别太紧张]2️⃣部门业务会做什么人生第二次面试。感觉大厂面试官的气场压力很大应该凉了不过这次面试非常锻炼心态,多面试,多面试。
冰炸橙汁_不做oj版:redis除了五种基本数据类型,其他的几种还是要掌握一下的,挺常用
点赞 评论 收藏
分享
评论
1
4
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务