Ⅰ 编写好一个程序后怎样测试谢谢
为了使计算机程序得以运行,计算机需要加载代码,同时也要加载数据,然后由处理器执行指令。整个过程可以总结为编译、链接、装载、执行。
1、编译
编译过程又可以被分为两个阶段:编译、汇编。
编译是指编译器读取字符流的源程序,对其进行词法与语法的分析,将高级语言指令转换为功能等效的汇编代码。
汇编器是将汇编代码转变成机器可以执行的命令,每一个汇编语句几乎都对应一条机器指令。汇编相对于编译过程比较简单,根据汇编指令和机器指令的对照表一一翻译即可。
2、链接
链接的主要内容是将各个模块之间相互引用的部分处理好,使得竖岁各个模块之间能够正确地衔接。链接又分为静态链接和动态链接:
静态链接是指在编译阶段直接把静态库加入到可执行文件弯纤掘中去,这样可执行文件会比较大;
动态链接则是指链接阶段仅仅只加入一些描述信息,而程序执行时再从系统中把相应动态库加载到内存中去。
3、装载
程序在经过链接后,得到了可执行文件,下一步就需要将可执行程序加载到内存中。
由于现代操作系统均采用分页的方式来管理内存,所以操作系统只需要读取可执行文件的文件头,之后建立起可执行文件到虚拟内存的映射关系,而不需要真正的将程序载入内存。
4、运行
加载器将可执行目埋核标文件中的代码和数据从磁盘复制到内存中,然后通过跳转到程序的第一条指令或入口点来运行程序。
在程序的运行过程中,CPU发现有些内存页在物理内存中并不存在并因此触发缺页异常,此时CPU将控制权限转交给操作系统的异常处理函数,操作系统负责将此内存页的数据从磁盘上读取到物理内存中。
Ⅱ 怎么测试Microsoft Visual Studio写的C程序
你可以按照以下步骤在vc++6.0中进行编译调试
1、打开vc++6.0编译器,选择“File”->“New”菜单,新建一个Project。
2、在“New”对话框中选择“Projects”,并在其中选择“Win32ConsoleApplication”(一个Win32控制台程序),然后在“Projectname”中输入你要给控制台程序取的名字,在“Location”中选择控制台程序要保存的位置,默认文章是vc++6.0安装目录历腊下的“MyProjects”文件夹中。最后选“OK”按钮进入下一步。
3、单击“OK”后,出现一个选择对话框,选择你要创建的控制台程序类型,选择“Asimpleapplication”磨羡即可,然后单击“Finish”按钮。这样,一个简单控制台程序就建立好了。
4、如下图所示:单击右边“WOrkSpace”中的Globals,会看见main()函数,双击main()函数右边就可以出现程序编辑区,然后在里面编辑你自己的代码。编辑完代码后,选择“Build”—>“BulidTestC.exe”进行编译连接,生成可执行程序。然后选择瞎烂拍“ExecuteTestC.exe”执行就可以看到结果。或者按照图中标示的进行操作也可以的。
如果还不懂的话,建议你看一看visualc++编程的书籍,祝你好运!
Ⅲ 用VC如何测试程序执行时间,C语言
系统计时
时间要颤棚求比较精确时:DWORD t1 = GetTickCount();
DWORD t2 = GetTickCount();
运行时间:T= t2 - t1;
时间较长时:
Word Hour,Min,Sec,MSec;
StartDateTime = Now(); //开始败弊计时
double Temp = Now() - StartDateTime;
DecodeTime((Temp - int(Temp)),Hour,Min,Sec,MSec);
LblRunTime->Caption = "系统已经察洞族运行: "+String(int(Temp)*24+Hour)+"小时"+String(Min)+"分 "+String(Sec)+"秒";
Ⅳ 在C语言中,怎么测试运行程序所用的时间
#include <stdio.h>
#include <燃戚举time.h>
int main( )
{
long start,end;
start = clock();
//皮碧测仔败试的程序段
end = clock();
printf("%ld\n",start-end);//单位:毫秒
return 0;
}
Ⅳ 怎样检测一个程序是否正在运行
比如进程名叫aaa,可以执行如下命令:ps -ef|grep aaa,如果有内容说明活着
如果你知道进程占用的端口号,比如7777,可以执行:netstat -anp | grep 7777,检查有没有程序占用该端口,若有的话,看pid或pname是否是你想要找的
如果想要找的是某个服务,比如nfs、smb等,可以用service nfs status查看
Ⅵ 程序测试的测试方法
白盒测试,又称结构测试。他的前提是可以把程序看成在一个透明的白盒子里,测试者完全知道程序的结构和处理算法。这种方法按照程序内部逻辑设计测试用例,检测程序中的主要执行通路是否能按照预定要求正确工作。
白盒测试根据软件的内部逻辑设计设施用例,常用的技术是逻辑覆盖,即考察用测试数据运行被测程序是对程序逻辑的覆盖程度。主要的覆盖标准有:语链游句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、组合条件覆盖和路径覆盖。 单元测试(unit testing),也称模块测试,通常可放在编程阶段,由程序员对自己编写的模块自行测试,检查模块是否实现了详细设计说明书中规定的功能和算法。单元测试主要发现编程和详细设计中产生的错误,棚橡销单元测试计划应该在详细设计阶段制定。
单元测试期间着重从以下几个方面对模块进行测试:模块接口、如虚局部数据结构、重要的执行通路、出错处理通路及边界条件等。 确认测试(validation testing),主要依据软件需求说明书检查软件的功能、性能及其他特征是否与用户的需求一致。确认测试计划应该在需求分析阶段制定。
Ⅶ 急寻软件测试步骤与流程,懂行的给正确答案,加分
一、新产品或工程管理流程
1、需求调研
在软件需求分析斗氏戚阶段,测试人员从软件生命周期的需求阶段就开始介入在需求阶段的测试人员参与软件需求空陵调研,以测试角度分析需求的可测性,可构思将来对其测试的方法、原则等;同时全面了解系统需求,从客户角度考虑软件测试需要达到的验证状态,即何些功能点需重点测试、何些无需,以便将来制定测试计划。
2、制定测试计划
进行每一种测试之前,测试负责人要根据“产品定义书”及“总体设计说明”和“详细设计文档”制定“测试计划”,制定总体的测试计划,详细阐明本次测试目的、对象、方法、范围、过程、环境要求、接受标准以及测试人员和测试时间等内容,“测试计划”经过审查通过,才能实施。
3、需求Review
开发在完成软件需求分析之后,会提交需求分析文档,测试人员根据需求调研所了解的需求以及产品需求说明文档等资料,对需求分析文档进行Review,检查文档是否满足了需求,是否与需求一致等等。
4、设计Review
在软件分析设计阶段,测试人员参与设计讨论,了解系统的实现方式和原理,并对概要设计和详细设计提出自己的见解。设计结束之后,开发提交核好概要设计文档和详细设计文档,测试人员对设计进行Review,检查设计规划和实现方案是否合理,如果不合理,存在的问题是什么、如何改进等等。
5、测试设计
在设计测试方案时,首先分解测试内容,对于一个复杂系统,通常可以分解成几个互相独立的子系统,正确地划分这些子系统及其逻辑组成部分和相互间的关系,可以降低测试的复杂性,减少重复和遗漏,也便于设计和开发测试用例,有效的组织测试,将系统分析人员的开发分析文档加工成以测试为角度的功能点分析文档,重要的是描述对系统分解后每个功能点逐一的校验描述,包括何种方法测试、何种数据测试、期望测试结果等。然后以功能点分析文档作为依据进行测试用例的设计,设计测试用例是关系到测试效果以至软件质量的关键性一步,也是一项非常细致的工作,根据对具体的北侧系统的分析和测试要求,逐步细化测试的范围和内容,设计具体的测试过程和数据,同时将结果写成可以按步执行的测试文档。每个测试用例必须包括以下几个部分:
(1)标题和编号
(2)测试的目标和目的
(3)输入和使用的数据和操作过程
(4)期望的输出结果
(5)其他特殊的环境要求、次序要求、时间要求等
6、开发测试工具和准备测试数据
在软件测试中,为了提高测试工作的效益和质量,只要条件许可,应尽可能采用计算机自动或半自动测试的方法,利用软件工具本身的优势来提高工作效率。
7、测试执行
当所有必需的测试准备工作都已完成,并且产品已经开发完毕并提交测试,则可以按照预定的测试计划和测试方案逐项进行测试。在测试过程中发现的任何与预期目标不符的现象和问题都必须详细记录下来,填写测试记录。为了能准确的找出问题产生的原因,及时的解决问题,保证测试工作的顺利进行,一般来说所发现的问题必须是能够重视的。
8、回归测试
在测试中发现的任何问题和错误都必须有一个明确的解决方法。一般来说,经过修改的软件可能仍然包含着错误,甚至引入了新的错误,因此,对于修改以后的程序和文档,按照修改的方法和影响的范围,必须重新进行有关的测试。另一方面,对于版本更新后的软件也必须进行同样的测试过程。
9、测试分析报告
测试结束后要及时地进行总结,对测试结果进行分析,由测试负责人提交“测试分析报告”。
Ⅷ 软件测试的方法有哪些
测试的有2种方法
答:黑盒测试和白盒测试
黑盒:这种方法是把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能说明。
黑盒测试又叫做功能测试或数据驱动测试。
白盒:此方法把测试对象看做一个透明的盒子,它允许测试人员利用程序内部的逻辑结构及皮历有关信息,设计或选择测试用例,对程序所有逻辑路径进行测试。
通过在漏戚不同点检查程序的状态,确定实际的状态是否与预期的状态一致。因此白盒测试又称为结构测试或逻辑驱动测试。
软件测试按过程分为三个步骤
答:单元测试:单元测试又称模块测试,是针对软件设计的最小单位—程序模块,进行正确性检验的测试工作。其目的在于发现各模块内部可能存在的各种差错。
单元测试需要从程序的内部结构出发设计测试用例。多个模块可以平行地独立进行单元测试。
集成测试:在运行(可能是不完整)的应用中保证软件单元被结合后能正常操作的测试执行的阶段
系统测试:当应用作为整体运行时的测试执行阶段
软件测试的步骤是什么?
1)测试过程按4个步骤进行,即单元测试(UnitTesting)、集成测试(IntegratedTesting)、确认测试(ValidationTesting)和系统测试(SystemTesting)及发版测试。
2)开始是单元测试,集中对用源代码实现的每一个程序单元进行测试,检查各个程序模块是否正确地实现了规定的功能。
3)集成测试把已测试过的模块组装起来,主要对与设计相关的软件体系结构的构造进行测试。
4)确认测试则是要检查已实现的软件是否满足了需求规格说明中确定了的各种需求,以及软件配置是否完全、正确。
应该考虑进行如何测试的测试方法
黑盒测试(Blackboxtesting)——不考虑内部设计和代码,根据需求和功能进行测试。
白盒测试(Whiteboxtesting)——根据应用软件的代码的内部逻辑,按照代码的语句、分支、路径和条件进行测试。
功能测试(functionaltesting)——对一个应用软件的功能模块进行黑盒测试。这种测试应当由测试燃搜搜人员进行。但这并不意味着程序员在推出软件之前不进行代码检查。(这一原则适用于所有的测试阶段。)
系统测试——针对全部需求说明进行黑盒测试,包括系统中所有的部件。
回归测试(regressiontesting)——每当软件经过了整理、修改、或者其环境发生变化,都重复进行测试。很难说需要进行多少次回归测试,特别是是到了开发周期的最后阶段。进行此种测试,特别适于使用自动测试工具。
负荷试验(loadtesting)——在大负荷条件下对应用软件进行测试。例如测试一个网站在不同负荷情况下的状况,以确定在什么情况下系统响应速度下降或是出现故障。
压力测试(stresstesting)——经常可以与“负荷测试”或“性能测试”相互代替。这种测试是用来检查系统在下列条件下的情况:在非正常的巨大负荷下、某些动作和输入大量重复、输入大数、对数据库进行非常复杂的查询,等等。
性能测试(performancetesting)——经常可以与“压力测试”或“负荷测试”相互代替。理想的“性能测试”(也包括其他任何类型的测试)都应在质量保障和测试计划的文档终予以规定。
可用性测试(usabilitytesting)——是专为“对用户友好”的特性进行测试。这是一种主观的感觉,取决于最终用户或顾客。可以进行用户会见、检查、对用户会议录像、或者使用其他技术。程序员和测试人员通常不参加可用性测试。
安装/卸载测试(install/uninstalltesting)——对安装/卸载进行测试(包括全部、部分、升级操作)。
安全测试(securitytesting)——测试系统在应付非授权的内部/外部访问、故意的损坏时的防护情况。这需要精密复杂的测试技术。
兼容性测试(compatabilitytesting)——测试在特殊的硬件/软件/操作系统/网络环境下的软件表现。
α测试(alphatesting)——在开发一个应用软件即将完成时所进行的测试。此时还允许有较小的设计修改。通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。
β测试(betatesting)——当开发和测试已基本完成,需要在正式发行之前最后寻找毛病而进行的测试。通常由最终用户或其他人进行这种测试,而不是由程序员和测试人员来进行。
Ⅸ (VB)如何检查自身程序已经运行
Private Sub Form_Load()
If App.PrevInstance Then
End
End If
End Sub
用DDE实现窗体防止运行多个实例并传递命令
上网的朋友一定都用过网络蚂蚁(Net Ants)的吧?不知你在使用过程中有没有注意过,那就是如果你想调动两个“蚂蚁”为您效力是不可能的——它总会把新运行的关闭。这点在VB中很容易实现:
Private Sub Form_Load()
If App.PrevInstance Then
MsgBox "你已经运行这个应用程序了"
End ' 退出新运行的程序
End If
End Sub
这样如果你运行这个程序后在运行它,它会弹出一个消息框并拒绝再次运行。这非常容易。 而“蚂蚁”程序的妙处就在于:在重复运行“蚂蚁”时它不仅拒绝运行,而且能把已经运行的“蚂蚁”激活,这样用上面的程序就无能为力了。但事实上实现拒绝运行并激活已运行的
程序有多种方法:
1、用FindWindow函数得到已经运行窗体的句柄(HWND),然后用SetActiveWindow等API函数将其激活。其缺点也很明显,那就是没法传递参数。
2、用FindWindow函数得到已运行窗体的句柄后用SendMessage的方法给窗体传送一个自定义消息(附带参数),然后在窗体中拦截并进行处理,但这样做要修改窗体的标准消息处理程序,用在VC,BC或DELPHI编写的程序中还行,但在VB中工作量太大,并且容易发生“一般保护行错误”使VB崩溃,不太可取(当然,如果你有足够的信心和不怕崩溃的精神,也可以试一下 ^_^ )。
3、使用DDE技术。
所谓DDE技术,就是动态数据交换技术。也许你很奇怪,这与本文所讨论的内容有什么相干的?
且听我慢慢讲来。
为了实现拒绝运行并把已经运行的程序激活纤册并实现各种功能,我们可以先用本文开头提到的方法,检测一下程序有没有被运行过,如果没有,就正常运行,如果已经被运行过,就打通与它的DDE通道,传给它一个(或一些)数据,然后由已经运行的程序对数据进行处理,再去实现各种“意想不到”的功能,这时也许就有人对这你的程序喊:“酷、酷……” ^_^
好了,耳听为虚,眼见为实,下面让我们动点真格的。
打开VB,新建一个工程,选择菜单中的“工程->工程1 属性”,把工程名称改为“P1”(我爱偷链蠢懒,能短则短 ^_^ ),把已有的一个窗体的“LinkTopic”属性改为“FormDDE”,把“LinkMode”属性改为“1 - Source”,添加一个PictureBox控件作为DDE执行控件,命名为picDDE。然后添加一个TextBox控件,命名为“txtInfo”,并把“MultiLine”属性设置为“True”,以便显示多行文本,作为消息显示控件。
最后在窗体代码区输入以下代码:
Const COMMANDLINE = "CommandLine=" ' 还是为了省事,定义一个常量
Private Sub Form_LinkExecute(CmdStr As String, Cancel As Integer)
Static lngCount As Long
Dim Info As String
Info = txtInfo.Text ' 保留原有信息
Select Case CmdStr ' CmdStr 是DDE程序传送过来的参数
Case "Max"
Me.WindowState = 2
Info = Info + vbNewLine + "窗体已被最大化"
Case "ShowTime"
Info = Info + vbNewLine + "最后一次运行这个程序的时间是:" + Str(Now)
Case "Count"
lngCount = lngCount + 1
Info = Info + vbNewLine + "你已经第" + Str(lngCount) + "次重复调用这个程序。"毁唤宏 _
+ vbNewLine + "但怕您不多给工资,所以只运行了一个 ^_^"
End Select
If Left(CmdStr, Len(COMMANDLINE)) = COMMANDLINE Then
Info = Info + vbNewLine + "新程序曾以命令行形式运行" + vbNewLine + "命令行为:" _
+ vbNewLine + Right(CmdStr, Len(CmdStr) - Len(COMMANDLINE))
End If
txtInfo.Text = Info ' 把信息显示出来
Cancel = False
End Sub
Private Sub LinkAndSendMessage(ByVal Msg As String)
Dim t As Long
picDDE.LinkMode = 0 '--
picDDE.LinkTopic = "P1|FormDDE" ' |______连接DDE程序并发送数据/参数
picDDE.LinkMode = 2 ' | “|”为管道符,是“退格键”旁边的竖线,
picDDE.LinkExecute Msg '-- 不是字母或数字!
t = picDDE.LinkTimeout '--
picDDE.LinkTimeout = 1 ' |______终止DDE通道。当然,也可以用别的方法
picDDE.LinkMode = 0 ' | 这里用的是超时强制终止的方法
picDDE.LinkTimeout = t '--
End Sub
Private Sub Form_Load()
If App.PrevInstance Then ' 程序是否已经运行
Me.LinkTopic = "" ' 这两行用于清除新运行的程序的DDE服务器属性,
Me.LinkMode = 0 ' 否则在连接DDE程序时会出乱子的
LinkAndSendMessage "Max" '--
LinkAndSendMessage "Count" ' |-----连接DDE接受程序并传送数据/参数
LinkAndSendMessage "ShowTime" '--
If Command <> "" Then ' 如果有命令行参数,就传递过去
LinkAndSendMessage COMMANDLINE + Command
End If
End ' 结束新程序的运行
End If
End Sub
测试一下:
把工程“P1”编译成EXE文件(设名称为 P1.EXE )
1、打开“我的电脑”,找到 P1.EXE 并执行。可以看到程序正常运行了。
2、再运行一次,这次新程序没有运行成功,而原来运行的程序却被最大化了,而且文本框中有以下
字符:
窗体已被最大化
你已经第 1次重复调用这个程序。
但怕您不多给工资,所以只运行了一个 ^_^
最后一次运行这个程序的时间是:00-2-6 7:11:01
3、打开 MS-DOS方式 ,用命令行方式再次运行程序,如 “P1 How Are You?”
这时原来运行的程序文本框中又多了几行字:
窗体已被最大化
你已经第 2次重复调用这个程序。
但怕您不多给工资,所以只运行了一个 ^_^
最后一次运行这个程序的时间是:00-2-6 7:14:32
新程序曾以命令行形式运行
命令行为:
How Are You?
OK,运行完全正确,然后你就可以把它应用的你的程序中了。