一,对于tdd(Test-driven development)有了一定的了解,也体会到了测试的严谨性,下面列出主要的测试
1.一个随机的,不重复的四位数(千位可以为0),要分为4个步骤:
①保证这是一个数字
expect(number).not.toBeNaN();
②保证这是一个四位的
expect(number.length).toEqual(4);
③保证数字之间不重复
var not_repeated = should_not_repeated(number);
expect(not_repeated).toBeTruthy();
④保证这个数字是随机的
var is_random_number = should_one_random_number();
expect(is_random_number).toBeTruthy();
2.根据两个数字输出一个形如"?A?B"的字符串。这两个数字中有几个在相同的位置上有相同的数字则A前的"?"为几,除此之外,其他的相同的数字有几个则B前的"?"为几.例如:两个数字分别为"1236"和"1243"则应输出"2A1B"
对于这个功能如果测试所有的用例则情况太多,有点违背了测试的目的,所以可以选取边界点和几个普通的情况来测试,例如:
it("should back 4A0B when guess 1234 for 1234 ", function () {
var back_string = compare("1234", "1234")
expect(back_string).toEqual("4A0B");
});
3.集成测试:也就是说我们要把前面的功能集合在一起.因为前面已经单独做了测试,所以我在这里没有做过多的测试,例如:
it("should back 4A0B when guess right", function () {
var guess_number = localStorage.getItem("number");
expect(compare(guess_number, localStorage.number)).toEqual("4A0B");
});
4.人机交互页面:这个功能要实现用户输入一个数字,机器做出检查并给出相关的提示信息.对于这个测试要测试所有可能操作产生的反应,情况较多,例如:
it("should output 2A1B if user guess 1236 while answer is 1243 in the first time", function () {
document.getElementById("input_content").value = 1236;
localStorage.setItem("number", 1243);
document.getElementById("confirm").click();
var information = document.getElementById("guess1").textContent;
expect(information).toEqual("第1次尝试:2A1B");
})
二,具体实现方法
①如何生成一个随机的,不重复的四位数
function random_a_number() {
var numbers = [];
while(numbers.length<4){
var number = parseInt(Math.random() * 10).toString();
if(!_.contains(numbers,number)){
numbers.push(number)
}
}
return numbers[0] + numbers[1] + numbers[2] + numbers[3];
}
②怎么测一个随机数,这里一直让我很纠结,最后确定了让其循环10000次,而每个数字最多出现10次
var numbers = [];
for (var i = 0; i < 10000; i++) {
numbers.push(random_a_number())
}
var grouped_numbers = _.groupBy(numbers, function (number) {
return parseInt(number)
})
var counted_numbers = _.map(grouped_numbers, function (value, key) {
return {"number": key, "count": value.length}
})
return !_.find(counted_numbers, function (counted_number) {
return counted_number.count > 11
})
③测试页面时不能只调用点击时应该调用的函数,而是要真正的实现人机交互--点击按钮,这样不仅可以测试函数是否正确还可以测试函数与按钮是否绑定,如:
document.getElementById("confirm").click();
三,遇到的其他问题
①文字乱码:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
②github相关操作:
git reset --hard HEAD~3 //将最近3次的提交回滚
git push -f //f为force
③stringObject.substr(start,length)与stringObject.substring(start,stop)
substr() 方法可在字符串中抽取从 start 下标开始的指定数目的字符。
substring() 方法用于提取字符串中介于两个指定下标之间的字符。
分享到:
相关推荐
python_guess_the_random_number_game
猜数字游戏V1.0_release
猜数游戏 使用Tkinter模块进行数字猜谜游戏
Guess_The_Number_Game
Guess a number game using fsm in VHDL
游戏中首先使用随机对象产生一个1-100之间的整数,当用户单击“Start”按钮时,动态生成100个按钮,并开始计时,如果用户单击的数字小于随机数,那么被单击的按钮变为红色,并显示字符串“小”;...
这是一个用C#开发guess number game的控制台程序。具有强大的提示功能,不过命令有些复杂。
Number guessing Game
用codeblock编写的一个简单的猜数字大小的小游戏
An implementation of the guess my number game. Using classes.
青叶机器人 介绍 用语言编写的Telegram Bot。 使用作为机器人基础库。 我做了一个包装程序,以轻松,快速地开发功能。... /guess_number_game : /guess_number_game /bomb_game : /bomb_game炸弹(贴纸)
JavaScript
Guess-the-number-game:猜数字游戏
ut-workshop workshop内容: 用TDD(Test Driven Development)开发一个简单的猜数字游戏: 游戏开始后,系统会随机给出四个不重复的数字。...GuessNumber Guess Number Game 总览 用TDD(Test Driven Development)
这是一个猜数游戏,1.2.0版本 部分代码: #include #define random(x) rand()%(x) #define Sleep(x) for(long long i=1;i*1e5;i++){} using namespace std; int num,counter,fw;...void work_()
This game is about guessing a number(0~999).Can you guess it?I think you can't.If you think you can,please try it. 请按任意键继续. . . Round1:please guess a number:500 Too big! Round2:please guess a ...
Guess-the-Number-Game
要遵循的顺序 ... guess_the_number 更高_更低_游戏 coffee_machine.py coffee_maker_usingClass quiz_game->创建自己的课程 strings.py hirst_painting turtle_race.py sets.py Numpylib.py panda
一个猜数字游戏代码,利用逻辑表达式的case构造。
guess-number-game:用来了解有关React Testing Library的更多信息的小型应用程序