导航菜单

软件测试

陆兴东 2026-04-15 41 浏览 软件测试

软件测试:就是一个过程或一系列过程用来确认计算机代码完成了其应该完成的功能,不执行其不应该有的操作。软件应当是可预测且稳定的,不会给用户带来意外的惊喜。

 

软件测试错误观点:一是:软件测试是证明软件不存在错误的过程、证明软件能够正确完成其预定的功能,建立一个“软件作了其应该做的”信息过程。二是开发者与测试者的关系,不存在开发者比测试者更聪明,更出色等观点。如果你把测试团队看成垃圾,你开发的产品一定是垃圾。如果你想发布出色的产品,那么你一定把你的测试团队当成盟友。

软件测试的目的:为发现错误而执行程序的过程,软件测试是一个破坏性的过程,甚至是一个施虐待过程。

成功的测试用例是发现某个新错误的测试用例。不成功的测试用例没有发现错误的测试用例。

一、软件测试模板

1、名称—提供一个在对话中可以被谈及的容易记住的名字;

2、问题—提供一句话来描述这个模式所能解决的问题;

3、分析—描述问题的领域,并回答这个技术如何比简单的随意选择式的方法好;

4、设计—解释这个模式如何被执行;

5、预言—解释期望的结果;

6、用例—列出这个模式如何发现程序缺陷的例子;

7、缺陷和局限—解释在什么环境和情况下,应避免使用这个模式;

8、相关的模式—如果有的情况下,列出相关的模式。

二、常用的测试技术

(一)代码的检查、走查与评审

代码的检查与走查都要求人们组成一个小组来阅读或直观检查特定的程序。无论采用哪种方法,参加者都需要完成一些准备工作。目标是找出错误,但不必找出改正错误的方法。换句话说,是测试,而不是调试。

代码检查是以组为单位阅读代码,它是一系列规程和错误检查技术的集合。主要进行两项活动:一是由程序人员逐条语句讲述程序的逻辑结构。二是对着历来常见的编码错误列表分析程序。常见用于代码检查的错误列表有:

1、数据引用错误:

①是否有引用的变量未赋值或未初始化;

②对所有的通过指针或引用变量的引用是否分配空间。

2、数据声明错误:

①是否所有的变量都进行了明确的声明;

②声明的变量是否进行正确的初始化。

3、接口错误:主要是形参与实参是否匹配,以及顺序是否正确。

4、运算错误,主要有:

①是否存在不一致的数据类型;

②是否有混合模式的运算;

③运算结果是否存在益出;

④除法运算中的除数是否可能为0;

⑤运算结果是否精确。

5、比较错误

①不同数据类型的变量之间的比较运算;

②比较运算符是否正确;

③注意布尔类型的比较。

6、输入/输出错误

①打开文件的语句中各项属性的设置是否正确;

②是否有足够的可用内存空间,来保留程序将读取文件;

③是否所有的文件在使用前都打开,使用后都关闭;

④是否判断文件的结束条件,并正确处理;

⑤对I/O出错情况处理是否正确;

⑥任何打印或显示的文本信息中是否存在拼写或语法错误。

7、控制流程错误

①是否所有的循环最终都终止了?应设计一个非正式的证据或论据来证明每个循环都会终止;

②程序、模块或子程序是否最终都终止;

③是否存在仅差一个的错误。

8、其他检查

①对编译警告信息的检查

②程序或模块是否具有足够的鲁棒性?也就是说,它是否对其输入的合法性进行检查

③程序是否遗漏了某个功能

(二)、黑盒测试、白盒测试与灰盒测试

黑盒测试称为“数据驱动测试”或“输入/输出驱动测试”;判断的标准:穷举输入测试 ,能模拟用户场景。

白盒测试:又称为逻辑驱动测试;判断标准:穷举路径测试。不能模拟用户场景。

灰盒测试:设计测试用例首先是从用户关心的角度出发(即黑盒测试),然后利用白盒测试方法保证测试用例能够有效并全面地覆盖被测对象。

(三)功能测试技术

功能测试技术主要有:等价类划分;边界值分析(错误的数据类型的人工约束、错误分配关系运算符、数据类型的封装、循环结构的问题、差一错误);组合分析等。

(四)结构测试技术

结构测试技术主要有:块测试(用于单元测试的一种普遍方法);判定测试;条件测试及基础路径测试等。

(五)用代码复杂度分析风险

(80/20)法则:即20%的人掌握80%的财富。软件方面:80%的用户使用仅20%的功能,80%的缺陷存在于20%的产品中,80%的运行时间耗费在20%的代码上。基于风险的测试知道运行哪些用例更有机会发现产品的严重缺陷。

(六)基于模型的测试

基于模型的测试主要有设计模型;模型化软件;建立有限状态模型;模型自动化等。

(七)测试自动化 ,其组成部分有:

1、设置:设置是将软件准备好,让实际的测试操作可以开始执行;

2、执行:测试的核心,包括检验软件功能的特定步骤,充分的错误处理,或者一些其他的相关工作;

3、分析:分析是确定测试通过还是失败的过程。这是最重要的步骤,也常常是测试中最复杂的步骤;

4、报告:报告包括分析结果的显示与传播,例如日志文件、数据库、或其他分析过程所生成的文件;

5、清理:清理阶段将软件返回到已知状态,使接下来的测试能继续运行;

6、帮助系统。

(八)非功能测试

非功能测试主要包括:可靠性;可用性;可维护性及可移植性等。

(九)属性测试

属性测试主要包含:可依赖性;可重用性;可测试性;可扩展性及安全性等。

(十)性能测试

1、建立基线;

2、经常运行测试;

3、测量响应效率;

4、充分考虑性能测试;

5、预估瓶颈;

6、使用工具;

7、合理利用资源;

8、用还是不用“干净机器”。

(十一)压力测试

目的是要通过模拟比预期大的工作负载让自在峰值条件下才出现的缺陷曝光。

1、负载测试;

2、平均无故障时间;

3、低资源测试;

4、容量测试;

5、重复性测试。

(十二)用户反馈系统

用户反馈系统,是把使用者发现的错误反馈到研发者的一个系统。简单的说,就是利用使用者帮你测试。例如在使用Windows操作系统是,有时会弹出一对话框,“出现XXX错误,是否发送”,若发送,就把你把这次操作而导致出错的步骤发送到微软的服务器中,收到后微软开发者对其错误进行修改。