随机测试是根据测试说明书执行用例测试的重要补充手段,是保证测试覆盖完整性的有效方式和过程。 随机测试主要是对被测软件的一些重要功能进行复测,也包括测试那些当前的测试用例(TestCase)没有覆盖到的部分。另外,对于软件更新和新增加的功能要重点测试。重点对一些特殊点情况点、特殊的使用环境、并发性、进行检查。尤其对以前测试发现的重大Bug,进行再次测试,可以结合回归测试(Regressivetesting)一起进行。随机测试理论上,每一个被测软件版本都需要执行随机测试,尤其对于最后的将要发布的版本更要重视随机测试。随机测试最好由具有丰富测试经验的熟悉被测软件的测试人员进行测试。对于被测试的软件越熟悉,执行随机测试越容易。只有不断的积累测试经验,包括具体的测试执行和对缺陷跟踪记录的分析,不断总结,才能提高。
二、定义步骤
软件测试即为了发现程序中的错误而执行程序的过程。软件测试是帮助识别开发完成(中间或最终的版本)的计算机软件(整体或部分)的正确度(correctness)、完全度(completeness)和质量(quality)的软件过程是SQA(softwarequalityassurance)的重要子域。汽车电子软件随机测试软件测试主要工作内容是验证(verification)和确认(validation),下面分别给出其概念:
1、验证
验证(verification)是保证软件正确地实现了一些特定功能的一系列活动,即保证软件做了你所期望的事情(Do it right)。确定软件生存周期中的一个给定阶段的产品是否达到前阶段确立的需求的过程程序正确性的形式证明,即采用形式理论证明程序符号设一计规约规定的过程评市、审查、测试、检查、审计等各类活动,或对某些项处理、服务或文件等是否和规定的需求相一致进行判断和提出报告。
2、确认
确认(validation)是一系列的活动和过程,目的是想证实在一个给定的外部环境中软件的逻辑正确性。即保证软件以正确的方式来做了这个事件(Do the right thing)随机测试静态确认,不在计算机上实际执行程序,通过人工或程序分析来证明软件的正确性
动态确认,通过执行程序做分析,测试程序的动态行为,以证实软件是否存在问题。
软件测试的对象不仅仅是程序测试,软件测试应该包括整个软件开发期问各个阶段所产生的文档,如需求规格说明、概要设计文档、详细设计文档,当然软件测试的主要对象还是源程序。
3、目标
测试是为了发现程序中的错误而执行程序的过程
好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案
成功的测试是发现了至今为止尚未发现的错误的测试。
三、原则
1、应把"尽早和不断地进行软件测试"作为软件开发者的座右铭,实践证明单元测试能够尽早发现问题,减少后期测试的错误量。可以采用Junit和Jtest来辅助进行单元测试。
2、测试用例应由测试输入数据、测试执行步骤和与之对应的预期输出结果三部分组成。
3、应当避免由程序员检查自己的程序。(指后期系统测试阶段,不包括单元测试)
4、测试用例的设计要确保能覆盖所有可能路径。在设计测试用例时,应当包括合理的输入条件和不合理的输入条件。不合理的输入条件是指异常的,临界的,可能引起问题的输入条件。
5、充分注意测试中的群集现象。经验表明,测试后程序残存的错误数目与该程序中已发现的错误数目或检错率成正比。应该对错误群集的程序段进行重点测试。
6、严格执行测试计划,排除测试的随意性。测试计划应包括:所测软件的功能,输入和输出,测试内容,各项测试的进度安排,资源要求,测试资料,测试工具,测试用例的选择,测试的控制方法和过程,系统的配置方式,跟踪规则,调试规则,以及回归测试的规定等等以及评价标准。
7、应当对每一个测试结果做全面的检查。
8、妥善保存测试计划,测试用例,出错统计和最终分析报告,为维护提供方便。
四、软件测试的对象
软件测试并不单纯等同于程序测试。软件测试应该贯穿整个软件定义与开发整个期间。因此需求分析、概要设计、详细设计以及程序编码等各阶段所得到的文档,包括需求规格说明、概要设计规格说明、详细设计规格说明以及源程序,都应该是软件测试(评审)的对象。在对需求理解与表达的正确性、设计与表达的正确性、实现的正确性以及运行的正确性的验证中,任何一个环节发生了问题都可能在软件测试中表现出来。
#include <stdio.h>
#include <time.h>
#include <math.h>
#include <stdlib.h>
int isPrime(int n) {
int i
for(i=2i<=sqrt(n)i++) {
if(n%i == 0) {
return 0
}
}
return 1
}
int main() {
int count = 0
int i, n
srand(time(NULL))
for(i=0i<100000i++) {
int a = rand()%100000
int b = rand()%100000
if(isPrime(a) == 1 &&isPrime(b) == 1) {
count ++
}
}
printf("比例是:%.*lf%%\n", 2, (count*1./100000)*100)
return 0
}
运行了几次,比例基本稳定在0.9%左右
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)