随想录(做自己代码的測试project师)
【 声明:版权全部。欢迎转载,请勿用于商业用途。
联系信箱:feixiaoxing @163.com】
非常多project师都有一个不好的习惯,由于大多数itproject师都喜欢写代码。可是不喜欢測试代码。在他们眼里,把功能做出来是一件非常牛逼的事情,而软件測试则是一件低级、价值量不高的事情。
其实是否真的如此呢。恐怕未必。姑且不谈你写的这份代码是否真的会给用户或者消费者带来价值,可是一份极其不稳定甚至时常崩溃的软件,肯定不会带来什么好感。这也就意味着公司投资你作了这个劳动非常可能是个无用功。
这个问题其实不光小公司有。大公司也是如此。
(1)非常多朋友没有代码质量意识。一份软件的价值,一方面体如今能否够满足客户的需求。还有一方面也体如今它能否够稳定长久地执行。
代码执行的时间越长、越稳定和健壮,这样才干最大程度保留代码的价值。
(2)測试project师远没有开发project师了解代码的健康程度。非常多公司的測试project师仅仅是依照黑盒的方法对软件进行測试,这些測试的内容包含了功能、易用性、边界測试、兼容性、性能等等,可是这些測试都没有开发人员自己写的单元測试重要。大多数单元測试能够在第一时间发现问题、解决这个问题,而不是等到測试的时候来进行解决。
假设开发人员认为代码哪写的好像有问题。那么十有八九有问题。仅仅是个时间问题而已。
(3)好代码是不停改动和重构得来的。之前看了非常多的代码,这包含vxworks、gcc、linux、mysql等等,它们中的非常多代码从上个世纪八九十年代就已经存在了,到今天还在改动。有的是又一次调整流程。有的是为了适配新的cpu。还有的是为了兼容新的设备特性。
所以说。一份健康的代码须要重复的測试、重复的重构、重复的执行。没有什么是一层不变的。在server上执行的非常多系统代码。不知道经过了多少次推倒重来的改动,经过了多少次作者的代码检查,预计仅仅有真正经历的人才知道。
(4)现有的工具能够极大地帮助我们进行代码的各种測试,我有一篇文章谈到了这些工具。比方说,CUnit能够帮助我们进行单元測试;splint能够进行代码的静态检查;valgrind能够进行代码的泄漏測试;gcov能够进行覆盖率的測试;gprof能够进行代码性能的统计測试;gdb的watch功能能够直接帮助我们检查数据是否越界;core dump能够帮助我们保存程序的相关内存信息。为我们逆向调试提供了方便。当然,上面说的都是linux上面的工具。大家能够依据自己的环境,看看有没有什么合适的工具帮到自己提高一下代码的质量。
(5)有些错误是随机的,可是有一定的概率性。这就要求我们对相关数据的输入、输出进行记录和处理。
实现这个功能不难,用fprintf和fscanf就能够做到,以下是我自己写的一份简单代码,算是抛砖引玉之用。
#include <stdio.h>
#define NAME "log.txt"
int main(int argc, char* argv[]) {
FILE* file;
char buf[32];
int data;
unsigned int udata;
char str;
unsigned int hex;
// generate log txt file
file = fopen(NAME, "rt");
if(NULL == file){
file = fopen(NAME, "w");
fprintf(file, "%d\n", 10);
fprintf(file, "%u\n", -1);
fprintf(file, "%s %c 0x%x\n", "china", 'c', 0x12345678);
fclose(file);
return 1;
}
// read file
fseek(file, 0, SEEK_SET);
fscanf(file, "%d\n", &data);
fscanf(file, "%u\n", &udata);
fscanf(file, "%s %c 0x%x\n", buf, &str, &hex);
fclose(file);
// output content to the screen
printf("%d\n", data);
printf("%u\n", udata);
printf("%s %c 0x%x\n", buf, str, hex);
return 1;
}
(6)对于代码中的日志、打印、告警要进行分开处理。有的时候,代码执行非常长时间才会错误发生,那么除了core dump和代码入库记录之外。你能看的就是打印日志了。所以写一份自己的print函数也是非常有必要的。由于换成自己的print函数后,这些log你能够显示出来,也能够保存到文件中面,同一时候也能够是一个空函数,真是太方便了。
#include <stdarg.h> void printk(char* fmt)
{
va_list args;
char buffer[256]; va_start(args, fmt);
vsnprintf(buffer, 256, fmt, args);
va_end(args); printf("%s", buffer);
}
上面的观点是我近期一段时间的感受,欢迎大家来交流。
随想录(做自己代码的測试project师)的更多相关文章
- 教你怎样做个有“钱”途的測试project师
百度百科说測试project师这一职业的待遇,薪酬上升空间很大.但測试project师也有自己的烦恼,比方在程序出错后,将问题反馈给程序猿,然后程序猿给的答复是:"oh,howisthatp ...
- 腾讯測试project师笔试面试记录
从3月29日參加腾讯笔试開始,開始了为期1周的腾讯之旅,尽管最后还是跪在了二面上,可是感觉收获非常多,至少明确了自己与向往的BAT公司的差距,明确了自己还是路漫漫其修远兮. 腾讯非常注 ...
- 用python做自己主动化測试--绘制系统性能趋势图和科学计算
在性能測试中.我们常常须要画出CPU memory 或者IO的趋势图. 预计大学里.大多数人都学习过matlib, 领略了matlib绘图的强大. python提供了强大的绘图模块matplotlib ...
- 用python做自己主动化測试--对server端的自己主动化測试(3)-很多其它http client实例
上一篇中仅仅是实现了一个非常easy的http client功能,request还提供了keep alive, SSL, 多文件上传,cookie 管理功能,http requests头管理等丰富的功 ...
- 如何做更好的Android驱动project师
随着智能手机的飞跃发展,特别是Android智能机的爆炸性发展,Android驱动project师是越来越受欢迎的一个职位,并且是一个非常值得人期待的职位,由于可能你參与研发的一款手机就能改变 ...
- 移动測试技术保护源码!解码全球首款移动端白盒測试工具ThreadingTest (文章转自己主动点科技)
作者 智晓锋 - 2014/07/14 自从斯诺登曝光美监听丑闻事件之后,我国政府就将信息安全问题上升到了国家安全的高度.基于此.国内的一家创业公司推出了智能型Android真机白盒測试以及开发辅助类 ...
- Android单元測试之JUnit
随着近期几年測试方面的工作慢慢火热起来.常常看见有招聘測试project师的招聘信息.在Java中有单元測试这么一个JUnit 方式,Android眼下主要编写的语言是Java,所以在Android开 ...
- 移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践
这篇是计算机类的优质预售推荐>>>><移动App測试实战:顶级互联网企业软件測试和质量提升最佳实践> 国内顶级互联网公司測试实战经验总结.阿里.腾讯.京东.携程.百 ...
- 系统吞吐量、TPS(QPS)、用户并发量、性能測试概念和公式
PS:以下是性能測试的主要概念和计算公式,记录下: 一.系统吞度量要素: 一个系统的吞度量(承压能力)与request对CPU的消耗.外部接口.IO等等紧密关联.单个reqeust 对CPU消耗越高, ...
随机推荐
- C++ bitset类的使用与简介 [转载]
有些程序要处理二进制位的有序集,每个位可能包含的是0(关)或1(开)的值.位是用来保存一组项或条件的yes/no信息(有时也称标志)的简洁方法.标准库提供了bitset类使得处理位集合更容易一些.要使 ...
- windows 2012(64位) IIS配置asp程序 500 - 内部服务器错误。您查找的资源存在问题,因而无法显示。
在网上找了很久,包括常规的设置父路径之类的,一直都不可以,搞了一晚上毫无成就感,第二天早上无意中看到一篇文章,说到点子上了,非常感谢.源地址已经找不到了,我把大概的问题截图说明一下. 方法如下:1.打 ...
- python cProfile分析程序性能
转自:http://xianglong.me/article/analysis-python-application-performance-using-cProfile/?utm_source=tu ...
- 第三步:搭建JAVA项目
创建一个JAVA项目,如图: 然后给项目起一个名字,直接点击完成. 下载lucene包解压后放到JDK安装后的lib文件夹里,如图: 首先要导入lucene包,对准项目名右击>构建路径>配 ...
- Web前端培训学习心得
web前端工程师技术日趋成熟,越来越多的行业巨头正不断向web前端工程师示好,在未来几年,web前端将会以更多的形式渗透到我们生活中的方方面面,因此越来越多的从业者开始关注web前端开发行业,今天小编 ...
- J.U.C并发框架源码阅读(三)ReentrantLock
基于版本jdk1.7.0_80 java.util.concurrent.locks.ReentrantLock 代码如下 /* * ORACLE PROPRIETARY/CONFIDENTIAL. ...
- Codeforces Gym100952 D. Time to go back-杨辉三角处理组合数 (2015 HIAST Collegiate Programming Contest)
D. Time to go back time limit per test 1 second memory limit per test 256 megabytes input standard ...
- api访问参数
一.Get请求 1.一个参数时 2. 二.Post请求
- (8)java基础知识-字符编码
这块比较乱待整理... http://www.regexlab.com/zh/encoding.htm 字符编码 将各种文字.图形.标点.数字整合在一个集合叫做字符集. 把这些字符集按照不用规则进行编 ...
- python正则表达式-re模块
目录: 一.正则函数 二.re模块调用 三.贪婪模式 四.分组 五.正则表达式修饰符 六.正则表达式模式 七.常见的正则表达式 导读: 想要使用python的正则表达式功能就需要调用re模块,re模块 ...