I'm trying to understand one in terms of how it compares to the other.
Is white box testing where you can see the code and black box testing where you don't look at the code?
Yeah, you pretty much have it. Black box is testing the externals without knowledge (or access) of/to anything internal. White box testing is being able to look at (and perhaps modify) the internal state of what you are testing. They both have different uses. Unit tests are most often (but not always) white box tests.
Wikipedia:
White box testing uses an internal perspective of the system to design test cases based on internal structure. It requires programming skills to identify all paths through the software.
versus
Black box testing takes an external perspective of the test object to derive test cases.
White box testing
Once the internal working of s/w is known, the test is performed to ensure that all the internal operations of s/w are performed according to specification.
Black box testing
Once the specified function for each s/w compnent have been designed, the test is performed to ensure that each function is performing.
Q) Is white box testing where you can see the code and black box testing where you don't look at the code?
It is a process of giving the input to the system and checking the output of the system, without bothering about the system that how the system generates the output. It is also call as behavior testing, data-driven testing or I/O driven testing, functional testing .
testing based solely on analysis of requirements (specification, user documentation etc)
Advantages:
1) More effective on larger units of code than glass-box testing.
2) Tester and Programmer are independent of each other.
3) Tests done according to users point of view.
4) test-cases can be designed as soon as specifications are complete.
Disadvantages:
1) It may leave many program path untested.
2) Only small number of possible inputs can actually be tested, to test every possible. input stream would take nearly forever.
It is a process of giving input to thee system and checking that how the system processes the input to generate the output.
It is mandatory for tester to have the knowledge of the code.
Advantage:
1) This type of testing helps to uncover defects at structural level. The tests go below the top and functional layer to uncover the defects
Disadvantages:
1) Does not ensure the user requirements are met
2) Does not establish if the decisions, condition ans paths.
White box testing is like a giving input and verifying output using (glass) transparent box i.e. in this you give the input observe the processing on input (functional flow, variables values, calculation) and verifies the output is as expected or not.
Black box testing is like giving input and verifying output using (wooden) non-transparent box i.e. in this you give the input don't observe the processing on input (functional flow, variables values, calculation) and verifies the output is as expected or not.
basicaly yes.
in black box testing you test if the expected input to your object produces expected output without the ability to change the underlying code.
in white box testing you can see the code and you test all possible paths through it.