1. Set up a pulser circuit. Easiest to do this in time domain.
2. Measure the core dimensions: OD, ID and height.
l_e = (OD + ID) / 2
Ae = (OD - ID) * H / 2
(Actually a little bit less because of geometry, and rounded corners and coating thickness if any. Adjust if you like.)
3a. Estimate flux based on known properties. Ferrites saturate at 0.2 to 0.45T. Flux is:
Phi = Bmax * Ae
Flux is in units of Vs/t, so multiply by number of turns to get the in-circuit value, the flux on the total winding.
3b. Measure it with a pulser.
Make a basic flyback circuit: transistor pulling to GND, inductor from +V to drain, diode from drain to output cap, load resistor from cap to +V. Drive transistor with a func gen, square wave, +10V/0V levels (verify with scope, don't trust the generator's dials!), low duty cycle (5-10%?), variable frequency.
Ensure the supply is well bypassed (a few 1000s uF local to the circuit). Add a series current sense resistor with the inductor or transistor source. Typical value say 0.1 ohm, and an IRFZ46N or the like for the transistor.
We use a square wave because, for a constant voltage, flux increases linearly with time. So we read off time on the oscilloscope as flux.
Watching the current waveform, we expect it to rise linearly with time (current proportional to flux, i.e., constant inductance), until saturation occurs, at which point current shoots up rapidly. This is why we use a variable frequency, and start on the high side and adjust downwards until saturation is observed.
One catch: note that a flyback circuit is unipolar. It doesn't apply reverse flux to the inductor. Ferrites tend to have some remenance, meaning the core remains somewhat magnetized between pulses. This reduces your measurement somewhat. If you were going to use them for half-wave applications anyway (flyback or 1 or 2 switch forward converter), that's actually more accurate, but a full-wave application (inverter, forward converter), you'll get somewhat more than twice the measured flux. This is particularly exaggerated in magamp cores, which you will find have very little flux relative to their size. Use this to identify them, and test them with another method (a half bridge inverter, maybe).
Now we can determine A_L, mu and Bmax.
L = V * dt / dI = A_L * N^2
A_L = mu * Ae / l_e
(Note that mu = mu_r * mu_0 by convention, where mu_0 ~= 1.257 uH/m, or nH/mm if you prefer.)
If you find mu is anomalously low, and Bmax seems to be awfully high (or it's not saturating at all because DC resistance is dominating -- in which case, use more turns and heavier wire, and try again?), it's probably a powdered iron, not ferrite. Powder is used for inductors (energy storage), ferrite for transformers (power transfer).
4. Loss: harder to measure, you'll probably not get a reasonable figure with this setup (unless it's a shitty #26 powdered iron, in which case the turn-on step might be enough to read as parallel resistance, YMMV). Instead, set up a resonant circuit with sine wave excitation, and use this method to find it:
https://www.seventransistorlabs.com/Calc/RLC.html#frqLosses generally depend somewhat on level, so keep that in mind. You may not be able to drive more than a few volts with a function generator, so a real at-power test has to be done with an inverter.
Also, if it's a powder core, you may be able to identify it by color. If it can be positively identified, the datasheet will give useful info. They don't usually give Q unfortunately, but it can be derived from the material curves (loss at frequency). Here are some examples:
https://www.seventransistorlabs.com/Images/Powder_Core_Q.pngTim